Wprowadzenie: konfigurowanie rozwiązania Ansible na maszynie wirtualnej platformy Azure

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

W tym artykule pokazano, jak zainstalować rozwiązanie Ansible na maszynie wirtualnej z systemem Centos na platformie Azure.

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Tworzenie grupy zasobów
  • Tworzenie maszyny wirtualnej z systemem CentOS
  • Instalowanie rozwiązania Ansible na maszynie wirtualnej
  • Połączenie do maszyny wirtualnej za pośrednictwem protokołu SSH
  • Konfigurowanie rozwiązania Ansible na maszynie wirtualnej

Wymagania wstępne

  • Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
  • Jednostka usługi platformy Azure: Utwórz jednostkę usługi, zanotuj następujące wartości: appId, displayName, password i tenant.

Tworzenie maszyny wirtualnej

  1. Utwórz grupę zasobów platformy Azure.

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

    Może być konieczne zastąpienie parametru --location odpowiednią wartością środowiska.

  2. Utwórz maszynę wirtualną platformy Azure dla rozwiązania Ansible.

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

    Zastąp <password> hasło.

  3. Uzyskaj publiczny adres IP maszyny wirtualnej platformy Azure.

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

Połączenie do maszyny wirtualnej za pośrednictwem protokołu SSH

Za pomocą polecenia SSH nawiąż połączenie z publicznym adresem IP maszyny wirtualnej.

ssh azureuser@<vm_ip_address>

Zastąp element <vm_ip_address> odpowiednią wartością zwróconą w poprzednich poleceniach.

Instalowanie rozwiązania Ansible na maszynie wirtualnej

Rozwiązanie Ansible 2.9 z modułem azure_rm

Uruchom następujące polecenia, aby skonfigurować oprogramowanie Ansible 2.9 w systemie 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]

Rozwiązanie Ansible 2.10 z modułem azure.azcollection

Uruchom następujące polecenia, aby skonfigurować narzędzie Ansible w systemie 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

Kluczowe punkty:

  • Węzeł sterowania rozwiązania Ansible wymaga zainstalowanego środowiska Python 2 (wersja 2.7) lub Python 3 (wersje 3.5 i nowsze). Rozwiązanie Ansible 4.0.0 i ansible-core 2.11 ma miękką zależność od języka Python 3.8, ale działa z niższymi wersjami. Jednak rozwiązania Ansible 5.0.0 i ansible-core 2.12 będą wymagały wersji 3.8 i nowszej.

Tworzenie poświadczeń platformy Azure

Aby skonfigurować poświadczenia rozwiązania Ansible, potrzebne są następujące informacje:

  • Identyfikator subskrypcji platformy Azure i identyfikator dzierżawy
  • Identyfikator aplikacji jednostki usługi i wpis tajny

Skonfiguruj poświadczenia rozwiązania Ansible przy użyciu jednej z następujących technik:

Opcja 1. Tworzenie pliku poświadczeń rozwiązania Ansible

W tej sekcji utworzysz plik poświadczeń lokalnych, aby podać poświadczenia do rozwiązania Ansible. Ze względów bezpieczeństwa pliki poświadczeń powinny być używane tylko w środowiskach deweloperskich.

Aby uzyskać więcej informacji na temat definiowania poświadczeń rozwiązania Ansible, zobacz Dostarczanie poświadczeń do modułów platformy Azure.

  1. Po pomyślnym nawiązaniu połączenia z maszyną wirtualną hosta utwórz i otwórz plik o nazwie credentials:

    mkdir ~/.azure
    vi ~/.azure/credentials
    
  2. Wstaw następujące wiersze do pliku. Zastąp symbole zastępcze wartościami jednostki usługi.

    [default]
    subscription_id=<subscription_id>
    client_id=<service_principal_app_id>
    secret=<service_principal_password>
    tenant=<service_principal_tenant_id>
    
  3. Zapisz i zamknij plik.

Opcja 2. Definiowanie zmiennych środowiskowych rozwiązania Ansible

Na maszynie wirtualnej hosta wyeksportuj wartości jednostki usługi, aby skonfigurować poświadczenia rozwiązania 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>

Testowanie instalacji rozwiązania Ansible

Masz teraz maszynę wirtualną z zainstalowanym i skonfigurowanym rozwiązaniem Ansible.

W tej sekcji pokazano, jak utworzyć testową grupę zasobów w ramach nowej konfiguracji rozwiązania Ansible. Jeśli nie musisz tego robić, możesz pominąć tę sekcję.

Opcja 1. Używanie polecenia ad hoc ansible

Uruchom następujące polecenie ad hoc rozwiązania Ansible, aby utworzyć grupę zasobów:

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

Zastąp <resource_group_name> wartości i <location> wartościami.

Opcja 2. Pisanie i uruchamianie podręcznika rozwiązania Ansible

  1. Zapisz następujący kod jako create_rg.yml.

    Rozwiązanie Ansible 2.9 z modułem azure_rm

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

    Rozwiązanie Ansible 2.10 z modułem azure.azcollection

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

    Zastąp <resource_group_name> wartości i <location> wartościami.

  2. Uruchom podręcznik przy użyciu podręcznika ansible-playbook.

    ansible-playbook create_rg.yml
    

Przeczytaj więcej na temat pliku azure.azcollection.

Czyszczenie zasobów

  1. Zapisz następujący kod jako delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Uruchom podręcznik przy użyciu polecenia ansible-playbook . Zastąp symbol zastępczy nazwą grupy zasobów, która ma zostać usunięta. Wszystkie zasoby w grupie zasobów zostaną usunięte.

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

    Kluczowe punkty:

    • Ze względu na zmienną register i debug sekcję podręcznika wyniki są wyświetlane po zakończeniu polecenia.

Następne kroki