귀염둥이의 메모

[Ansible] Ansible 인벤토리(inventory), ansible.cfg 본문

Infra & Devops/Ansible

[Ansible] Ansible 인벤토리(inventory), ansible.cfg

겸둥이xz 2021. 9. 6. 22:39
반응형

인벤토리

  • Ansible에서 관리할 호스트 목록을 정의
  • 단일 호스트 및 그룹 단위로 관리 (중첩 그룹 지원)
  • 정적 / 동적 인벤토리 지원

정적 인벤토리

  • ini 또는 yaml 형식 등 사용
  • 호스트 그룹 사용시 [ ] 로 그룹 이름 지정
  • 기본 그룹으로 all / ungrouped 제공
  • :children 접미사를 이용해 중첩 그룹 지정 가능
  • 범위 지정 방식으로 간편한 구성 가능
  • --list-hosts 옵션으로 확인 가능

정적 인벤토리에 관리 해당 호스트 지정하기

호스트 네임, 풀 네임 지정

mkdir test
cd test
vi inventory.ini

host1
10.0.2.22
localhost

 

 

범위(range)로 호스트 이름 지정

vi range.ini

host[1:2]     ✅ host1, host2를 지정한 것과 같음

 

 

그룹으로 호스트 지정

vi group.ini


10.0.2.23    ✅ ungrouped (미지정)

[web]        ✅ web 그룹
host1
host2

[db]        ✅ db 그룹
foo.example.com
10.0.2.10

 

 

하위 그룹 지정

vi group.ini


10.0.2.23    ✅ ungrouped (미지정)

[web]        ✅ web 그룹
host1
host2

[db]        ✅ db 그룹
foo.example.com
10.0.2.10

[linux]
1.2.3.4

[linux:children]    ⭐️ linux 그룹의 하위 그룹 (db)
db

 

 

인벤토리 호스트 참조 (다중 그룹 지정, ! , &)

https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html#intro-patterns

  • web 그룹과 db 그룹 출력

  • 'linux :! db'
    • linux 그룹에 속하고db 그룹에는 없는 호스트 (not)
  • 'web :&db'
    • web 그룹과 db 그룹 둘다 포함된 호스트 (**and)**

 

Ansible 구성 파일

  1. /etc/ansible/ansible.cfg
  2. ~/.ansible.cfg
  3. ./ansible.cfg
  • 해당 순서대로 읽어온다 (우선 순위는 역순)
  • ANSIBLE\_CONFIG환경 변수로 구성 파일의 위치를 정의 (유연한 관리)
  • ansible --verison 또는 명령어 사용시 -v 옵션으로 확인

 

구성 파일의 설정 관리

  • 각 섹션에 key-value 쌍으로 정의된 설정
  • [defaults] : Ansible 작업의 기본값을 설정
  • [privilege_escalation] : 권한 에스컬레이션을 수행하는 방법 구성
지시문 설명
inventory 인벤토리 파일의 경로 지정 (복수 선택 가능)
remote_user 관리 호스트에 로그인할 사용자의 이름
ask_pass ssh 암호를 요청하는 메시지 표시 여부
become 관리 호스트에서 자동으로 사용자를 전활할지 여부
become_method 사용자 전환 방식
become_user 관리 호스트에서 전환할 사용자
become_ask_pass become_method의 암호를 요청하는 메시지 표시 여부

 

 

vi ansible.cfg

[defaults]
inventory =./range.ini
remote_user = study
ask_pass = false (또는 no)

[privilege_escalation]
become = true (또는 yes)
become_user = root
become_method = sudo

  • 자동으로 현재 디렉터리의 ansible.cfg 를 적용, inventory = ./range.ini
  • range.inihost1host2에게 핑을 보냈다

참고자료

https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html#intro-patterns

반응형

'Infra & Devops > Ansible' 카테고리의 다른 글

[Ansible] Ansible 설치, 패스워드 없이 접속  (0) 2021.09.06
[Ansible] Ansible이란?  (0) 2021.09.06
Comments