0

ansible

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

Большинство действий в наборах инструкций системы управления конфигурациями 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

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

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

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

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

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

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

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

ssh
Next Story

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

Latest from Blog

Игра системный администратор

docker run -p 8080:8080 -p 3390:3389 –name play-adobe-flash-after-eol jchprj/play-adobe-flash-after-eolзайти localhost:8080, и открыть эту страницу, или https://serveradmin.ru/files/sysadmin.swf

Что делать, когда на сервере кончаются файловые дескрипторы (inode)

Нередки случаи, когда причиной проблем на сервере становится переполнение файловых дескрипторов (inode). Симптомы точно такие же, как при переполнившемся диске, только вот диск при этом может оказаться свободным. Количество inode каждой файловой системы определяется при разворачивании ОС.

CI/CD для начинающих: деплой React-приложения

Следующий шаг после разработки веб-приложения — размещение его на сервере. Независимо от сложности проекта или используемой инфраструктуры, общий процесс остается одинаковым: нужно «упаковать» код в CI/CD-конвейер и отправить на сервер. В тексте рассмотрим,

Настройка iptables в Linux от Selectel

Рассмотрим использование наиболее популярного в дистрибутивах Linux межсетевого экрана iptables. Эта инструкция — часть курса «Введение в сетевую безопасность». Смотреть весь курс Рассмотрим использование наиболее популярного в дистрибутивах Linux межсетевого экрана iptables

nginx и apache на одном сервере

В этом руководстве мы рассмотрим процедуру установки и настройки работы двух web-серверов с целью использования преимуществ каждого из них, где Nginx – как frontend и Apache – как backend. Установка и настройка
Go toTop

Don't Miss

ansible

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

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

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

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