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.