Como instalar e configurar o PowerShell 7 usando Ansible

Conteúdo

Se você não está familiarizado com o Ansible, é uma linguagem de implementação na qual você pode escrever manuais para enviar uma série de comandos aos sistemas e instruí-los sobre o que fazer. Ao contrário de muitos outros sistemas de configuração, você não precisa de um agente no sistema de destino. Isso o torna fácil de usar e configurar.

Neste post, vamos explorar como criar um manual simples do Ansible para instalar o PowerShell 7 em vários sistemas.

Instalando o Ansible no Windows e Linux

Instalar o Ansible em um sistema Linux é muito fácil. A maioria dos sistemas de pacotes para distribuições Linux tem este embutido. Alguns formas comuns de instalar Ansible são os seguintes:

Apesar disto, O Windows é um caso único, uma vez que o Ansible não está habilitado como um pacote do Windows. A maneira mais fácil de instalar o Ansible para uso no Windows é usar o subsistema Windows para Linux (WSL). Esta é uma instância virtualizada do Linux rodando em paralelo com o Windows. Uma vez instalado, você pode usar os mesmos comandos de instalação dentro do WSL para instalar o Ansible.

Configurar Ansible

Existem alguns componentes principais para ansible que precisamos para instalar o PowerShell 7. Em particular, precisamos de um arquivo hosts para definir nossos locais de destino. Existem muitas alternativas para configurar este, mas usualmente, uma estrutura de pastas como a mostrada abaixo funciona bem.

Dentro de inventories diretório, nós criaríamos um hosts arquivo contendo todos os sistemas que queremos atingir com nosso manual. Um arquivo de hosts simples que cria um grupo de hosts sob o production etiqueta descrita abaixo. Os comentários são úteis para lhe dizer qual é o nome de host real dos 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

Você pode criar vários grupos de hosts e o mesmo host pode existir em vários grupos. Isso torna o agrupamento e a “marcação” desses hosts mais fáceis de gerenciar posteriormente para funções mais complexas..

Criando nosso manual

Agora que temos nosso arquivo de hosts, podemos começar a construir nosso manual. Para fazer isso, vamos primeiro criar uma nova pasta sob o playbooks pasta para conter nosso manual. Nesta circunstância, vamos chamá-lo deploy-powershell. Sob aquela pasta, vamos criar o seguinte arquivo, main.yml. a main.yml arquivo é o nosso principal ponto de entrada para o manual. Não precisa necessariamente ser nomeado main.yml mas é uma convenção comum.

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

Expandindo nosso manual para outros anfitriões

Neste momento, nosso manual lida apenas com sistemas Ubuntu Linux. Para atualizar este, podemos usar condicionais Ansible para tornar isso um pouco mais robusto. Vamos estender isso para ser compatível com os sistemas Redhat Linux e Fedora.

Para permitir suporte para outros sistemas de instalação de pacotes, nós usamos o when Cláusula condicional. Ao ler o ansible_distribution valor, podemos dizer ao Ansible para direcionar apenas certas distribuições 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'

Executando nosso manual

Nosso manual está definido, então vamos instalá-lo nos sistemas que queremos. Para fazer isso, vamos executar a próxima linha de comando.

ansible-playbook /path/to/main.yml -i /path/to/hosts

Enquanto executamos este, obteremos os resultados de cada etapa para cada host contra o qual o manual está sendo executado e sua taxa de sucesso. Cada comando será executado em cada sistema enquanto o manual é executado, isso significa que cada comando deve ser concluído antes de passar para o próximo comando. Ao mesmo tempo, o condicional when aparecerá como um salto nos resultados.

conclusão

O Ansible facilita a instalação do PowerShell em vários sistemas ao mesmo tempo. Uma vez PowerShell 7 está instalado nesses sistemas, você pode continuar a usar o Ansible e então configurar o shell para registro, acesso remoto e outros recursos para tornar ainda mais fácil migrar do Windows PowerShell ou PowerShell Core para o novo PowerShell 7 unificado.

O Ansible em combinação com o PowerShell permite que você distribua o PowerShell de forma rápida e fácil para muitos sistemas diferentes em um método flexível e conveniente.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.