Шпаргалка по модулям Ansible
Ansible — мощный инструмент автоматизации. В этой статье представлены способы использования его наиболее распространенных модулей.
Формат
Базовая структура файла
---
- hosts: production
remote_user: root
tasks:
- ···Пожалуйста, размещайте свои модули в разделе tasks.
Формат задач (Task Format)
Однострочный формат
- apt: pkg=vim state=presentФормат сопоставления (Mapping)
- apt:
pkg: vim
state: presentСвернутый скалярный формат
- 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: [email protected]Справка: модуль git_config
Управление пользователями
- user:
state: present # Состояние: присутствует
name: git # Имя пользователя
system: yes # Системный пользователь
shell: /bin/sh # Оболочка входа
groups: admin # Группы
comment: "Контроль версий Git" # КомментарийСправка: модуль 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 # Тип: directory|file|link|hard|touch|absent
# Необязательные параметры:
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
Шаблон (Template)
- 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