Ansible Inventory 에 대해
Ansible 에서 Inventory 라고 하면 리모트 서버에 정보 리스트를 말한다. 이를 대부분 파일로 저장해서 보관하는데 이를 Inventory file 이라고 부른다.
Inventory: (특정 건물 내의) 물품 목록, … 의 목록을 만들다.
리모트 서버 접속 목록을 Inventory 라고 보면 된다.
INI vs Yaml
Ansible Inventory 파일의 형식은 INI 와 Yaml 형식 두가지를 지원한다. INI 형식은 대략 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 |
[all] mail.example.com [webservers] foo.example.com bar.example.com [dbservers] one.example.com two.example.com three.example.com |
브랏켓(Bracket, ‘[]’) 감싼 것은 서버의 그룹을 말한다. 그리고 그 그룹내에 접속하고자하는 서버들의 정보를 입력해준다. 간단하게 서버의 이름을 입력해주면 된다.
Yaml 형식은 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: |
INI 형식과는 조금 색다른 면을 보여준다. hosts, children 이 보이고 children 아래에 그룹을 정의하고 있다.
뭐가 되었던 인식하기 쉬운것을 선택해서 사용하면 그만이다.
서버명 정규표현
서버명이 숫자 혹은 알파벳순으로 연속적이라면 다음과 같이 사용해 볼 수 있다.
1 2 3 4 5 |
[webservers] www[01:50].example.com [databases] db-[a:f].example.com |
Inventory 옵션들
서버들이 기본 설정을 그대로 사용하기도 하지만 변경해서 사용하기도 한다. 예를들어, SSH 접속 기본 포트 22이 아닌 다른 것을 사용할 경우나 로그인 사용자가 다를 경우에 이를 인식시켜줘야 하는데 Ansible 은 Inventory 에서 이를 지원한다.
INI 형식에서 다음과 같이 사용할 수 있다.
1 |
mail.example.com ansible_port=5555 ansible_host=192.0.2.50 ansible_user=mdehaan |
Yaml 형식에서는 다음과 같이 사용할 수 있다.
1 2 3 4 5 6 |
... hosts: jumper: ansible_port: 5555 ansible_host: 192.0.2.50 ansible_user=mdehaan |
이는 서버마다 적용할 수 있고 전체에 한꺼번에 적용할 수 있는데, 서버전체 적용하기 위해서는 다음과 같이 하면 된다. INI 형식은 다음과 같다.
1 2 3 4 |
[all:vars] ansible_port=5555 ansible_user=mdehaan ansible_ssh_pass=14321 |
YAML 형식은 다음과 같다.
1 2 3 4 5 6 7 |
all: hosts: mail.example.com: vars: ansible_port: 5555 ansible_user: mdehaan ansible_pass: 14321 |