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.