728x90
Ansible inventory 설정
Ansible은 인벤토리로 알려진 목록 또는 목록 그룹을 사용하여 인프라의 여러 관리 노드 또는 "호스트"에 대해 동시에 작동합니다. 인벤토리가 정의되면 패턴을 사용하여 Ansible을 실행할 호스트 또는 그룹을 선택합니다.(대상 서버 리스트)
구성 설정(Configuration settings)
- ANSIBLE_CONFIG (환경 변수에 지정한 경우)
- ansible.cfg (현재 디렉토리)
- ~/.ansible.cfg (홈 디렉토리)
- /etc/ansible/ansible.cfg (기본)
vim ~/.ansible.cfg
cat ~/.ansible.cfg
[defaults]
inventory = ~/inventory/hosts.ini
host_key_checking = False
기본 Inventory : /etc/ansible/hosts
vim inventory.ini
$ cat inventory.ini
[all: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
[all]
localhost ansible_host=127.0.0.1 ip=127.0.0.1
web1 ansible_host=192.168.0.51 ip=192.168.0.51
web2 ansible_host=192.168.0.52 ip=192.168.0.52
web3 ansible_host=192.168.0.53 ip=192.168.0.53
web4 ansible_host=192.168.0.54 ip=192.168.0.54
web5 ansible_host=192.168.0.55 ip=192.168.0.55
db1 ansible_host=192.168.0.201 ip=192.168.0.201
db2 ansible_host=192.168.0.202 ip=192.168.0.202
api1 ansible_host=192.168.0.61 ip=192.168.0.61
api2 ansible_host=192.168.0.62 ip=192.168.0.62
redis1 ansible_host=192.168.0.211 ip=192.168.0.211
redis2 ansible_host=192.168.0.212 ip=192.168.0.212
redis3 ansible_host=192.168.0.213 ip=192.168.0.213
was1 ansible_host=192.168.0.81 ip=192.168.0.81
was2 ansible_host=192.168.0.82 ip=192.168.0.82
was3 ansible_host=192.168.0.83 ip=192.168.0.83
was4 ansible_host=192.168.0.84 ip=192.168.0.84
was5 ansible_host=192.168.0.85 ip=192.168.0.85
[local]
localhost
[webgroups:children]
web
was
api
[dbgroups:children]
db
redis
[web]
web[1:5]
[was]
was[1:5]
[db]
db1
db2
[api]
api1
api2
[redis]
redis1
redis2
redis3
인벤토리 매개 변수(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 -i inventory.ini --graph
$ ansible-inventory -i inventory.ini --graph
@all:
|--@dbgroups:
| |--@db:
| | |--db1
| | |--db2
| |--@redis:
| | |--redis1
| | |--redis2
| | |--redis3
|--@local:
| |--localhost
|--@ungrouped:
|--@webgroups:
| |--@api:
| | |--api1
| | |--api2
| |--@was:
| | |--was1
| | |--was2
| | |--was3
| | |--was4
| | |--was5
| |--@web:
| | |--web1
| | |--web2
| | |--web3
| | |--web4
| | |--web5
ansible-inventory -i inventory.ini --list
$ ansible-inventory -i inventory.ini --list
{
"_meta": {
"hostvars": {
"api1": {
"ansible_connection": "ssh",
"ansible_host": "192.168.0.61",
"ansible_port": 22,
"ansible_ssh_private_key_file": "~/aws-key/keyfile.pem",
"ansible_ssh_user": "ec2-user",
"ip": "192.168.0.61"
},
"localhost": {
"ansible_connection": "ssh",
"ansible_host": "127.0.0.1",
"ansible_port": 22,
"ansible_ssh_private_key_file": "~/aws-key/keyfile.pem",
"ansible_ssh_user": "ec2-user",
"ip": "127.0.0.1"
},
...
"web5": {
"ansible_connection": "ssh",
"ansible_host": "192.168.0.55",
"ansible_port": 22,
"ansible_ssh_private_key_file": "~/aws-key/keyfile.pem",
"ansible_ssh_user": "ec2-user",
"ip": "192.168.0.55"
}
}
},
"all": {
"children": [
"dbgroups",
"local",
"ungrouped",
"webgroups"
]
},
"api": {
"hosts": [
"api1",
"api2"
]
},
...
"web": {
"hosts": [
"web1",
"web2",
"web3",
"web4",
"web5"
]
},
"webgroups": {
"children": [
"api",
"was",
"web"
]
}
}
앤서블 인벤토리(디렉터리) YAML 구현
$ tree blog-scbyun.com
blog-scbyun.com
├── api1
│ └── hosts.yaml
├── api2
│ └── hosts.yaml
├── db1
│ └── hosts.yaml
├── db2
│ └── hosts.yaml
├── inventory.yaml
├── web1
│ └── hosts.yaml
└── web2
└── hosts.yaml
$ cat blog-scbyun.com/inventory.yaml
all:
hosts:
localhost:
$ cat blog-scbyun.com/api1/hosts.yaml
api1:
hosts:
apiserver1:
$ ansible-inventory -i blog-scbyun.com --graph
@all:
|--@api1:
| |--apiserver1
|--@api2:
| |--apiserver2
|--@db1:
| |--dbserver1
|--@db2:
| |--dbserver2
|--@ungrouped:
| |--localhost
|--@web1:
| |--webserver1
|--@web2:
| |--webserver2
참고URL
- https://docs.ansible.com/ansible/2.9/user_guide/intro_inventory.html#id17
728x90
'리눅스' 카테고리의 다른 글
Ansible 설치 및 업그레이드 (0) | 2022.08.23 |
---|---|
CentOS 7에서 python3 업그레이드 (0) | 2022.08.23 |
Ubuntu Server 22.04 LTS (Jammy Jellyfish) (0) | 2022.08.19 |
[리눅스] macOS에 ansible 설치 (0) | 2022.08.10 |
macOS 버전 정보 확인(command) (0) | 2022.08.10 |