PowerShell 7 installeren en configureren met Ansible

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.

0 Shares:
You May Also Like