0

ansible

Ansible: ввод sudo-пароля при выполнении playbook

13.09.2022

Большинство действий в наборах инструкций системы управления конфигурациями Ansible следует выполнять с привилегиями суперпользователя. Давайте разберемся с вариантами ввода sudo-пароля при выполнении playbook’ов!

Самый простой способ — отключить необходимость ввода пароля при использовании sudo. Делается это в конфигурационном файле /etc/sudoers, где нужно добавить (или раскомментировать) строку:

...
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
...

Второй вариант — использовать дополнительные параметры при запуске набора инструкций. Чтобы Ansible в нужный момент попросил ввести sudo-пароль, в старых версиях (< 1.9) следует использовать параметр -—ask-sudo-pass (или -K), а в версии Ansible старше 1.9 параметр --ask-become-pass, например:

ansible-playbook playbooks/useradd.yml --ask-become-pass

Бывают случаи, когда не подходит ни один из предложенных вариантов — отключать ввод пароля при использовании sudo небезопасно, а вводить пароль на каждое действие при выполнении набора инструкций неудобно (к тому же, можно ошибиться при ручном вводе).

Я использовал третий вариант — добавил буквально пару строк в инвентарном файле, теперь он выглядит следующим образом:

[all:vars]
ansible_sudo_pass=VeryStrongPassword
 

[webservers]

web1 web2 web3

[mailservers]

mail1 mail2 mail3

[database]

db1 db2

[others]

stat mars venus earth

Следует отметить, что переменную ansible_sudo_pass можно переопределять в нескольких местах:

  • для каждого отдельного хоста в инвентарном файле inventory/inventoryname/hosts;
  • для группы хостов в инвентарном файле inventory/inventoryname/groups (как раз наш случай);
  • для группы хостов в файле групповых переменных group_vars/groupname/ansible.yml;
  • для группы хостов в файле групповых переменных в зашифрованном виде ansible-vault create group_vars/groupname/ansible.yml.

Если хочется еще больше «безопасности» и зашифрованный пароль, то следует использовать ansible-vault.

Сначала создадим файл, в котором будет храниться пароль для получения привилегий суперпользователя:

ansible-vault create secret

В созданный файл secret следует добавить строку вида:

ansible_sudo_pass: VeryStrongPassword

И, так как мы все равно не хотим вводить пароль при запуске плейбука (даже пароль ansible-vault), то создадим файл vault.txt (не забываем выставить корректные права доступа):

touch vault.txt

В котором в текстовом виде запишем свой пароль от ansible-vault.

Далее приводим playbook к примерно такому виду:

---
- hosts: all
  become: yes
 
  vars_files:
    - secret
 
  tasks:
  - name: Add user to remote hosts
    user: name=admin groups=sudo shell=/bin/bash password=$7$ZIJUvGwr$empMJ4r1JUGcxmjxtTBfTpIdO95JBTJO2/BtD23F2Rfeg2rqN.8t1v3ePPXVl.W7yal2fvrtbJ0T18YwCXmbh0
 
  - name: Add SSH keys to remote hosts
    authorized_key: user=admin key="{{ lookup('file', "~/Downloads/key.pub") }}"

Теперь можно запускать выполнение набора инструкций командой:

ansible-playbook playbooks/useradd.yml --vault-password-file=vault.txt

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

1 ansible 2K views

Знакомство с Ansible. Часть 1: Введение

Ansible – одна из систем управления конфигурациями (автоматизации настройки и развертывания серверов). Особенность Ansible – наличие управляющего сервера, с которого отправляются команды или наборы инструкций
2 ansible 1.4K views

Знакомство с Ansible. Часть 4: модули

Мы уже справились установкой системы управления конфигурациями Ansible, написали первый набор инструкций (playbook) и разобрали результат его выполнения, а также ознакомились с использованием переменных в Ansible. В этой части
3 ansible 1.1K views

Знакомство с Ansible. Часть 3: переменные

В первой части знакомства с Ansible мы успешно установили систему управления конфигурациями и написали первый playbook, во второй части разобрали результат выполнения нашего набора инструкций и научились повторно
ansible
Previous Story

Добавление учетных записей с помощью Ansible

ssh
Next Story

Настройка SSH сервера в Windows

Latest from Blog

Поиск и замена URL в MYSQL

Используйте сценарии MySQL для поиска и замены URL-адресов в базе данных Другой способ поиска и замены старых URL-адресов в базе данных – использование сценариев MySQL. Этот метод очень полезен, если у вас

POSTGRESQL 16 + CЕРВЕР 1С X64 И 1С 8.3.24

Для начала, в какой среде будем работать: Наша задача: Предполагается, что Debian на который мы установим как PostgreSQL так и Сервер 1С установлен (Установка по умолчанию). Для начала проверим «локаль»: Как видим

HADOOP

Hабор инструментов для разработки программ и обеспечения среды для их запуска в распределенной среде. Позволяет создавать большие кластеры и упрощает процесс управления ими. Является одним из элементов конвейеров обработки больших данных. Разработан на Java фондом Apache

Обновление mySQL с версии 5.7 до 8.0

Сами процедуры могут немного различаться в зависимости от операционной системы, поэтому приведенные ниже шаги ориентированы на общую схему и могут потребовать некоторых адаптаций. Создание резервной копии данных в MySQL можно выполнить с

11 советов по настройке файла wp-config.php

Скорость: Отключите сохраненные версии… Сейчас! Функция сохранения версий записей включена по умолчанию, но может привести к значительному “раздуванию” базы данных. Сохраненные версии существуют для того, чтобы вы могли откатиться к предыдущей версии записи,
Go toTop

Don't Miss

ansible

Добавление учетных записей с помощью Ansible

Ранее мы уже рассматривали несколько вариантов использования системы управления конфигурациями Ansible,
ansible

Знакомство с Ansible. Часть 5: роли, условия и циклы

В первой части знакомства с Ansible мы разобрались с установкой и базовой настройкой системы