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