Ansible을 사용하여 Azure에서 Linux 가상 머신 만들기
이 문서에서는 Linux 가상 머신을 구성하기 위한 샘플 Ansible 플레이북을 제공합니다.
이 문서에서는 다음 방법을 설명합니다.
- 리소스 그룹 만들기
- 가상 네트워크 만들기
- 공용 IP 주소 만들기
- 네트워크 보안 그룹 만들기
- 가상 네트워크 인터페이스 카드 만들기
- 가상 머신 만들기
1. 환경 구성
- Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
Ansible 설치: 다음 옵션 중 하나를 수행합니다.
- Linux 가상 머신에서 Ansible 설치 및 구성
- Azure Cloud Shell 구성
2. SSH 키 쌍 만들기
다음 명령을 실행합니다. 메시지가 표시되면
/home/azureuser/.ssh/authorized_keys
디렉터리에서 만들 파일을 지정합니다.ssh-keygen -m PEM -t rsa -b 4096
공개 키 파일의 콘텐츠를 복사합니다. 기본적으로 공개 키 파일의 이름은
id_rsa.pub
입니다. 값은 "ssh-rsa"로 시작하는 긴 문자열입니다. 이 값은 다음 단계에서 필요합니다.
3. Ansible 플레이북 구현
샘플 Ansible 코드를 테스트 및 실행할 디렉터리를 만들고 현재 디렉터리로 만듭니다.
main.yml
라는 파일을 만들고 다음 코드를 삽입합니다.<key_data>
자리 표시자를 이전 단계의 공개 키 값으로 바꿉니다.- name: Create Azure VM hosts: localhost connection: local tasks: - name: Create resource group azure_rm_resourcegroup: name: myResourceGroup location: eastus - name: Create virtual network azure_rm_virtualnetwork: resource_group: myResourceGroup name: myVnet address_prefixes: "10.0.0.0/16" - name: Add subnet azure_rm_subnet: resource_group: myResourceGroup name: mySubnet address_prefix: "10.0.1.0/24" virtual_network: myVnet - name: Create public IP address azure_rm_publicipaddress: resource_group: myResourceGroup allocation_method: Static name: myPublicIP register: output_ip_address - name: Public IP of VM debug: msg: "The public IP is {{ output_ip_address.state.ip_address }}." - name: Create Network Security Group that allows SSH azure_rm_securitygroup: resource_group: myResourceGroup name: myNetworkSecurityGroup rules: - name: SSH protocol: Tcp destination_port_range: 22 access: Allow priority: 1001 direction: Inbound - name: Create virtual network interface card azure_rm_networkinterface: resource_group: myResourceGroup name: myNIC virtual_network: myVnet subnet: mySubnet public_ip_name: myPublicIP security_group: myNetworkSecurityGroup - name: Create VM azure_rm_virtualmachine: resource_group: myResourceGroup name: myVM vm_size: Standard_DS1_v2 admin_username: azureuser ssh_password_enabled: false ssh_public_keys: - path: /home/azureuser/.ssh/authorized_keys key_data: "<key_data>" network_interfaces: myNIC image: offer: 0001-com-ubuntu-server-jammy publisher: Canonical sku: 22_04-lts version: latest
4. 플레이북 실행
Ansible 플레이북을 실행하여 Ansible 플레이북을 실행합니다.
ansible-playbook main.yml
5. 결과 확인
az vm list를 실행하여 VM이 만들어졌는지 확인합니다.
az vm list -d -o table --query "[?name=='myVM']"
6. VM에 연결
SSH 명령을 실행하여 새 Linux VM에 연결합니다. <IP 주소> 자리 표시자를 이전 단계의 IP 주소로 바꿉니다.
ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa
리소스 정리
다음 코드를 .로
delete_rg.yml
저장합니다.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
ansible-playbook 명령을 사용하여 플레이북을 실행합니다. 자리 표시자를 삭제할 리소스 그룹의 이름으로 바꿉니다. 리소스 그룹 내의 모든 리소스가 삭제됩니다.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
주요 정보:
- 플레이북의
register
변수 및debug
섹션으로 인해 명령이 완료되면 결과가 표시됩니다.
- 플레이북의