Ansible — playbooks

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_config
src - пусть для файла который будет скопирован
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 внутри файла

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *