Шпаргалка по модулям 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