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