Skip to content

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') }}"