Запуск и элементы управления ansible скриптами
Запуск одного действия
ansible [host/group/all] [action parameters]
Действия
-a "shell command" shell command
-m exec_name installed module
-i <filename> inventory file
--become все команды + sudo
--become-user user1 обязательно с become, переключается на выбранного пользователя
-f 1 использование одного потока. По умолчанию процессы параллельно для всех хостов.
Пример:
ansible multi -a "hostname"
Запуск через ansible playbook
Список действий сохраняется в файле *.yml (playbook)
ansible-playbook filename.yml
Структура playbook файла
---
- hosts: [host ip | host group | all]
remote_user: []
become: true
tasks:
- [task 1]
- [task n]
---
- hosts: [host ip | host group | all]
remote_user: []
become: true
tasks:
- [task 1]
- [task n]
Параметры задачи
gather_facts: False Проводить сбор данных по умолчанию
ignore_errors: True Прекращать или нет работу при ошибке
Условия (handlers)
when: ansible_os_family == "Debian"
Получить список фактов:
- name: Show facts available on the system
ansible.builtin.debug:
var: ansible_facts
Циклы (loops)
Цикл с объявленной переменной:
- name: use apt to install multiple apps
apt:
name: '{{ app }}'
state: latest
update_cache: yes
vars:
app:
- htop
- mc
- nload
become: yes
Цикл с необъявленной переменной:
- name: use apt to install multiple apps
apt:
name: '{{ item }}'
state: latest
update_cache: yes
loop:
- htop
- mc
- nload
become: yes