Ansible 기본 안내
설치
python3 -m pip install ansible
Control node
Directory structure
References
<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
ansible 모듈 실행
ansible <flags> -m <module> -a <args> '<hostPattern>'
- e.g.
ansible -i <inventory> -m ping '<hostPattern>': ansible 실행이 가능한 상태인지 확인합니다.ansible -i <inventory> -m debug -a "var=hostvars[inventory_hostname]" '<hostPattern>': 해당 host들의 변수를 출력합니다.ansible -i <inventory> -m shell -a "<shellScript>" '<hostPattern>':<shellScript>를 실행합니다.ansible -i <inventory> -b -f 20 -m reboot all: 모든 host를 20개씩 재부팅합니다.
Playbook
Playbook 작성
example.yaml
- hosts: all
gather_facts: false
tasks:
- name: "example"
command: "echo hello"
실행 순서는 다음과 같습니다.
pre_taskspre_tasks에 의해 호출되는handlersrolestasksroles또는tasks에 의해 호출되는handlerspost_taskspost_tasks에 의해 호출되는handlers
Playbook 실행
ansible-playbook <flags> <playbook>
-i|--inventory <dir|yaml>-l|--limit '<hostPattern>': 선택된 hosts에 추가적인 제한을 설정합니다.<hostPattern>- Ansible / Patterns
<host>[,<host>]<group><group>[i],<group>[i:j]: Python 규칙과 같습니다.*glob를 허용합니다A:B: A와 B의 합집합(A ∪ B)A:&B: A와 B의 교집합(A ∩ B)A:!B: A에 대한 B의 차집합(A - B)
ansible_limit의 기본값이 됩니다.
--list-hosts: 사용자가 설정한 옵션에 따라 실행될 play와 해당 host를 출력합니다.(실행은 되지 않습니다.)--list-tags: 사용자가 설정한 옵션에 따라 실행될 play와 해당 tags를 출력합니다.(실행은 되지 않습니다.)--list-tasks: 사용자가 설정한 옵션에 따라 실행될 play와 해당 tasks를 출력합니다.(실행은 되지 않습니다.)- 연결 옵션
-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명령어로 가능한 값들을 확인할 수 있습니다.