Ansible — playbooks
Создадим первый playbook для автоматического выполнения, например автоматизируем apt — обновим весь софт и установим новый. Создадим файл test-apt.yaml и введем в него конфиг ниже.
Количество пробелов ВАЖНО!
Пример с APT
---
- hosts: test
become: yes
tasks:
- name: update and upgrade
apt:
update_cache: yes
upgrade: dist
autoclean: yes
autoremove: yes
- name: install
apt:
name: "{{ packages }}"
vars:
packages:
- htop
- nano
- iotop
hosts — указывает на узлы, к которым будет применен данный скриптbecome — если кратно — аналог sudo или su
update_cache — сделать apt update
upgrade — сделать apt upgrade
autoclean — сделать autoclean
autoremove — сделать autoremove
name: «{{ packages }}» — установить пакеты, объявленные в packages
vars:packages: — переменные этой задачи
Пример операций с файлами
Ещё один пример. Создадим файл copyrsa.yml и попробуем автоматизировать копирование файлов и их редактирование.
---
- hosts: test
become: yes
tasks:
- name: copy rsa-file
copy:
src: /home/user/.ssh/authorized_keys
dest: /home/user/.ssh/authorized_keys
owner: user
group: user
mode: u=rw,g=rw,o=r
- name: sshd_config
copy:
src: /etc/ssh/sshd_config
dest: /etc/ssh/sshd_config
owner: root
group: root
mode: u=rw,g=r,o=r
- name: change text line
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^PasswordAuthentication'
line: 'PasswordAuthentication=no'
- name: restart sshd
systemd:
name: sshd
state: restarted
daemon_reload: yes
copy - операция копирования файлов из localhost на удаленную машину.
В примере я копирую два файла authorized_keys и sshd_configsrc - пусть для файла который будет скопирован
dest - путь копирования
owner - владелец
group - группа владельца
mode - права на файл
lineinfile - тут интереснее, операция поиска строки в файле и её замены. В примере я ищу строку по паттерну PasswordAuthentication и заменяю её на PasswordAuthentication=no
path - путь до файла
regexp - паттерн для поиска
line - текст для замены
systemd - позволяет управлять systemd, в моем примере он перезагрузит sshd.
name - имя сервиса
state - задать его статус
Запуск playbook производится так:
ansible-playbook -v test-apt.yml --ask-become-pass
Где:-v выводит на экран информацию по выполнению --ask-become-pass - спросить пароль для sudo, если используется become внутри файла