본문 바로가기

리눅스

[iac] Ansible inventory 설정

728x90

Ansible inventory 설정

 Ansible은 인벤토리로 알려진 목록 또는 목록 그룹을 사용하여 인프라의 여러 관리 노드 또는 "호스트"에 대해 동시에 작동합니다. 인벤토리가 정의되면 패턴을 사용하여 Ansible을 실행할 호스트 또는 그룹을 선택합니다.(대상 서버 리스트)

구성 설정(Configuration settings)

- ANSIBLE_CONFIG (환경 변수에 지정한 경우)

- ansible.cfg (현재 디렉토리)

- ~/.ansible.cfg (홈 디렉토리)

- /etc/ansible/ansible.cfg (기본)

$ ansible --version
ansible [core 2.12.8]
  config file = /home/vagrant/.ansible.cfg
  configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/vagrant/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0]
  jinja version = 2.10.1
  libyaml = True

기본 Inventory : /etc/ansible/hosts

$ vim /etc/ansible/hosts
[dbs:vars]
ansible_connection=ssh
ansible_port=22
ansible_ssh_user=ec2-user
ansible_ssh_private_key_file=~/aws-key/keyfile.pem
ansible_python_interpreter=/usr/bin/python

[local]
192.168.56.11 ansible_connection=local

[mgmt]
192.168.56.21
192.168.56.22

[dbs]
db1 ansible_host=192.168.101.94
db2 ansible_host=192.168.101.114
db3 ansible_host=192.168.101.9

인벤토리 매개 변수(inventory parameters)

- ansible_connection : 연결 유형(default : smart)

[일반]

- ansible_host : 연결하려는 호스트의 이름

- ansible_port : 연결하려는 호스트의 포트(default : 22)

- ansible_user : 연결하려는 호스트의 사용자 이름

[SSH 연결]

- ansible_ssh_user : ssh에서 사용하는 사용자 이름

- ansible_ssh_private_key_file : ssh에서 사용하는 개인 키 파일


ansible-inventory 명령

ansible-inventory --graph
$ ansible-inventory --graph
@all:
  |--@dbs:
  |  |--db1
  |  |--db2
  |  |--db3
  |--@local:
  |  |--192.168.56.11
  |--@mgmt:
  |  |--192.168.56.21
  |  |--192.168.56.22
  |--@ungrouped:

ansible-config 명령

ansible-config dump

GREEN : DEFAULT 값, YELLOW : 변경된 값

 


inventory.ini 생성 팁

$ cat inventory.ini
[all:vars]
ansible_connection=ssh
ansible_port=22
ansible_ssh_user=vagrant
ansible_ssh_private_key_file=~/aws-key/iac-test.pem
#ansible_python_interpreter=/usr/bin/python

[all]
control1 ansible_host=192.168.3.28
node1 ansible_host=192.168.3.31
node2 ansible_host=192.168.3.32
node3 ansible_host=192.168.3.36

[local]
127.0.0.1 ansible_connection=local

[controls]
control1

[mgmt]
node1
node2
node3

** all에서 호스트명과 아이피를 설정하고 아래 그룹에서는 호스트명 설정하고 사용할 수 있다.

ansible-inventory -i inventory.ini --graph
$ ansible-inventory -i inventory.ini --graph
@all:
  |--@controls:
  |  |--control1
  |--@local:
  |  |--127.0.0.1
  |--@mgmt:
  |  |--node1
  |  |--node2
  |  |--node3

 

참고URL

https://docs.ansible.com/ansible/2.9/user_guide/intro_inventory.html#id17

- ansible-config : https://docs.ansible.com/ansible/latest/cli/ansible-config.html

- ansible-inventory : https://docs.ansible.com/ansible/latest/cli/ansible-inventory.html

- ansible-doc : https://docs.ansible.com/ansible/latest/cli/ansible-doc.html

 

728x90