Wenn Sie mit Ansible nicht vertraut sind, ist eine Implementierungssprache, in der Sie Playbooks schreiben können, um eine Reihe von Befehlen an Systeme zu senden und sie anzuweisen, was zu tun ist. Im Gegensatz zu vielen anderen Konfigurationssystemen, Sie brauchen keinen Agenten auf dem Zielsystem. Dies macht es einfach zu bedienen und zu konfigurieren.
In diesem Beitrag, Lassen Sie uns untersuchen, wie Sie ein einfaches Ansible-Playbook erstellen, um PowerShell zu installieren 7 auf mehreren Systemen.
Ansible unter Windows und Linux installieren
Die Installation von Ansible auf einem Linux-System ist sehr einfach. Die meisten Paketsysteme für Linux-Distributionen haben dies eingebaut. Ein bisschen von gängige Möglichkeiten zur Installation Ansible sind wie folgt:
Trotz dieses, Windows ist ein einzigartiger Fall, da Ansible nicht als Windows-Paket aktiviert ist. Der einfachste Weg, Ansible für die Verwendung unter Windows zu installieren, ist die Verwendung des Windows-Subsystems für Linux (WSL). Dies ist eine virtualisierte Instanz von Linux, die parallel zu Windows läuft. Einmal installiert, Sie können die gleichen Installationsbefehle innerhalb von WSL verwenden, um Ansible zu installieren.
Ansible konfigurieren
Es gibt einige Schlüsselkomponenten für ansible, die wir benötigen, um PowerShell zu installieren 7. Bestimmtes, wir brauchen eine hosts-Datei, um unsere Zielorte festzulegen. Es gibt viele Alternativen, dies zu konfigurieren, aber normalerweise, eine Ordnerstruktur wie die unten gezeigte funktioniert einwandfrei.
Innerhalb inventories
Verzeichnis, wir würden ein erstellen hosts
Datei mit allen Systemen, die wir mit unserem Playbook ansprechen möchten. Eine einfache Hosts-Datei, die eine Gruppe von Hosts unter dem . erstellt production
unten beschriebenes Etikett. Kommentare sind nützlich, um Ihnen den tatsächlichen Hostnamen des Systems mitzuteilen.
[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
Sie können mehrere Hostgruppen erstellen und derselbe Host kann in mehreren Gruppen vorhanden sein. Dies macht das Gruppieren und „Taggen“ dieser Hosts später für komplexere Rollen einfacher zu verwalten..
Erstellen unseres Playbooks
Jetzt haben wir unsere Hosts-Datei, wir können mit dem Bau unseres Playbooks beginnen. Um dies zu tun, erstellen wir zuerst einen neuen Ordner unter dem playbooks
Ordner für unser Playbook. In diesem Fall werden wir es nennen deploy-powershell
. Unter diesem Ordner, Wir werden die folgende Datei erstellen, main.yml
. das main.yml
Datei ist unser Haupteinstiegspunkt für das Playbook. Muss nicht unbedingt benannt werden main.yml
aber es ist eine übliche Konvention.
---
- 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
Erweiterung unseres Playbooks für andere Hosts
Zu diesem Zeitpunkt, unser Playbook verarbeitet nur Ubuntu Linux-Systeme. Um dies zu aktualisieren, Wir können Ansible-Bedingungen verwenden, um dies etwas robuster zu machen. Lassen Sie uns dies erweitern, um mit Redhat Linux- und Fedora-Systemen kompatibel zu sein.
Um Unterstützung für andere Paketinstallationssysteme zu ermöglichen, wir nehmen das when
Konditionalsatz. Beim Lesen der ansible_distribution
Wert, Wir können Ansible anweisen, nur bestimmte Distributionen für bestimmte Befehle anzusprechen.
---
- 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'
Ausführen unseres Playbooks
Unser Playbook ist fertig, Also lass uns loslegen und dies auf den Systemen installieren, die wir wollen. Um dies zu tun, wir werden die nächste Befehlszeile ausführen.
ansible-playbook /path/to/main.yml -i /path/to/hosts
Während wir das laufen, Wir erhalten die Ergebnisse jedes Schritts für jeden Host, gegen den das Playbook ausgeführt wird, und seine Erfolgsrate. Jeder Befehl wird auf jedem System ausgeführt, während das Playbook ausgeführt wird, Dies bedeutet, dass jeder Befehl abgeschlossen sein muss, bevor zum nächsten Befehl übergegangen wird. Zur selben Zeit, das bedingte when
wird als Sprung innerhalb der Ergebnisse angezeigt.
Fazit
Ansible macht es einfach, PowerShell auf mehreren Systemen gleichzeitig zu installieren. Einmal PowerShell 7 ist auf diesen Systemen installiert, Sie können Ansible weiterhin verwenden und dann die Shell für die Registrierung konfigurieren, Remotezugriff und andere Funktionen, um die Migration von Windows PowerShell oder PowerShell Core auf die neue PowerShell noch einfacher zu machen 7 einheitlich.
Ansible in Kombination mit PowerShell ermöglicht es Ihnen, PowerShell schnell und einfach auf viele verschiedene Systeme auf flexible und bequeme Weise zu verteilen.