Ansible 기본 안내
설치
python3 -m pip install ansible
Control node
Directory structure
<playbook>/
├── ansible.cfg # 설정 파일
├── inventories/
│ ├── <inventory>/
│ │ ├── hosts.yaml
│ │ ├── group_vars/
│ │ │ ├── <group>/
│ │ │ │ ├── <vars>.yaml
│ │ │ │ └── ...
│ │ │ ├── <group>.yaml
│ │ │ └── ...
│ │ └── host_vars/
│ │ ├── <host>/
│ │ │ ├── <vars>.yaml
│ │ │ └── ...
│ │ ├── <host>.yaml
│ │ └── ...
│ └── ...
├── group_vars/
│ └── ...
├── host_vars/
│ └── ...
├── library/ # 커스텀 모듈
├── module_utils/ # 커스텀 모듈 유틸
├── filter_plugins/ # 커스텀 필터 플러그인
├── <purpose>.yaml # playbook
├── ...
└── roles/
└── ...
Inventory
Playbook
example.yaml
- hosts: all
gather_facts: false
tasks:
- name: "example"
command: "echo hello"
실행 순서는 다음과 같습니다.
pre_tasks
pre_tasks
에 의해 호출되는handlers
roles
tasks
roles
또는tasks
에 의해 호출되는handlers
post_tasks
post_tasks
에 의해 호출되는handlers
Playbook 실행
ansible-playbook <playbook>
-i|--inventory <dir|yaml>
-l|--limit '<pattern>'
: 선택된 hosts에 추가적인 제한을 설정합니다.<pattern>
- https://docs.ansible.com/ansible/latest/inventory_guide/intro_patterns.html
<host>
<group>
<group>[i]
,<group>[i:j]
: Python 규칙과 같습니다.*
glob를 허용합니다A:B
: B에 있을 수도 있습니다.A:&B
: B에는 있어야 합니다.A:!B
: B에는 없어야 합니다.
ansible_limit
의 기본값이 됩니다.
--list-hosts
: 사용자가 설정한 옵션에 따라 실행될 play와 해당 host를 출력합니다.(실행은 되지 않습니다.)--list-tags
: 사용자가 설정한 옵션에 따라 실행될 play와 해당 tags를 출력합니다.(실행은 되지 않습니다.)--list-tasks
: 사용자가 설정한 옵션에 따라 실행될 play와 해당 tasks를 출력합니다.(실행은 되지 않습니다.)ansible -i inventory -m debug -a "var=hostvars[inventory_hostname]" '<pattern>'
: 해당 host들의 변수를 출력합니다.- 연결 옵션
-u|--user <user>
: 원격 접속 시 사용될 사용자를 설정합니다.None
이 기본값이고, 이 경우 명령을 실행시키는 쉘의 사용자가 사용됩니다.ansible_user
의 기본값이 됩니다.
-k|--ask-pass
: 원격 접속 시 사용될 비밀번호를 물어보도록 설정합니다.ansible_password
의 기본값이 됩니다.
- 작업 권한 옵션
-b|--become
:<becomeMethod>
로 작업을 실행시키도록 설정합니다.--become-user <becomeUser>
: become 사용자를 변경합니다.ansible_become_user
의 기본값이 됩니다.root
가 기본값입니다.
-K|--ask-become-pass
: become 사용자의 비밀번호를 물어보도록 설정합니다.ansible_become_password
의 기본값이 됩니다.
--become-method <becomeMethod>
: 권한 상승 방법을 설정합니다.sudo
가 기본값입니다.ansible-doc -t become -l
명령어로 가능한 값들을 확인할 수 있습니다.