Ansible 치트 시트
Ansible은 Python 기반으로 개발된 새로운 자동화 운영 도구입니다. 여러 운영 도구(puppet, cfengine, chef, func, fabric)의 장점을 결합하여 일괄 시스템 구성, 일괄 프로그램 배포, 일괄 명령 실행 등의 기능을 구현했습니다.
시작하기
호스트 및 그룹 (Hosts and Groups)
$ sudo mkdir /etc/ansible
$ sudo vim /etc/ansible/hosts
[example]
192.0.2.101
192.0.2.102
Playbook 실행
$ ansible-playbook playbook.yml
작업 (Tasks)
- hosts: all
user: root
sudo: no
vars:
aaa: bbb
tasks:
- ...
handlers:
- ...
포함 (Includes)
tasks:
- include: db.yml
handlers:
- include: db.yml user=timmy
트리거 (Triggers)
handlers:
- name: start apache2
action: service name=apache2 state=started
tasks:
- name: install apache
action: apt pkg=apache2 state=latest
notify:
- start apache2
변수 (Variables)
- host: lol
vars_files:
- vars.yml
vars:
project_root: /etc/xyz
tasks:
- name: Create the SSH directory.
file: state=directory path=${project_root}/home/.ssh/
only_if: "$vm == 0"
역할 (Roles)
- host: xxx
roles:
- db
- { role:ruby, sudo_user:$user }
- web
# 사용 예:
# roles/db/tasks/*.yml
# roles/db/handlers/*.yml
오류 처리
- name: my task
command: ...
register: result
failed_when: "'FAILED' in result.stderr"
ignore_errors: yes
changed_when: "result.rc != 2"
환경 변수
vars:
local_home: "{{ lookup('env','HOME') }}"