Se non conosci Ansible, è un linguaggio di implementazione in cui puoi scrivere playbook per inviare una serie di comandi ai sistemi e istruirli su cosa fare. A differenza di molti altri sistemi di configurazione, non hai bisogno di un agente sul sistema di destinazione. Questo lo rende facile da usare e configurare.
In questo post, esploriamo come creare un semplice playbook Ansible per installare PowerShell 7 su più sistemi.
Installazione di Ansible su Windows e Linux
Installare Ansible su un sistema Linux è molto semplice. La maggior parte dei sistemi di pacchetti per le distribuzioni Linux ha questo integrato. Un po 'di modi comuni per installare Ansible sono i seguenti:
Nonostante questo, Windows è un caso unico, poiché Ansible non è abilitato come pacchetto Windows. Il modo più semplice per installare Ansible per l'uso su Windows è utilizzare il sottosistema Windows per Linux (WSL). Questa è un'istanza virtualizzata di Linux in esecuzione in parallelo con Windows. Una volta installato, puoi utilizzare gli stessi comandi di installazione all'interno di WSL per installare Ansible.
Configuratore Ansible
Ci sono alcuni componenti chiave per ansible di cui abbiamo bisogno per installare PowerShell 7. In particolare, abbiamo bisogno di un file hosts per impostare le nostre posizioni di destinazione. Ci sono molte alternative per configurarlo, ma di solito, una struttura di cartelle come quella mostrata di seguito funziona bene.
Entro inventories
directory, creeremmo un hosts
file contenente tutti i sistemi che vogliamo prendere di mira con il nostro playbook. Un semplice file hosts che crea un gruppo di host sotto il production
etichetta descritta di seguito. I commenti sono utili per dirti qual è l'effettivo nome host dei sistemi.
[production]
#test-system-01
100.100.10.10
#test-system-02
100.100.10.11
#test-system-03
100.100.10.12
#test-system-04
100.100.10.13
Puoi creare più gruppi di host e lo stesso host può esistere in più gruppi. Ciò rende il raggruppamento e il "tagging" di tali host più facili da gestire in un secondo momento per ruoli più complessi..
Creare il nostro Playbook
Ora che abbiamo il nostro file hosts, possiamo iniziare a costruire il nostro playbook. Per fare questo, creiamo prima una nuova cartella sotto il playbooks
cartella per contenere il nostro playbook. In questa circostanza la chiameremo deploy-powershell
. Sotto quella cartella, creeremo il seguente file, main.yml
. il main.yml
file è il nostro punto di ingresso principale per il playbook. Non deve necessariamente essere nominato main.yml
ma è una convenzione comune.
---
- name: Install PowerShell 7
hosts: all
tasks:
- name: Download and Add Powershell Key to Apt-Get Keyring
apt_key:
dirección url: "https://packages.microsoft.com/keys/microsoft.asc"
state: present
- name: Add Powershell Repository into /etc/apt/sources.list - Bionic
apt_repository:
repo: 'deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main'
state: present
- name: Install Powershell
apt:
pkg: powershell
state: latest
force: yes
Espansione del nostro playbook per altri host
A quest'ora, il nostro playbook gestisce solo i sistemi Ubuntu Linux. Per aggiornare questo, possiamo usare i condizionali Ansible per renderlo un po' più robusto. Estendiamo questo per essere compatibile con i sistemi Redhat Linux e Fedora.
Per consentire il supporto per altri sistemi di installazione dei pacchetti, noi usiamo il when
clausola condizionale. Quando si legge il ansible_distribution
valore, possiamo dire ad Ansible di indirizzare solo determinate distribuzioni per comandi specifici.
---
- name: Install PowerShell 7
hosts: all
tasks:
- name: Download and Add Powershell Key to Apt-Get Keyring
apt_key:
dirección url: "https://packages.microsoft.com/keys/microsoft.asc"
state: present
- name: Add Powershell Repository into /etc/apt/sources.list - Ubuntu
apt_repository:
repo: 'deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main'
state: present
when: ansible_distribution == 'Ubuntu'
- name: Add repository - Fedora
yum_repository:
name: microsoft
description: Microsoft Repository
baseurl: "https://packages.microsoft.com/config/rhel/7/prod.repo"
when: ansible_distribution == 'Fedora'
- name: Add repository - RedHat
yum_repository:
name: microsoft
description: Microsoft Repository
baseurl: "https://packages.microsoft.com/config/rhel/7/prod.repo"
when: ansible_distribution == 'RedHat'
- name: Install Powershell Package
apt:
pkg: powershell
state: latest
force: yes
when: ansible_distribution == 'Ubuntu'
- name: Install the PowerShell Package
yum:
name: powershell
state: latest
when: ansible_distribution == 'RedHat'
- name: Install the PowerShell Package
dnf:
name: powershell
state: latest
when: ansible_distribution == 'Fedora'
Esecuzione del nostro playbook
Il nostro playbook è pronto, quindi andiamo avanti e installiamolo sui sistemi che vogliamo. Per fare questo, eseguiremo la prossima riga di comando.
ansible-playbook /path/to/main.yml -i /path/to/hosts
Mentre eseguiamo questo, otterremo i risultati di ogni passaggio per ogni host su cui è in esecuzione il playbook e il suo tasso di successo. Ogni comando verrà eseguito su ogni sistema durante l'esecuzione del playbook, questo significa che ogni comando deve essere completato prima di passare al comando successivo. Allo stesso tempo, il condizionale when
mostrerà come un salto all'interno dei risultati.
conclusione
Ansible semplifica l'installazione di PowerShell su più sistemi contemporaneamente. Una volta PowerShell 7 è installato su quei sistemi, puoi continuare a utilizzare Ansible e quindi configurare la shell per la registrazione, accesso remoto e altre funzionalità per rendere ancora più semplice la migrazione da Windows PowerShell o PowerShell Core al nuovo PowerShell 7 unificato.
Ansible in combinazione con PowerShell consente di distribuire rapidamente e facilmente PowerShell a molti sistemi diversi in un metodo flessibile e conveniente.