Agence web » Actualités du digital » Comment installer et configurer PowerShell 7 à l'aide d'Ansible

Comment installer et configurer PowerShell 7 à l'aide d'Ansible

Si vous n'êtes pas familier avec Ansible, c'est un langage de déploiement qui permet d'écrire des playbooks pour envoyer une série de commandes aux systèmes et leur expliquer quoi faire. Contrairement à de nombreux autres systèmes de configuration, il ne nécessite pas d'agent sur le système cible. Cela le rend facile à utiliser et à configurer.

Dans cet article, nous allons explorer comment créer un playbook Ansible simple pour installer PowerShell 7 sur plusieurs systèmes.

Installation d'Ansible sur Windows et Linux

Pour installer Ansible sur un système Linux, c'est très simple. La plupart des systèmes de packages pour les distributions Linux ont ce intégré. Voici quelques-unes des façons courantes d'installer Ansible:

Windows est un cas unique, car Ansible n'est pas disponible en tant que package Windows. La façon la plus simple d'installer Ansible pour une utilisation sur Windows est d'utiliser le sous-système Windows pour Linux (WSL). Il s'agit d'une instance virtualisée de Linux qui s'exécute en parallèle avec Windows. Une fois celui-ci 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. Notamment, nous avons besoin d'un fichier hosts pour définir nos emplacements cibles. Il existe de nombreuses façons de configurer cela, mais généralement, une structure de dossiers telle que ci-dessous fonctionne bien.

Dans le inventories répertoire, nous créerions un hosts fichier qui contient tous les systèmes que nous voulons cibler avec notre playbook. Un fichier d'hôtes simple qui crée un groupe d'hôtes sous le production est décrite ci-dessous. Les commentaires sont utiles pour vous indiquer 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 facilite le regroupement et le «balisage» de ces hôtes pour les gérer plus tard 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 ce faire, créons d'abord un nouveau dossier sous le playbooks dossier pour contenir notre playbook. Dans ce cas, nous allons l'appeler deploy-powershell. Sous ce dossier, nous allons créer le fichier suivant, main.yml. le main.yml fichier est notre principal point d'entrée pour le playbook. Il 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:
	    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

Extension de notre Playbook pour d'autres hôtes

Pour le moment, notre playbook ne gère que les systèmes Ubuntu Linux. Pour mettre à jour cela, nous pouvons utiliser les conditions Ansible pour le rendre un peu plus robuste. Développons ceci pour prendre en charge 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. En lisant le ansible_distribution , nous pouvons dire à Ansible de ne cibler que 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:
	    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écuter notre Playbook

Notre playbook est configuré, alors allons-y et installons-le sur les systèmes que nous voulons. Pour ce faire, nous allons exécuter la ligne de commande suivante.

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

En exécutant cela, nous obtiendrons les résultats de chaque étape pour chaque hôte sur lequel le playbook est exécuté et leur taux de réussite. Chaque commande s'exécutera sur chaque système au fur et à mesure que le playbook s'exécute, cela signifie que chaque commande doit être terminée avant de passer à la commande suivante. De plus, le conditionnel when apparaîtra comme un saut dans les résultats.

Conclusion

Ansible facilite l'installation de PowerShell sur plusieurs systèmes à la fois. Une fois PowerShell 7 installé sur ces systèmes, vous pouvez continuer à utiliser Ansible pour configurer ensuite le shell pour la journalisation, l'accès à distance et d'autres capacités afin de faciliter encore 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 d'une manière flexible et pratique.