Версия: 2.12.4
Ansible Playbooks - позволяет автоматизировать различные задачи на удаленных компьютерах с использованием плейбуков.
Плейбуки представляют собой файлы, написанные на языке YAML, которые содержат описание шагов, необходимых для выполнения на удаленных хостах. Плейбуки могут включать в себя различные задачи, такие как установка программ, конфигурация системы, управление сервисами и многое другое.
Для Ansible не требуется установка агента или клиента на целевые системы.
Плейбук (Сценарий) — это описание состояния ресурсов системы, в котором она должна находиться в конкретный момент времени, включая установленные пакеты, запущенные службы, созданные файлы и многое другое. Ansible проверяет, что каждый из ресурсов системы находится в ожидаемом состоянии и пытается исправить состояние ресурса, если оно не соответствует ожидаемому.
Для выполнения задач используется система модулей. Каждая задача представляет собой имя задачи, используемый модуль и список параметров, характеризующих задачу. Система поддерживает переменные, фильтры обработки переменных (поддержка осуществляется библиотекой Jinja2), условное выполнение задач, параллелизацию, шаблоны файлов. Адреса и настройки целевых систем содержатся в файлах «инвентаря» (inventory). Поддерживается группирование. Для реализации набора сходных задач существует система ролей.
Контактная информация:
Официальный сайт
Официальная документация Ansible Playbooks
Разработчик:
Michael DeHaan
Лицензия:
Стандартная общественная лицензия GNU версии 3 (GPLv3)
Синтаксис:
ansible-playbook [опции] [аргументы]
Аргументы:
Аргумент | Описание |
---|---|
playbook | Плейбук(и) |
Опции:
Опции | Описание |
---|---|
--ask-vault-password, --ask-vault-pass | Запрашивает пароль для расшифровки файлов Vault. |
--become-password-file BECOME_PASSWORD_FILE, --become-pass-file BECOME_PASSWORD_FILE | Указывает файл, содержащий пароль для привилегированного (become) доступа. |
--connection-password-file CONNECTION_PASSWORD_FILE, --conn-pass-file CONNECTION_PASSWORD_FILE | Указывает файл, содержащий пароль для подключения к хостам. |
--flush-cache | Очищает кэш фактов (facts) для каждого хоста в инвентаре. |
--force-handlers | Запускает обработчики (handlers) даже в случае, если задача завершилась ошибкой. |
--list-hosts | Выводит список совпадающих хостов, но не выполняет никаких других действий. |
--list-tags | Выводит список всех доступных тегов (tags) в плейбуке. |
--list-tasks | Выводит список всех задач (tasks), которые будут выполнены при выполнении плейбука. |
--skip-tags SKIP_TAGS | Выполняет только те плейбуки и задачи, теги (tags) которых не совпадают с указанными значениями. |
--start-at-task START_AT_TASK | Запускает выполнение плейбука с задачи, совпадающей с указанным именем. |
--step | Запускает выполнение плейбука пошагово. |
--syntax-check | Выполняет проверку синтаксиса плейбука, но не выполняет его. |
--vault-id VAULT_IDS | Идентификаторы (IDs) для использования Vault. |
--vault-password-file VAULT_PASSWORD_FILES, --vault-pass-file VAULT_PASSWORD_FILES | Указывает файл, содержащий пароль для Vault. |
--version | Показывает номер версии программы, расположение файла конфигурации, путь поиска модулей, расположение модулей, расположение исполняемого файла и завершает выполнение. |
-C, --check | Не вносит изменений, а пытается предсказать возможные изменения, которые могут произойти. |
-D, --diff | При изменении (небольших) файлов и шаблонов показывает различия в этих файлах; работает отлично с опцией --check. |
-K, --ask-become-pass | Запрашивает пароль для привилегированного (become) доступа. |
-M MODULE_PATH, --module-path MODULE_PATH | Добавляет путь(и) к библиотеке модулей через двоеточие (по умолчанию: ~/.ansible/plugins/modules:/usr/share/ansible/plugins/modules). |
-e EXTRA_VARS, --extra-vars EXTRA_VARS | Устанавливает дополнительные переменные в формате ключ=значение или YAML/JSON; при указании имени файла использовать префикс @. |
-f FORKS, --forks FORKS | Указывает количество параллельных процессов для выполнения (по умолчанию: 5). |
-h, --help | Показывает это сообщение справки и завершает выполнение. |
-i INVENTORY, --inventory INVENTORY, --inventory-file INVENTORY | Указывает путь к инвентарному файлу или список хостов, разделенных запятой; опция --inventory-file устарела. |
-k, --ask-pass | Запрашивает пароль для подключения к хостам. |
-l SUBSET, --limit SUBSET | дополнительно ограничивает выбор хостов по дополнительному шаблону. |
-t TAGS, --tags TAGS | Выполняет только плейбуки и задачи, помеченные указанными тегами. |
-v, --verbose | Режим подробного вывода (-vvv для большей подробности, -vvvv для включения отладки подключения). |
Опции подключения:
Опции | Описание |
---|---|
--private-key PRIVATE_KEY_FILE, --key-file PRIVATE_KEY_FILE | Использовать данный файл для аутентификации подключения |
--scp-extra-args SCP_EXTRA_ARGS | Указать дополнительные аргументы только для передачи по протоколу SCP (например, -l) |
--sftp-extra-args SFTP_EXTRA_ARGS | Указать дополнительные аргументы только для передачи по протоколу SFTP (например, -f, -l) |
--ssh-common-args SSH_COMMON_ARGS | Указать общие аргументы для передачи в sftp/scp/ssh (например, ProxyCommand) |
--ssh-extra-args SSH_EXTRA_ARGS | Указать дополнительные аргументы только для передачи по протоколу SSH (например, -R) |
-T TIMEOUT, --timeout TIMEOUT | Переопределить таймаут подключения в секундах (по умолчанию: 10) |
-c CONNECTION, --connection CONNECTION | Тип подключения для использования (по умолчанию: smart) |
-u REMOTE_USER, --user REMOTE_USER | Подключиться от имени данного пользователя (по умолчанию: None) |
Опции повышения привилегий:
Опции | Описание |
---|---|
--become-method BECOME_METHOD | Метод повышения привилегий для использования (по умолчанию: sudo), используйте ansible-doc -t become -l для просмотра доступных вариантов. |
--become-user BECOME_USER | Выполнять операции от имени данного пользователя (по умолчанию: root) |
-b, --become | Выполнять операции с привилегиями (не требует запроса пароля) |
Создать каталог для хранения playbooks:
sudo mkdir /etc/ansible/playbooks
Для примера представлено создание плейбука "Установка программ"
:
В каталоге /etc/ansible/playbooks создать файл install_programm.yml:
sudo touch /etc/ansible/playbooks/install_programm.yml
Открыть созданный плейбук в любом текстовом редакторе:
sudo mcedit /etc/ansible/playbooks/install_programm.yml
---
- name: Установка программ # имя сценария
hosts: all # all - для всех в файле указанных hosts; можно указать группу
become: true # указывает ansible использовать повышение привелегий при выполнении плейбука
vars: # переменные ansible
packages_to_install: "{{ programs | default('') }}" # переменная ansible
tasks: # задачи
- name: Обновление баз данных Pacman # имя задачи
pacman:
update_cache: yes
- name: Установка программ
pacman:
name: "{{ packages_to_install.split(' ') }}"
state: present
Плейбуки пишутся в YAML со стандартным расширением .yml с минимальным синтаксисом.
В примере используются пробелы для одинаковых отступов элементов на одном уровне иерархии. У дочернего элемента отступ должен быть больше, чем у родительского. Количество пробелов может быть любым, но обычно их два. Tab использовать нельзя.
Затем ввести команду на выполнение плейбука:
ansible-playbook /etc/ansible/playbooks/install_programm.yml --ask-become-pass --extra-vars "programs='ecrire stoken'"
где:
При успешном выполнении будет выведено:
BECOME password:
PLAY [Установка программ] *******************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.7.4]
ok: [192.168.7.3]
TASK [Обновление баз данных Pacman] ********************************************************************************************************************************
ok: [192.168.7.3]
ok: [192.168.7.4]
TASK [Установка программ] *******************************************************************************************************************************
changed: [192.168.7.4]
changed: [192.168.7.3]
PLAY RECAP ***********************************************************************************************************************************
192.168.7.3 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.7.4 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
где PLAY RECAP:
Для управления записями cron.d и crontab используется модуль ansible.builtin.cron.
Пример использования модуля cron в Ansible для создания задачи cron на обновление всех хостов в определенное время.
В каталоге с плейбуками создать плейбук: "syu.yml" и добавить код:
---
- name: Обновление всех хостов
hosts: all
become: yes
- name: Обновление всех хостов в 15:30
cron:
name: "Обновление всех хостов"
weekday: "2"
minute: "30"
hour: "15"
job: "pacman -Syu"
Где:
Проверить на каких хостах будет происходить работа определенного плейбука можно командой в терминале:
ansible-playbook /etc/ansible/playbooks/install_programm.yml --list-host
Примерный вывод:
playbook: /etc/ansible/playbooks/install_programm.yml
play #1 (all): Установка программ TAGS: []
pattern: ['all']
hosts (2):
192.168.215.47
192.168.215.49
ansible-playbook --check /путь/к/вашему/playbook.yml
Пример использования параметра check_mode: yes
в playbook:
---
- name: Пример Playbook с режимом проверки
hosts: all
become: yes
check_mode: yes # Включает режим проверки
---
- name: Пример Playbook с режимом сравнения
hosts: all
become: yes
diff_mode: yes # Включает режим сравнения
Предупреждение:
[WARNING]: Platform linux on host 192.168.215.47 is using the discovered Python interpreter at /usr/bin/python3.10, but future installation of another Python interpreter could change the
meaning of that path. See https://docs.ansible.com/ansible-core/2.12/reference_appendices/interpreter_discovery.html for more information.
Предупреждение связано с обнаружением интерпретатора Python на целевом хосте. Ansible предупреждает, что в будущем установка другого интерпретатора Python может изменить значение пути /usr/bin/python3.10, который в настоящее время используется для выполнения задач.
Чтобы убрать предупреждение, можно явно указать интерпретатор Python для использования в плейбуке. Для этого следует добавить в раздел "vars" необходимого плейбука строку:
ansible_python_interpreter: /usr/bin/python3.10
Это сообщит Ansible, что необходимо использовать конкретный интерпретатор Python, и предупреждение больше не будет появляться
.
Если есть несколько хостов и на них разные пути к интерпретаторам Python, то придется указать соответствующие пути для каждого хоста в инвентаре или в соответствующих групповых переменных хостов.
Ошибка:
fatal: [192.168.215.49]: FAILED! => {"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."}
Означает что не была добавилена запись для одного или нескольких хостов в файл ~/.ssh/known_hosts. Решить это можно получив ключ или отключить проверку ключа в ansible.conf:
[defaults]
host_key_checking = false
Внимание! Следует быть осторожным с отключением так как может привести к проблемам с безопасностью.
Ошибка:
ERROR! couldn't resolve module/action 'geerlingguy.apache'. This often indicates a misspelling, missing collection, or incorrect module path.
The error appears to be in '/etc/ansible/playbooks/password_complexity.yml': line 15, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: Настроить сложность паролей
^ here
Ошибка возникает, когда указанный модуль, роль или действие (action) не может быть найден или загружен. Это может быть связано с несколькими возможными причинами:
Возможные варианты решения:
/usr/share/ansible/plugins/modules/
:В данном примере отсуствует модуль в стандартных каталогах ansible. Модуль предоставлен пакетом "libpwquality", который установлен в систему.
Для решения необходимо скопировать файл, расположенный по адресу: /usr/lib/security/pam_pwquality.so
и поместить его в /usr/share/ansible/plugins/modules/
/usr/share/ansible/plugins/roles/
:Также роли можно разместить в одной директории с запускаемым плейбуком, в /etc/ansible/roles
или в /etc/ansible
.
В каталоге с плейбуками создать плейбук: "syu.yml" и добавить код:
---
- name: Обновление системы
hosts: all
become: yes
tasks:
- name: Запуск обновления баз данных и установки обновлений
pacman:
update_cache: true
upgrade: true
В каталоге с плейбуками создать плейбук: "update_kernel.yml" и добавить код:
---
- name: Обновление ядра системы
hosts: all
become: yes
tasks:
- name: Обновление базы данных пакетов Pacman
pacman:
update_cache: yes
- name: Обновление ядра
pacman:
name: ubm-001-linux
state: present
В каталоге с плейбуками создать плейбук: "autoupdate.yml" и добавить код:
---
- name: Автоматическое обновление системы
hosts: all
become: yes
tasks:
- name: Включение автообновления управляемых машин
shell: ubconfig set config UBLINUXUPDATE=auto
Подробный пример создания плейбука для установки программ с помощью Pacman на удаленных хостах приведен в разделе "Создание плейбука и его выполнение".
Для установки пакетов *.rpm с помощью DNF в созданном окружении/контейнере Fedora следует в каталоге с плейбуками создать плейбук: "install_programm.yml" и добавить код:
---
- name: Установка программ
hosts: all
become: yes
vars:
packages:
- ciano
path_container: "/home/fedora"
releasever: "38"
tasks:
- name: Установка пакета
dnf:
name: "{{ packages }}"
installroot: "{{ path_container }}"
releasever: "{{ releasever }}"
install_weak_deps: no
enablerepo: ""
disablerepo: ""
state: present
ignore_errors: yes # Игнорировать ошибки в случае отсутствия репозитория
- name: Print success message
debug:
msg: "Пакет успешно установлен в {{ path_container }}"
Для установки пакетов *.rpm с помощью DNF без окружения следует в каталоге с плейбуками создать плейбук: "install_programm.yml" и добавить код:
---
- name: Установка программ
hosts: all
become: yes
tasks:
- name: Обновление базы данных пакетов
dnf:
update_cache: yes
- name: Установка программ
dnf:
name: "{{ packages_to_install.split() }}"
state: present
vars:
packages_to_install: "{{ programs | default('') }}"
В каталоге с плейбуками создать плейбук: "remove_programs.yml" и добавить код:
---
- name: Удаление программ
hosts: all
become: yes
tasks:
- name: Удаление программ
pacman:
name: "{{ programs.split() }}"
state: absent
Для запуска плейбука ввести команду:
ansible-playbook /etc/ansible/playbooks/remove_programs.yml --ask-become-pass --extra-vars "programs='atop kruler'"
где:
В каталоге с плейбуками создать плейбук: "install_module.yml" и добавить код:
---
- name: Установка модулей
hosts: all
become: true
vars:
packages_to_module: "{{ module | default('') }}"
tasks:
- name: Обновление базы данных Pacman
pacman:
update_cache: yes
- name: Установка модулей
pacman:
name: "{{ packages_to_module.split(' ') }}"
state: present
Для запуска плейбука ввести команду:
ansible-playbook /etc/ansible/playbooks/install_module.yml --ask-become-pass --extra-vars "module='ubm-gitlab-cli ubm-realvnc'"
где:
В каталоге с плейбуками создать плейбук: "create_shortcut.yml" и добавить код:
---
- name: Удаление модулей
hosts: all
become: yes
tasks:
- name: Удаление модулей
pacman:
name: "{{ module.split() }}"
state: absent
Для запуска плейбука ввести команду:
ansible-playbook /etc/ansible/playbooks/install_module.yml --ask-become-pass --extra-vars "module='ubm-gitlab-cli ubm-realvnc'"
где:
Пример создания плейбука, который изменяет имя хоста на всех удаленных машинах используя утилиту ubconfig.
В каталоге с плейбуками создать плейбук: "change_host_name.yml" и добавить код:
---
- name: Изменить имя хоста
hosts: all
become: yes
tasks:
- name: Смена имени хоста
shell: ubconfig set config HOSTNAME=hostname
#или цикличное присваивание имени каждому хосту(pc-1,pc-2,pc-3 и т.д.):
#shell: "ubconfig set config HOSTNAME=pc-{{ play_hosts.index(inventory_hostname) + 1 }}"
В каталоге с плейбуками создать плейбук: "clear_cache.yml" и добавить код:
---
- name: Очистка системного кэша
hosts: all
become: yes
tasks:
- name: Очистка системного кэша
shell: sync; echo 3 > /proc/sys/vm/drop_caches # очищает pagecache, dentries, и inodes
#shell: sync; echo 1 > /proc/sys/vm/drop_caches # Очистить только PageCache
#shell: sync; echo 2 > /proc/sys/vm/drop_caches # Очистить dentries и inodes
#shell: sync; echo 3 > /proc/sys/vm/drop_caches # Очистить pagecache, dentries, и inodes
В каталоге с плейбуками создать плейбук: "clear_user_cache.yml" и добавить код:
---
- name: Очистка пользовательского кэша
hosts: all
become: yes
tasks:
- name: Очистка пользовательского кэша
shell: rm -r /home/*/.cache # удаляет рекурсивно директорию .cache у всех пользователей
- name: Очистка кэша у root
shell: rm -r /root/.cache # удаляет рекурсивно директорию .cache у всех root
В каталоге с плейбуками создать плейбук: "create_shortcut.yml" и добавить код:
---
- name: Создание ярлыка на GIMP-2.10
hosts: all
become: yes
tasks:
- name: Получить список пользователей
command: getent passwd
register: passwd_output
changed_when: false
- name: Создать ярлык GIMP-2.10 # заменить GIMP на нужную программу во всем шаблоне ярлыка
copy:
dest: "/home/{{ item.split(':')[0] }}/Рабочий стол/GIMP-2.10.desktop"
content: |
[Desktop Entry]
Type=Application
Name=GIMP-2.10
Exec=gimp-2.10 %U
TryExec=gimp-2.10
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
StartupNotify=true
loop: "{{ passwd_output.stdout_lines }}"
when: "'/home' in item.split(':')[5]"
- name: Установить атрибут исполняемого файла и владельца # устанавливает владельцем ярлыка пользователя у которого был размещен
file:
path: "/home/{{ item.split(':')[0] }}/Рабочий стол/GIMP-2.10.desktop" # заменить имя созданного ярлыка
mode: "+x"
owner: "{{ item.split(':')[0] }}"
loop: "{{ passwd_output.stdout_lines }}"
when: "'/home' in item.split(':')[5]"
В каталоге с плейбуками создать плейбук: "block_usb_flash.yml" и добавить код:
---
- name: Блокировка подключения USB-устройств
hosts: all
become: yes
tasks:
- name: Создание правила udev
template:
src: usb-flash.rules.j2
dest: /etc/udev/rules.d/99-usb-flash.rules
owner: root
group: root
mode: '0644'
notify: Reload udev
handlers:
- name: Перезагрузка udev
command: udevadm control --reload-rules
В том же каталоге с плейбуками создать файл: "usb-flash.rules.j2" и вставить содержимое:
ACTION=="add", KERNEL=="sd[a-z]*", SUBSYSTEMS=="usb", RUN+="/bin/rm %E{DEVNAME}", ENV{UDISKS_IGNORE}="1"
Правило udev, будет применяться ко всем устройствам с именами вида "sd[b-z]*", которые относятся к подсистеме USB. Это может включать не только USB-флешки, но также и другие USB-устройства, такие как внешние жесткие диски и SSD-накопители, подключенные через USB.
В каталоге с плейбуками создать плейбук: "network_resources.yml" и добавить код:
---
- name: Подключение к сетевому каталогу и монтирование
hosts: all
become: yes
vars:
smb_username: user # логин для подключения по smb
smb_password: ublinux # пароль для подключения по smb
smb_server_ip: 192.168.215.13 # адрес сервера
smb_share_name: share # каталог подключения
mount_point: /home/share # каталог монтирования
tasks:
- name: Подключение к сетевому каталогу
command: smbclient -U {{ smb_username }}%{{ smb_password }} -L //{{ smb_server_ip }}/{{ smb_share_name }} -c 'exit'
register: smb_output
failed_when: smb_output.rc != 0
- name: Создание директории /home/share (если отсутствует)
file:
path: "{{ mount_point }}"
state: directory
mode: "0777"
- name: Проверка состояния монтирования
command: mountpoint -q "{{ mount_point }}"
register: mount_status
changed_when: false
failed_when: false
ignore_errors: true
delegate_to: localhost
- name: Монтирование сетевой папки
command: sudo mount -t cifs //192.168.215.13/share /home/share -o username=user,password=ublinux,file_mode=0777,dir_mode=0777
when: mount_status.rc != 0
В каталоге с плейбуками создать плейбук: "password_complexity.yml" и добавить код:
---
- name: Настройка сложности паролей
hosts: all
become: yes
tasks:
- name: Задать минимальную длину пароля в pwquality.conf
lineinfile:
path: /etc/security/pwquality.conf
regexp: '^minlen ='
line: 'minlen = 12'
- name: Задать минимальное количество классов символов в pwquality.conf
lineinfile:
path: /etc/security/pwquality.conf
regexp: '^minclass ='
line: 'minclass = 3'
- name: Задать максимальное количество повторяющихся символов в pwquality.conf
lineinfile:
path: /etc/security/pwquality.conf
regexp: '^maxrepeat ='
line: 'maxrepeat = 3'
В каталоге с плейбуками создать плейбук: "password_expiration_date.yml" и добавить код:
---
- name: Настройка срока действия пароля
hosts: all
become: yes
tasks:
- name: Получить список пользователей с UID от 1000 до 1100
shell: "getent passwd | awk -F: '$3 >= 1000 && $3 <= 1100 { print $1 }'"
register: real_users_output
changed_when: false
- name: Установить срок действия паролей на 90 дней # Каждые 90 дней будет запрашиваться новый пароль
command: chage -M 90 {{ item }}
loop: "{{ real_users_output.stdout_lines }}"
В каталоге с плейбуками создать плейбук: "connecting_proxy.yml" и добавить код:
---
- name: Подключение к прокси-серверу
hosts: all
become: yes
tasks:
- name: Подключение к прокси-серверу для протоколов HTTPS
shell: ubconfig set network PROXY_SYSTEM[https]='http://user:password@192.168.1.1:3128'
Где:
Для применения требуется повторная авторизация в удаленных системах.
В каталоге с плейбуками создать плейбук: "change_wallpaper.yml" и добавить код:
---
- name: Изменение фона рабочего стола
hosts: all
become: yes
tasks:
- name: Копирование фонового изображения
copy:
src: /путь/до/изображения/wallpaper.jpg # путь до изображения на управляющей машине
dest: /путь/до/изображения/wallpaper.jpg # путь до изображения на управляемой машине
- name: Изменение фона рабочего стола
shell: ubconfig set theme BACKGROUND_DE='/путь/до/изображения/wallpaper.jpg'
Где:
Для применения нового фона рабочего стола требуется повторная авторизация в удаленных системах.
В каталоге с плейбуками создать плейбук: "access_console.yml" и добавить код:
---
- name: Ограничение доступа к консоли
hosts: all
become: yes
tasks:
- name: Ограничение доступа к консоли
shell: ubconfig set security ACCESS_DENIED_VTX11=yes
Для применения требуется повторная авторизация в удаленных системах.
В каталоге с плейбуками создать плейбук: "execute_bash.yml" и добавить код:
---
- name: Выполнение Bash-скриптов
hosts: all
become: yes
tasks:
- name: Запустить скрипт
script: /etc/ansible/playbooks/backup_project.sh # путь до Bash-скрипта на управляющей машине
Для примера использовался bash-скрипт архивации каталога с проектом:
#!/bin/bash
# Устанавливаем переменные:
# Путь к каталогу, который архивируется:
source_dir="/home/superadmin/project/ubl-settings-logging"
# Путь к каталогу, где сохраняются резервные копии:
backup_dir="/home/backup_project"
# Генерация имени архива с текущей датой и временем:
backup_file="backup_$(date +\%Y\%m\%d_\%H\%M\%S).tar.gz"
# Создаем архив с использованием tar и сжимаем его с gzip:
tar -czf "$backup_dir/$backup_file" "$source_dir"
# Удаляем архивы, старше 7 дней, из каталога с резервными копиями
find "$backup_dir" -type f -name "backup_*.tar.gz" -mtime +7 -exec rm {} \;
Пример актуален для систем со средой рабочего стола Xfce.
В каталоге с плейбуками создать плейбук: "session_blocking.yml" и добавить код:
---
- name: Блокировка сессии по времени
hosts: all
become: yes
tasks:
- name: Установка блокировки сессии через 15 минут после бездействия
shell: ubconfig set kiosk XFCE4_XFCONF[%users:xfce4-screensaver:/saver/idle-activation/delay]=int:15
Где:
Для применения требуется повторная авторизация в удаленных системах.
В каталоге с плейбуками создать плейбук: "blocking_programs.yml" и добавить код:
---
- name: Блокировка сессии по времени
hosts: all
become: yes
tasks:
- name: Установка блокировки сессии через 15 минут после бездействия
shell: ubconfig set security ACCESS_DENIED_EXEC[/usr/bin,/usr/bin/local]=xarchiver
Где:
Для применения требуется повторная авторизация в удаленных системах.
В каталоге с плейбуками создать плейбук: "recovery_mode.yml" и добавить код:
---
- name: Включение режима восстановления
hosts: all
become: yes
tasks:
- name: Включение режима восстановления
shell: ubconfig set boot GRUB_DEFAULT='Загрузка базовых модулей HDD, без настроек пользователя'
Где:
Подробнее о режимах восстановления: Меню восстановления.
Установить можно отдельным пакетом:
Для установки следует воспользоваться утилитой "Установка и удаление программ".
Пакет, необходимый для установки:
Внимание! Если система загружена в режиме полного сохранения, то внесенные изменения в систему будут сохранены. Если режим загрузки другой, то рекомендуется воспользоваться "Сохранением изменений".