Comment installer et configurer PowerShell 7 en utilisant Ansible

Contenu

Si vous ne connaissez pas Ansible, est un langage d'implémentation dans lequel vous pouvez écrire des playbooks pour envoyer une série de commandes aux systèmes et leur indiquer quoi faire. Contrairement à de nombreux autres systèmes de configuration, vous n'avez pas besoin d'un agent sur le système cible. Cela le rend facile à utiliser et à configurer.

Dans ce billet, explorons comment créer un playbook Ansible simple pour installer PowerShell 7 sur plusieurs systèmes.

Installer Ansible sur Windows et Linux

L'installation d'Ansible sur un système Linux est très simple. La plupart des systèmes de paquets pour les distributions Linux ont cela intégré. Un peu de méthodes courantes d'installation Ansible sont les suivants:

Malgré cela, Windows est un cas unique, car Ansible n'est pas activé en tant que package Windows. Le moyen le plus simple d'installer Ansible pour une utilisation sur Windows consiste à utiliser le sous-système Windows pour Linux (WSL). Il s'agit d'une instance virtualisée de Linux fonctionnant en parallèle avec Windows. Une fois installé, vous pouvez utiliser les mêmes commandes d'installation dans WSL pour installer Ansible.

Configurer Ansible

Il y a quelques composants clés pour ansible dont nous avons besoin pour installer PowerShell 7. En particulier, nous avons besoin d'un fichier hosts pour définir nos emplacements de destination. Il existe de nombreuses alternatives pour configurer cela, mais habituellement, une structure de dossiers comme celle illustrée ci-dessous fonctionne bien.

Dans inventories annuaire, nous créerions un hosts fichier contenant tous les systèmes que nous voulons cibler avec notre playbook. Un simple fichier hosts qui crée un groupe d'hôtes sous le production étiquette décrite ci-dessous. Les commentaires sont utiles pour vous dire quel est le nom d'hôte réel des systèmes.

[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

Vous pouvez créer plusieurs groupes d'hôtes et le même hôte peut exister dans plusieurs groupes. Cela rend le regroupement et le « marquage » de ces hôtes plus faciles à gérer ultérieurement pour des rôles plus complexes..

Création de notre Playbook

Maintenant que nous avons notre fichier hosts, nous pouvons commencer à construire notre playbook. Pour faire ceci, créons d'abord un nouveau dossier sous le playbooks dossier pour contenir notre playbook. Dans cette circonstance, nous allons l'appeler deploy-powershell. Sous ce dossier, nous allons créer le fichier suivant, main.yml. Les main.yml est notre principal point d'entrée pour le playbook. Ne doit pas nécessairement être nommé main.yml mais c'est une convention commune.

---
- 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

Étendre notre playbook pour d'autres hôtes

En ce moment, notre playbook ne gère que les systèmes Ubuntu Linux. Pour mettre à jour ce, nous pouvons utiliser les conditions Ansible pour rendre cela un peu plus robuste. Étendons cela pour qu'il soit compatible avec les systèmes Redhat Linux et Fedora.

Pour permettre la prise en charge d'autres systèmes d'installation de packages, nous utilisons le when clause conditionnelle. Lors de la lecture du ansible_distribution valeur, nous pouvons dire à Ansible de cibler uniquement certaines distributions pour des commandes spécifiques.

---
- 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'

Exécution de notre playbook

Notre livre de jeu est prêt, alors allons-y et installons ceci sur les systèmes que nous voulons. Pour faire ceci, nous allons exécuter la prochaine ligne de commande.

ansible-playbook /path/to/main.yml -i /path/to/hosts

Pendant que nous courons ce, nous obtiendrons les résultats de chaque étape pour chaque hôte contre lequel le playbook est exécuté et son taux de réussite. Chaque commande s'exécutera sur chaque système pendant l'exécution du playbook, cela signifie que chaque commande doit être terminée avant de passer à la commande suivante. En même temps, le conditionnel when apparaîtra comme un saut dans les résultats.

conclusion

Ansible facilite l'installation de PowerShell sur plusieurs systèmes en même temps. Une fois PowerShell 7 est installé sur ces systèmes, vous pouvez continuer à utiliser Ansible, puis configurer le shell pour l'enregistrement, accès à distance et autres fonctionnalités pour faciliter encore plus la migration de Windows PowerShell ou PowerShell Core vers le nouveau PowerShell 7 unifié.

Ansible en combinaison avec PowerShell vous permet de distribuer rapidement et facilement PowerShell à de nombreux systèmes différents de manière flexible et pratique.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.