Skip to content

Шпаргалка по модулям Ansible

Ansible — это мощный инструмент автоматизации ИТ-операций. В этой статье мы рассмотрим способы использования его наиболее популярных модулей.

Формат

Базовая структура файла

---
- hosts: production
  remote_user: root
  tasks:
  - ···

Пожалуйста, размещайте свои модули в разделе tasks.

Формат задач (Task Format)

Однострочный формат

- apt: pkg=vim state=present

Формат сопоставления (Mapping)

- apt:
    pkg: vim
    state: present

Формат со свернутыми скалярами (Folded Scalar)

- apt: >
    pkg=vim
    state=present

Для определения задач можно использовать любой из вышеперечисленных форматов. Для коротких объявлений рекомендуется однострочный формат, для более длинных — формат сопоставления.

Модули

Aptitude

Управление пакетами

- apt:
    pkg: nodejs
    state: present # absent | latest
    update_cache: yes
    force: no

Пакетный файл Deb

- apt:
    deb: "https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb"

Управление репозиториями (Источники ПО)

- apt_repository:
    repo: "deb https://··· raring main"
    state: present

Ключ репозитория

- apt_key:
    id: AC40B2F7
    url: "http://···"
    state: present

Связанное с Git

- git:
    repo: git://github.com/
    dest: /srv/checkout
    version: master
    depth: 10
    bare: yes

Справка: модуль git

Конфигурация Git

- git_config:
    name: user.email
    scope: global # local | system
    value: hi@example.com

Справка: модуль git_config

Управление пользователями

- user:
    state: present    # Состояние: существует
    name: git        # Имя пользователя
    system: yes      # Системный пользователь
    shell: /bin/sh   # Оболочка входа
    groups: admin    # Группы
    comment: "Git Version Control"  # Комментарий

Справка: модуль user

Управление службами

- service:
    name: nginx      # Имя службы
    state: started   # Состояние: запущена
    enabled: yes     # Включена ли автозагрузка

Справка: модуль service

Связанное с Shell

Команда shell

- shell: apt-get install nginx -y

Дополнительные параметры

- shell: echo hello
  args:
    creates: /path/file  # Пропустить, если файл существует
    removes: /path/file  # Пропустить, если файл не существует
    chdir: /path        # Перейти в этот каталог перед выполнением

Пример многострочных команд

- shell: |
    echo "hello there"
    echo "multiple lines"

Справка: модуль shell

Выполнение скриптов

- script: /x/y/script.sh
  args:
    creates: /path/file  # Пропустить, если файл существует
    removes: /path/file  # Пропустить, если файл не существует  
    chdir: /path        # Перейти в этот каталог перед выполнением

Справка: модуль script

Операции с файлами

Управление файлами

- file:
    path: /etc/dir
    state: directory # Тип: каталог|файл|ссылка|жесткая ссылка|touch|отсутствует

    # Необязательные параметры:
    owner: bin      # Владелец
    group: wheel    # Группа
    mode: 0644      # Права доступа
    recurse: yes    # Рекурсивное создание
    force: yes      # Принудительное создание символической ссылки

Справка: модуль file

Копирование файлов

- copy:
    src: /app/config/nginx.conf   # Исходный файл
    dest: /etc/nginx/nginx.conf   # Место назначения

    # Необязательные параметры:
    owner: user     # Владелец
    group: user     # Группа
    mode: 0644      # Права доступа
    backup: yes     # Создавать ли резервную копию

Справка: модуль copy

Шаблоны (Templates)

- template:
    src: config/redis.j2       # Исходный файл шаблона
    dest: /etc/redis.conf      # Место назначения

    # Необязательные параметры:
    owner: user     # Владелец
    group: user     # Группа
    mode: 0644      # Права доступа
    backup: yes     # Создавать ли резервную копию

Справка: модуль template

Локальные операции

Локальное выполнение

- name: Выполнение операции локально
  local_action: shell echo hello

Вывод отладки (Debug)

- debug:
    msg: "Hello {{ var }}"

Справка: модуль debug