Начало работы. Настройка Ansible на виртуальной машине Azure

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Обратите внимание на использование и план соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

В этой статье показано, как установить Ansible на виртуальной машине Centos в Azure.

Вы узнаете, как выполнять следующие задачи:

  • Создание или изменение группы ресурсов
  • Создание виртуальной машины CentOS.
  • Установка Ansible на виртуальную машину.
  • Подключение к виртуальной машине через SSH
  • Установка Ansible на виртуальную машину.

Необходимые компоненты

Создание виртуальной машины

  1. Создайте группу ресурсов Azure.

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

    Возможно, потребуется заменить заполнитель --location соответствующим значением для вашей среды.

  2. Создайте виртуальную машину Azure для Ansible.

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

    Вместо <password> укажите свой пароль.

  3. Получите общедоступный IP-адрес виртуальной машины Azure.

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

Подключение к виртуальной машине по протоколу SSH

Используйте команду SSH для подключения к общедоступному IP-адресу виртуальной машины.

ssh azureuser@<vm_ip_address>

Замените <vm_ip_address> соответствующим значением, полученным из предыдущих команд.

Установка Ansible на виртуальную машину.

Ansible 2.9 с модулем azure_rm

Выполните следующие команды, чтобы настроить Ansible 2.9 на 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 с azure.azcollection

Выполните следующие команды, чтобы настроить Ansible на 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

Основные моменты:

  • Узел управления Ansible требует наличия Python 2 (версии 2.7) или Python 3 (версии 3.5 или выше). Ansible 4.0.0 и ansible-core 2.11 имеют нестрогую зависимость от Python 3.8, но будут работать и с более старыми версиями. Но для Ansible 5.0.0 и ansible-core 2.12 версия 3.8 или выше является обязательной.

Создание учетных данных Azure

Чтобы настроить учетные данные Ansible, вам потребуется следующая информация:

  • идентификатор подписки Azure и идентификатор арендатора;
  • Идентификатор и секрет приложения субъекта-службы

Настройте учетные данные Ansible с помощью одного из следующих способов:

Вариант 1. Создание файла учетных данных Ansible

В этом разделе вы создадите файл локальных учетных данных для предоставления учетных данных Ansible. Из соображений безопасности файлы учетных данных следует использовать только в средах разработки.

Дополнительные сведения об определении учетных данных Ansible см. в разделе Providing Credentials to Azure Modules (Предоставление учетных данных для модулей Azure).

  1. После успешного подключения к виртуальной машине узла создайте и откройте файл с именем credentials.

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. В этот файл добавьте приведенные ниже строки. Замените заполнители значениями субъекта-службы.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Сохранить и закрыть файл.

Вариант 2. Определение переменных среды Ansible

На виртуальной машине узла экспортируйте значения субъекта-службы, чтобы настроить учетные данные 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>

Проверка установки Ansible

Теперь у вас есть виртуальная машина с установленным и настроенным Ansible.

В этом разделе демонстрируется, как создать тестовую группу ресурсов в новой конфигурации Ansible. Если это не требуется, вы можете пропустить этот раздел.

Вариант 1: выполнение специализированной команды ansible

Выполните следующую специализированную команду Ansible, чтобы создать группу ресурсов:

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

Замените <resource_group_name> и <location> собственными значениями.

Вариант 2: создание и выполнение сборника схем Ansible

  1. Сохраните следующий код как create_rg.yml.

    Ansible 2.9 с модулем azure_rm

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

    Ansible 2.10 с azure.azcollection

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

    Замените <resource_group_name> и <location> собственными значениями.

  2. Запустите сборник схем с помощью команды ansible-playbook.

    ansible-playbook create_rg.yml
    

Изучите дополнительные сведения об azure.azcollection.

Очистка ресурсов

  1. Сохраните следующий код как delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Чтобы запустить сборник схем, выполните команду ansible-playbook. Замените заполнитель именем удаляемой группы ресурсов. В указанной группе ресурсов будут удалены все ресурсы.

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

    Основные моменты:

    • В связи с наличием переменной register и раздела debug в сборнике схем результаты будут отображены после завершения команды.

Следующие шаги