Skip to main content

3- Ansible inventory 작성하기

ansible의 inventory는 배포대상 서버정보를 구성하는 파일입니다.

rpm으로 설치할 경우 기본적으로 구성된 inventory는 /etc/ansible/hosts에서 작성할 수 있는데, playbook 작성에 따라
자체 inventory를 가질 수 있으니 참고만 해주세요.

  1. inventory에서 작성할 수 있는항목은 group, children, vars 를 자주 사용하는데요.
  2. 그룹명 web은 하위그룹으로 nginx, apache가 있다고 가정해보죠.
  3. 192.168.10.10, 192.168.10.15까지는 nginx를 설치할꺼고 192.168.100.10부터 192.168.100.15까지는 apache를 설치할꺼예요.
  4. playbook 코드도 그룹을 기준으로 설치할꺼예요.
  5. ansible 접속을 위한 계정은 ansible이고, ssh포트는 2022를 사용할꺼예요

이렇게 구성하기 위한 인벤토리는 다음값으로 설정이 가능합니다. 인벤토리는 /home/ansible/inventory 파일로 작성할게요

$ vi /home/ansible/inventory
[apache]
192.168.100.10
192.168.100.11
192.168.100.12
192.168.100.13
192.168.100.14
192.168.100.15
#혹은 이렇게 한줄 구성도 가능해요
192.168.100.[10:15]

[nginx]
192.168.10.10
192.168.10.11
192.168.10.12
192.168.10.13
192.168.10.14
192.168.10.15
#혹은 이렇게 한줄 구성도 가능해요
192.168.10.[10:15]

[web:children]
apache
nginx

[all:vars]
ansible_user=ansible
ansible_ssh_port=2022

인벤토리 구성이 잘 되었는지 한번 테스트 해볼까요?

$ ansible all -m ping -i /home/ansible/inventory
#특정 그룹 혹은 inventory에 구성된 정보를 넣으면 all 대신에 그룹명 혹은 서버ip를 기재하면 됩니다.
192.168.10.15 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.10.16 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.100.15 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
...