1.4. 인벤토리 빌드
인벤토리는 Ansible에 시스템 정보 및 네트워크 위치를 제공하는 중앙 집중식 파일로 관리형 노드를 구성합니다. Ansible은 인벤토리 파일을 사용하여 단일 명령으로 많은 수의 호스트를 관리할 수 있습니다. 다음 단계를 완료하려면 하나 이상의 호스트 시스템의 IP 주소 또는 FQDN(정규화된 도메인 이름)이 필요합니다. 설명을 위해 호스트는 컨테이너 또는 가상 시스템에서 로컬로 실행될 수 있습니다.
또한 공용 SSH 키가 각 호스트의 authorized_keys
파일에 추가되었는지 확인해야 합니다. 다음 절차에 따라 인벤토리를 빌드합니다.
프로세스
생성한 ansible_quickstart
디렉터리에 inventory.ini
라는 파일을 생성합니다. 새 [myhosts]
그룹을 inventory.ini 파일에 추가하고 각 호스트 시스템의 IP 주소 또는 FQDN(정규화된 도메인 이름)을 지정합니다.
[myhosts] 192.0.2.50 192.0.2.51 192.0.2.52
다음을 사용하여 인벤토리를 확인합니다.
ansible-inventory -i inventory.ini --list
다음을 사용하여 인벤토리의 myhosts
그룹을 ping합니다.
ansible myhosts -m ping -i inventory.ini
사용자 이름이 제어 노드와 관리 노드에서 다른 경우 Ansible 명령으로 -u
옵션을 전달합니다.
192.0.2.50 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } 192.0.2.51 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } 192.0.2.52 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
인벤토리를 성공적으로 구축했습니다.
1.4.1. INI 또는 YAML 형식의 인벤토리
INI 파일 또는 YAML에서 인벤토리를 생성할 수 있습니다. 위의 예와 같은 대부분의 경우 INI 파일은 적은 수의 관리형 노드에서 쉽게 읽을 수 있습니다. YAML 형식으로 인벤토리를 생성하면 관리 노드 수가 증가함에 따라 합리적인 옵션이 됩니다.
예를 들어 다음은 관리 노드의 고유 이름을 선언하고 ansible_host
필드를 사용하는 inventory.ini
와 동일합니다.
myhosts: hosts: my_host_01: ansible_host: 192.0.2.50 my_host_02: ansible_host: 192.0.2.51 my_host_03: ansible_host: 192.0.2.52
1.4.2. 인벤토리 빌드 팁
- 그룹 이름이 의미 있고 고유해야 합니다.
- 그룹 이름도 대소문자를 구분합니다.
- 그룹 이름에 공백, 하이픈 또는 이전 숫자(19th_floor가 아닌 floor_19 사용)를 사용하지 마십시오.
What, Where, When 에 따라 인벤토리의 호스트를 논리적으로 그룹화합니다.
- what: 토폴로지에 따른 그룹 호스트(예: db, web, leaf, spine)입니다.
- 여기서: 지리적 위치별 그룹 호스트(예: 데이터 센터, 지역, 현장, 빌드)입니다.
- When: Group hosts by stage (예: development, test, staging, production)
1.4.3. 메타 그룹 사용
다음 구문을 사용하여 인벤토리에서 여러 그룹을 구성하는 메타 그룹을 생성합니다.
metagroupname: children:
다음 인벤토리는 데이터 센터의 기본 구조를 보여줍니다. 이 예제 인벤토리에는 모든 네트워크 장치와 네트워크 그룹 및 모든 Cryostat를 포함하는 데이터 센터 메타 그룹을 포함하는 네트워크 메타 그룹이 포함되어 있습니다.
leafs: hosts: leaf01: ansible_host: 192.0.2.100 leaf02: ansible_host: 192.0.2.110 spines: hosts: spine01: ansible_host: 192.0.2.120 spine02: ansible_host: 192.0.2.130 network: children: leafs: spines: webservers: hosts: webserver01: ansible_host: 192.0.2.140 webserver02: ansible_host: 192.0.2.150 datacenter: children: network: webservers: