다음을 통해 공유


시작: Azure VM에서 Ansible 구성

이 문서에서는 Azure의 Ubuntu VM에 Ansible을 설치하는 방법을 보여 줍니다.

이 문서에서는 다음 방법을 설명합니다.

  • 리소스 그룹 만들기
  • Ubuntu 가상 머신 만들기
  • 가상 머신에 Ansible 설치
  • SSH를 통해 가상 머신에 연결
  • 가상 머신에서 Ansible 구성

필수 조건

  • Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
  • Azure 서비스 주체: appId, displayName, 암호테넌트 값을 기록하여 서비스 주체만듭니다.

가상 머신 만들기

  1. Azure 리소스 그룹을 만듭니다.

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

    매개 변수를 --location 사용자 환경에 적합한 값으로 바꿔야 할 수도 있습니다.

  2. Ansible용 Azure 가상 머신을 만듭니다.

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

    <password> 암호를 바꿉니다.

  3. Azure 가상 머신의 공용 IP 주소를 가져옵니다.

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

Azure.azcollection을 사용한 Ansible

다음 명령을 실행하여 Ubuntu에서 Ansible을 구성합니다.

#!/bin/bash

sudo apt update

sudo apt install software-properties-common

sudo add-apt-repository --yes --update ppa:ansible/ansible

sudo apt install ansible

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

# Install Ansible modules for Azure (optional)
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements.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 구독 ID 및 테넌트 ID
  • 서비스 주체 애플리케이션 ID 및 비밀

다음 기술 중 하나를 사용하여 Ansible 자격 증명을 구성합니다.

옵션 1: Ansible 자격 증명 파일 만들기

이 섹션에서는 Ansible에 자격 증명을 제공하는 로컬 자격 증명 파일을 만듭니다. 보안상의 이유로 자격 증명 파일은 개발 환경에서만 사용해야 합니다.

Ansible 자격 증명을 정의하는 방법에 대한 자세한 내용은 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 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저장합니다.

    Azure.azcollection을 사용한 Ansible

    - 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 섹션으로 인해 명령이 완료되면 결과가 표시됩니다.

다음 단계