Als je niet bekend bent met Ansible, het is een gedistribueerde taal waarmee je gamebooks kunt schrijven om een reeks opdrachten naar systemen te sturen en ze te instrueren wat ze moeten doen. In tegenstelling tot veel andere configuratiesystemen is er geen agent op het doelsysteem nodig. Dit maakt het gemakkelijk te gebruiken en te configureren.
In dit artikel onderzoeken we hoe u een eenvoudig Ansible-gameboek kunt maken voor het installeren van PowerShell 7 op meerdere systemen.
Installeer Ansible op Windows en Linux
Het is heel eenvoudig om Ansible op een Linux-systeem te installeren. De meeste Linux-distributiesysteempakketten hebben dit ingebouwd. Hier zijn enkele veelvoorkomende manieren om Ansible te installeren:
Windows is een uniek geval omdat Ansible niet beschikbaar is als Windows-pakket. De eenvoudigste manier om Ansible voor gebruik op Windows te installeren, is door Windows Subsystem for Linux (WSL) te gebruiken. Het is een gevirtualiseerd exemplaar van Linux dat parallel loopt met Windows. Na installatie kun je dezelfde installatiecommando’s in WSL gebruiken om Ansible te installeren.
Ansible configureren
Er zijn enkele belangrijke componenten die we nodig hebben om PowerShell 7 te installeren. We hebben met name een hosts-bestand nodig om onze doellocaties te definiëren. Er zijn veel manieren om dit te configureren, maar over het algemeen werkt een mappenstructuur zoals hieronder goed.
in de inventarissenmap zouden we een hosts-bestand maken dat alle systemen bevat die we met ons playbook willen targeten. Hieronder wordt een eenvoudig hostbestand beschreven dat tijdens de productie een hostgroep aanmaakt. Opmerkingen zijn handig om de werkelijke hostnaam van het systeem te vertellen.
(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
U kunt meerdere hostgroepen maken en dezelfde host kan in meerdere groepen zitten. Dit maakt het gemakkelijker om deze hosts te groeperen en te “taggen” om ze later af te handelen voor complexere rollen.
De creatie van ons Playbook
Nu we ons hosts-bestand hebben, kunnen we beginnen met het bouwen van ons playbook. Om dit te doen, maakt u eerst een nieuwe map onder de map playbooks om ons playbook te bevatten. In dit geval noemen we het deploy-powershell. Onder deze map maken we het volgende bestand, main.yml. het main.yml-bestand is ons primaire playbook-toegangspunt. Het hoeft niet per se main.yml te heten, maar het is een gebruikelijke conventie.
--- - name: Install PowerShell 7 hosts: all tasks: - name: Download and Add Powershell Key to Apt-Get Keyring apt_key: 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
Uitbreiding van ons Playbook voor andere gasten
Momenteel ondersteunt ons playbook alleen Ubuntu Linux-systemen. Om dit bij te werken, kunnen we Ansible-termen gebruiken om het iets robuuster te maken. Laten we dit uitbreiden om Redhat Linux- en Fedora-systemen te ondersteunen.
Om ondersteuning voor andere pakketinstallatiesystemen te activeren, gebruiken we de voorwaardelijke clausule when. Door ansible_distribution te lezen, kunnen we Ansible vertellen om alleen bepaalde distributies voor specifieke bestellingen te targeten.
--- - name: Install PowerShell 7 hosts: all tasks: - name: Download and Add Powershell Key to Apt-Get Keyring apt_key: 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'
Voer ons Playbook uit
Ons playbook is geconfigureerd, dus laten we doorgaan en het installeren op de systemen die we willen. Om dit te doen, voeren we de volgende opdrachtregel uit.
ansible-playbook /path/to/main.yml -i /path/to/hosts
Door dit te doen, krijgen we de resultaten van elke stap voor elke host waarop het gamebook wordt uitgevoerd en hun succes. Elke opdracht wordt uitgevoerd op elk systeem terwijl het gamebook actief is, wat betekent dat elke opdracht moet worden voltooid voordat je door kunt gaan met de volgende opdracht. Ook voorwaardelijk wanneer wordt weergegeven als een sprong in de resultaten.
Conclusie
Ansible maakt het eenvoudig om PowerShell op meerdere systemen tegelijk te installeren. Zodra PowerShell 7 op deze systemen is geïnstalleerd, kunt u Ansible blijven gebruiken om vervolgens de shell te configureren voor logboekregistratie, externe toegang en andere functies om de migratie van Windows PowerShell of PowerShell Core naar het nieuwe PowerShell.7 unified verder te vergemakkelijken.
Ansible in combinatie met PowerShell stelt u in staat om PowerShell op een flexibele en gemakkelijke manier snel en eenvoudig te distribueren naar veel verschillende systemen.