PowerShell 7: Comment installer et configurer à l’aide d’Ansible

PowerShell 7 est un shell et un langage de programmation polyvalents. Maintenant qu’il est multiplateforme, la plupart des administrateurs système ont besoin d’un moyen de déployer automatiquement le langage sur plusieurs systèmes. À cette fin, Ansible est un système parfait pour créer des playbooks faciles à utiliser pour déployer PowerShell 7 sur autant de systèmes que nécessaire.

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:

  • sudo apt install ansible
  • sudo yum install ansible
  • sudo dnf install 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.

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

  • inventories
  • playbooks
  • vars

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éer votre 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 votre playbook. Dans ce cas, nous allons l’appeler deploy-powershell. Sous ce dossier, nous allons créer ce qui suit, main.yml. La main.yml fichier est notre principal point d’entrée pour le playbook. Il ne doit pas nécessairement être nommé main.yml but 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.

Leave a Reply