Cómo instalar y configurar PowerShell 7 usando Ansible

Contenidos

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.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.