Introdução: Configurar o Ansible em uma VM do Azure

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

Este artigo mostra como instalar o Ansible em uma VM do Centos no Azure.

Neste artigo, vai aprender a:

  • Criar um grupo de recursos
  • Criar uma máquina virtual CentOS
  • Instalar o Ansible na máquina virtual
  • Conectar-se à máquina virtual via SSH
  • Configurar o Ansible na máquina virtual

Pré-requisitos

  • Subscrição do Azure: se não tem uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Entidade de serviço do Azure: crie uma entidade de serviço, anotando os seguintes valores: appId, displayName, senha e locatário.

Criar uma máquina virtual

  1. Criar um grupo de recursos do Azure.

    az group create --name QuickstartAnsible-rg --location eastus
    

    Talvez seja necessário substituir o --location parâmetro pelo valor apropriado para seu ambiente.

  2. Crie a máquina virtual do Azure para o Ansible.

    az vm create \
    --resource-group QuickstartAnsible-rg \
    --name QuickstartAnsible-vm \
    --image CentOS85Gen2 \
    --admin-username azureuser \
    --admin-password <password>
    

    Substitua a <password> sua palavra-passe.

  3. Obtenha o endereço IP público da máquina virtual do Azure.

    az vm show -d -g QuickstartAnsible-rg -n QuickstartAnsible-vm --query publicIps -o tsv
    

Conecte-se à sua máquina virtual via SSH

Usando o comando SSH, conecte-se ao endereço IP público da máquina virtual.

ssh azureuser@<vm_ip_address>

Substitua o <vm_ip_address> pelo valor apropriado retornado nos comandos anteriores.

Instalar o Ansible na máquina virtual

Ansible 2.9 com o módulo azure_rm

Execute os seguintes comandos para configurar o Ansible 2.9 no Centos:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

# Install Ansible.
pip3 install "ansible==2.9.17"

# Install Ansible azure_rm module for interacting with Azure.
pip3 install ansible[azure]

Ansible 2.10 com azure.azcollection

Execute os seguintes comandos para configurar o Ansible no Centos:

#!/bin/bash

# Update all packages that have available updates.
sudo yum update -y

# Install Python 3 and pip.
sudo yum install -y python3-pip

# Upgrade pip3.
sudo pip3 install --upgrade pip

# Install Ansible az collection for interacting with Azure.
ansible-galaxy collection install azure.azcollection

# Install Ansible modules for Azure
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements-azure.txt

Pontos principais:

  • O nó de controle Ansible requer Python 2 (versão 2.7) ou Python 3 (versões 3.5 e superiores) instalado. O Ansible 4.0.0 e o ansible-core 2.11 têm uma dependência suave do Python 3.8, mas funcionam com versões inferiores. No entanto, o Ansible 5.0.0 e o ansible-core 2.12 exigirão 3.8 e mais recentes.

Criar credenciais do Azure

Para configurar as credenciais do Ansible, você precisa das seguintes informações:

  • Sua ID de assinatura do Azure e ID de locatário
  • O ID e o segredo do aplicativo principal de serviço

Configure as credenciais do Ansible usando uma das seguintes técnicas:

Opção 1: Criar arquivo de credenciais do Ansible

Nesta seção, você cria um arquivo de credenciais local para fornecer credenciais ao Ansible. Por motivos de segurança, os arquivos de credenciais só devem ser usados em ambientes de desenvolvimento.

Para obter mais informações sobre como definir credenciais do Ansible, consulte Fornecendo credenciais para módulos do Azure.

  1. Depois de se conectar com êxito à máquina virtual do host, crie e abra um arquivo chamado credentials:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. Insira as seguintes linhas no ficheiro. Substitua os espaços reservados pelos valores da entidade de serviço.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Guarde e feche o ficheiro.

Opção 2: Definir variáveis de ambiente do Ansible

Na máquina virtual do host, exporte os valores da entidade de serviço para configurar suas credenciais do Ansible.

export AZURE_SUBSCRIPTION_ID=<subscription_id>
export AZURE_CLIENT_ID=<service_principal_app_id>
export AZURE_SECRET=<service_principal_password>
export AZURE_TENANT=<service_principal_tenant_id>

Testar a instalação do Ansible

Agora você tem uma máquina virtual com o Ansible instalado e configurado!

Esta seção mostra como criar um grupo de recursos de teste em sua nova configuração do Ansible. Se não precisar de o fazer, pode ignorar esta secção.

Opção 1: Usar um comando ansible ad-hoc

Execute o seguinte comando ad-hoc do Ansible para criar um grupo de recursos:

#Ansible 2.9 with azure_rm module
ansible localhost -m azure_rm_resourcegroup -a "name=ansible-test location=eastus"

#Ansible 2.10 with azure.azcollection
ansible localhost -m azure.azcollection.azure_rm_resourcegroup -a "name=<resource_group_name> location=<location>"

Substitua <resource_group_name> e <location> pelos seus valores.

Opção 2: Escrever e executar um playbook do Ansible

  1. Salve o código a seguir como create_rg.yml.

    Ansible 2.9 com módulo azure_rm

    ---
    - hosts: localhost
      connection: local
      tasks:
        - name: Creating resource group
          azure_rm_resourcegroup:
            name: "<resource_group_name"
            location: "<location>"
    

    Ansible 2.10 com azure.azcollection

    - hosts: localhost
      connection: local
      collections:
        - azure.azcollection
      tasks:
        - name: Creating resource group
          azure_rm_resourcegroup:
            name: "<resource_group_name"
            location: "<location>"
    

    Substitua <resource_group_name> e <location> pelos seus valores.

  2. Execute o playbook usando ansible-playbook.

    ansible-playbook create_rg.yml
    

Leia mais sobre azure.azcollection.

Clean up resources (Limpar recursos)

  1. Salve o código a seguir como delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Execute o playbook usando o comando ansible-playbook . Substitua o espaço reservado pelo nome do grupo de recursos a ser excluído. Todos os recursos dentro do grupo de recursos serão excluídos.

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    Pontos principais:

    • Devido à variável e debug à register seção do playbook, os resultados são exibidos quando o comando é concluído.

Próximos passos