Si no está familiarizado con Ansible, es un lenguaje de implementación en el que se pueden escribir libros de jugadas para enviar una serie de comandos a los sistemas e instruirlos sobre qué hacer. A diferencia de muchos otros sistemas de configuración, no necesita un agente en el sistema de destino. Esto hace que sea sencillo de utilizar y configurar.
En este post, vamos a explorar cómo crear un libro de jugadas de Ansible simple para instalar PowerShell 7 en múltiples sistemas.
Instalación de Ansible en Windows y Linux
Instalar Ansible en un sistema Linux es muy fácil. La mayoría de los sistemas de paquetes para distribuciones de Linux disponen esto incorporado. Un poco de las formas comunes de instalar Ansible son los siguientes:
A pesar de esto, Windows es un caso único, puesto que Ansible no está habilitada como paquete de Windows. La forma más sencilla de instalar Ansible para su uso en Windows es usar el Subsistema de Windows para Linux (WSL). Esta es una instancia virtualizada de Linux que se ejecuta en paralelo con Windows. Una vez instalado, puede utilizar los mismos comandos de instalación dentro de WSL para instalar Ansible.
Configurar Ansible
Hay algunos componentes clave para ansible que necesitamos para instalar PowerShell 7. En particular, necesitamos un archivo de hosts para establecer nuestras ubicaciones de destino. Hay muchas alternativas para configurar esto, pero por lo general, una estructura de carpetas como la que se muestra a continuación funciona bien.
Dentro de inventories
directorio, crearíamos un hosts
archivo que contiene todos los sistemas a los que queremos apuntar con nuestro libro de jugadas. Un archivo de hosts simple que crea un grupo de hosts bajo el production
etiqueta se describe a continuación. Los comentarios son útiles para indicarle cuál es el nombre de host real de los sistemas.
[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
Puede crear varios grupos de hosts y el mismo host puede existir en varios grupos. Esto hace que agrupar y “etiquetar” esos hosts sea más fácil para administrarlos más adelante para roles más complejos.
Creando nuestro Playbook
Ahora que tenemos nuestro archivo de hosts, podemos comenzar a construir nuestro libro de jugadas. Para hacer esto, primero creemos una nueva carpeta bajo el playbooks
carpeta para contener nuestro libro de jugadas. En esta circunstancia lo vamos a llamar deploy-powershell
. Debajo de esa carpeta, crearemos el siguiente archivo, main.yml
. los main.yml
file es nuestro punto de entrada principal para el libro de jugadas. No necesariamente tiene que ser nombrado main.yml
pero es una convención común.
---
- 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
Ampliación de nuestro libro de jugadas para otros anfitriones
En este momento, nuestro libro de jugadas solo maneja sistemas Ubuntu Linux. Para actualizar esto, podemos utilizar los condicionales de Ansible para hacer esto un poco más robusto. Ampliemos esto para que sea compatible con los sistemas Redhat Linux y Fedora.
Para permitir el soporte para otros sistemas de instalación de paquetes, usamos el when
cláusula condicional. Al leer el ansible_distribution
value, podemos decirle a Ansible que solo apunte a ciertas distribuciones para comandos específicos.
---
- 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'
Ejecutando nuestro libro de jugadas
Nuestro libro de jugadas está configurado, por lo tanto sigamos adelante e instalemos esto en los sistemas que queramos. Para hacer esto, ejecutaremos la próxima línea de comando.
ansible-playbook /path/to/main.yml -i /path/to/hosts
Mientras ejecutamos esto, obtendremos los resultados de cada paso para cada host contra el que se ejecuta el libro de jugadas y su tasa de éxito. Cada comando se ejecutará en cada sistema a medida que se ejecuta el libro de jugadas, esto significa que cada comando debe completarse antes de pasar al siguiente comando. Al mismo tiempo, el condicional when
se mostrará como un salto dentro de los resultados.
Conclusión
Ansible facilita la instalación de PowerShell en varios sistemas al mismo tiempo. Una vez que PowerShell 7 esté instalado en esos sistemas, puede seguir usando Ansible para después configurar el shell para el registro, el acceso remoto y otras capacidades para facilitar aún más la migración de Windows PowerShell o PowerShell Core al nuevo PowerShell 7 unificado.
Ansible en combinación con PowerShell le posibilita repartir PowerShell rápida y fácilmente a muchos sistemas diferentes en un método flexible y conveniente.