본문 바로가기

리눅스

Ansible AWX에서 인벤토리를 추가하는 방법

반응형

AWX에서 인벤토리를 추가하는 방법

AWX는 웹 인터페이스와 CLI를 통해 인벤토리를 추가할 수 있습니다.

Ansible AWX에서 인벤토리(Inventory)를 CLI를 통해 추가하는 방법입니다.

AWX CLI 설치 및 설정

pip install awxkit

pipx 사용

더보기

---

pipx install awxkit
  installed package awxkit 24.6.1, installed using Python 3.12.3
  These apps are now globally available
    - akit
    - awx
⚠️  Note: '/home/vagrant/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is
    updated. Run `pipx ensurepath` to automatically add it, or manually modify your PATH in your shell's config file (i.e. ~/.bashrc).
done! ✨  ✨

---

환경 변수 설정

export TOWER_HOST=<AWX 서버 주소>
export TOWER_USERNAME=<사용자 이름>
export TOWER_PASSWORD=<비밀번호>

인벤토리 생성

awx inventory create --name "Test-Inventory" --organization "Moca" --description "Test-Inventory"
  • --name : 인벤토리 이름을 지정합니다.
  • --organization : 인벤토리가 속할 조직을 지정합니다.
  • --description : 인벤토리에 대한 설명을 추가합니다.

인벤토리 목록 확인

awx inventory list -f human
id name
== =========================== 
4  Apache-Inventory-Production 
5  Apache-Inventory-Staging
1  Demo Inventory    
6  Nginx-Inventory-Production
7  Nginx-Inventory-Staging
2  Test-Inventory     
3  Zabbix-Inventory

변수 추가(선택 사항)

  • 인벤토리 변수를 추가하려면 --variables 옵션을 사용합니다.
awx inventory create --name "Zabbix-Inventory" --organization "Moca" \
  --description "Zabbix-Inventory" \
  --variables '{ "ansible_connection": "ssh", "ansible_port": 22, "host_key_checking": false, "deprecation_warnings": false, "ansible_python_interpreter": "{{ ansible_playbook_python }}" }'

인벤토리에 그룹 추가

awx groups create --name "LogServers" --inventory "Test-Inventory" \
  --description "Test-Inventory LogServers" \
  --variables '{"ansible_connection": "ssh", "ansible_port": 22, "ansible_user": "user1"}'
awx groups create --name "WebServers" --inventory "Test-Inventory" \
  --description "Test-Inventory WebServers" \
  --variables '{"ansible_connection": "ssh", "ansible_port": 22, "ansible_user": "user1"}'
  • --name : 그룹 이름을 지정합니다.
  • --inventory : 그룹이 속할 인벤토리를 지정합니다.
  • --variables : 그룹 변수를 JSON 또는 YAML 형식으로 추가합니다.

그룹 목록 확인

awx groups list -f human
id name       
== ========== 
1  LogServers 
2  WebServers

인벤토리에 호스트 추가

awx hosts create --name "zabbix-177" --inventory "Zabbix-Inventory" \
  --description "zabbix-177" \
  --variables '{"ansible_host": "192.168.0.177"}'
awx hosts create --name "serv-24" --inventory "Test-Inventory" \
  --description "serv-24" \
  --variables '{"ansible_user": "user1", "ansible_host": "192.168.0.24"}'
awx hosts create --name "logserv-180" --inventory "Test-Inventory" \
  --description "logserv-180" \
  --variables '{"ansible_user": "user1", "ansible_host": "192.168.0.180", "ansible_python_interpreter": "/usr/bin/python3.10" }'
  • --name : 호스트 이름을 지정합니다.
  • --inventory : 호스트가 속할 인벤토리를 지정합니다.
  • --variables : 호스트 변수를 JSON 또는 YAML 형식으로 추가합니다.

호스트 목록 확인

awx hosts list -f human
더보기

---

awx hosts list -f json | jq -r '.results[] | .name' | sort -n

---

id name        
== =========== 
12 apache-1    
13 apache-2    
1  localhost   
8  logserv-180 
14 nginx-1     
15 nginx-2     
10 serv-230    
7  serv-24     
11 serv-240    
9  zabbix-177

동적 인벤토리 추가

동적 인벤토리를 사용하면 클라우드 제공자(예: AWS, Azure) 또는 사용자 정의 스크립트를 통해 호스트를 자동으로 가져올 수 있습니다.

awx inventory_source create --name "AWS EC2" \
  --inventory "Production Inventory" \
  --source "scm" \
  --source_path "https://github.com/ansible/ansible-tower-samples/blob/master/inventory_scripts/aws_ec2.yml"
  • --name : 소스 이름을 지정합니다.
  • --inventory : 소스가 속할 인벤토리를 지정합니다.
  • --source : 소스 유형을 지정합니다.
  • --source_path : 소스 경로를 지정합니다.

인벤토리를 추가하고 관리합니다.

 

참고URL

- 변군이글루 블로그 : 우분투 24.04에서 Python 3 및 pip3를 설치하는 방법

- Ansible Community Documentation : amazon.aws.aws_ec2 inventory – EC2 inventory source

- Ansible Community Documentation : Dynamic Inventory Plugin

 

728x90
반응형