반응형
Ansible 인벤토리를 YAML 파일로 설정하는 방법
YAML 파일을 사용하여 호스트 그룹 및 호스트에 대한 정보를 정의할 수 있습니다.
기본적인 YAML 형식의 Ansible 인벤토리 예제
- Ansible 인벤토리 파일 편집
vim hosts.yml
---
all: # all 그룹 정의
hosts:
webserver:
ansible_host: 192.168.1.10
ansible_user: ubuntu
ansible_ssh_private_key_file: /path/to/private_key.pem
database:
ansible_host: 192.168.1.11
ansible_user: centos
ansible_password: your_password
webservers: # webservers 그룹 정의
hosts:
web1:
ansible_host: 192.168.1.20
ansible_user: ubuntu
ansible_ssh_private_key_file: /path/to/private_key.pem
web2:
ansible_host: 192.168.1.21
ansible_user: centos
ansible_password: your_password
dbservers: # dbservers 그룹 정의
hosts:
db1:
ansible_host: 192.168.1.30
ansible_user: ubuntu
ansible_ssh_private_key_file: /path/to/private_key.pem
db2:
ansible_host: 192.168.1.31
ansible_user: centos
ansible_password: your_password
이 예제에서는 all, webservers, dbservers와 같은 그룹을 정의하고 각 그룹에 속하는 호스트를 지정했습니다. 호스트는 해당하는 그룹에 속하며 필요한 연결 정보(호스트 주소, 사용자명, 비밀번호 또는 키 파일 등)를 제공합니다.
일반적으로 Ansible 인벤토리 파일은 hosts.yml 또는 inventory.yml과 같은 이름으로 저장되며, 이 파일을 사용하여 Ansible 명령을 실행할 수 있습니다.
예를 들어, hosts.yml 파일로 작성된 인벤토리를 사용하여 특정 그룹에 대한 Ansible 명령을 실행하려면 다음과 같이 할 수 있습니다.
ansible-playbook -i hosts.yml playbook.yml
위의 명령에서 playbook.yml은 실행할 Ansible 플레이북 파일을 나타냅니다.
728x90
디렉터리 구조
level 1 | level 2 | level 3 | level 4 |
inventory | |||
inventory.yaml | |||
--- | --- | --- | --- |
group_vars | |||
hosts.yaml | |||
--- | --- | --- | --- |
blog | |||
hosts.yaml | |||
b-db | |||
hosts.yaml | |||
b-web | |||
hosts.yaml | |||
--- | --- | --- | --- |
site-a | |||
hosts.yaml | |||
development | |||
hosts.yaml | |||
stage | |||
hosts.yaml | |||
production | |||
hosts.yaml |
- 인벤토리 확인
ansible-inventory -i ~/ansible-spec/inventory --graph
$ ansible-inventory -i ~/ansible-spec/inventory --graph
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
@all:
|--@blog:
| |--@b-db:
| | |--bdb-245
| | |--bdb-246
| |--@b-web:
| | |--admin-249
| | |--admin-250
| | |--api-247
| | |--api-248
| | |--web-245
| | |--web-246
|--@site-a:
| |--@development:
| | |--devweb-214
| |--@production:
| | |--websrv-231
| | |--websrv-232
| |--@stage:
| | |--stgweb-240
|--@ungrouped:
| |--localhost
- 인벤토리 디렉터리 구조
tree
$ tree
.
├── blog
│ ├── b-db
│ │ └── hosts.yaml
│ ├── b-web
│ │ └── hosts.yaml
│ └── hosts.yaml
├── group_vars
│ └── all.yml
├── inventory.yaml
└── site-a
├── development
│ └── hosts.yaml
├── hosts.yaml
├── production
│ └── hosts.yaml
└── stage
└── hosts.yaml
- group_vars 편집
vim ./group_vars/all.yml
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
- inventory.yaml 편집
vim inventory.yaml
all:
children:
blog:
site-a:
hosts:
localhost:
ansible_hostr: 192.168.50.24
ip: 192.168.50.24
- hosts.yaml 편집
$ cat ./site-a/hosts.yaml
site-a:
children :
development:
stage:
production:
$ cat ./site-a/development/hosts.yaml
development:
hosts:
devweb-214:
$ cat ./site-a/stage/hosts.yaml
stage:
hosts:
stgweb-240:
$ cat ./site-a/production/hosts.yaml
production:
hosts:
websrv-231:
websrv-232:
참고URL
- [Ansible] 구성 설정(Configuration Settings) : https://scbyun.com/1373
- [Ansible] inventory(인벤토리) 설정 : https://scbyun.com/998
728x90
반응형
'리눅스' 카테고리의 다른 글
[Ansible] ansible-config 명령 (0) | 2022.11.01 |
---|---|
[Ansible] ansible-doc 명령 (0) | 2022.11.01 |
Ansible 구성 설정(Configuration Settings) 파일의 우선 순위에 대한 설명 (0) | 2022.10.31 |
레디스 클러스터를 설정하는 방법(redis cluster setup) (0) | 2022.10.26 |
우분투에서 Redis 서버를 소스 코드로 컴파일하여 설치하는 방법(소스 컴파일) (0) | 2022.10.26 |