Использование Ansible стать паролем в задаче

Мой playbook вызывается с помощью --ask-become-pass. Новый пароль предоставляется через переменную среды на управляющей машине.

Все отлично работает для многих задач, требующих повышения привилегий. Однако есть одна или две задачи, требующие ввода пароля непосредственно как часть команды. Например. Я надеялся, что смогу использовать что-то вроде: command: /foo/bar autoLoginUser {{ ansible_become_pass }}

...но получаю следующее: В задаче есть опция с неопределенной переменной. Ошибка: «ansible_become_pass» не определен.

Я бы не хотел дублировать этот пароль в Хранилище, если я могу помочь.


person mc7h    schedule 17.11.2020    source источник


Ответы (2)


Есть еще один способ ввести пароль. Согласно документации:

  • предоставление параметра командной строки --ask-become-pass
  • установка переменной соединения ansible_become_password

Эту переменную можно установить в инвентаре, например:

webserver01 ansible_user=ansible ansible_become_password=secret

Или подставляется из командной строки вместо --ask-become-pass. Вот так:

export MY_PASSWORD=secret
ansible-playbook myplaybook.yml -e "ansible_become_password=$MY_PASSWORD"

Поскольку эта переменная теперь установлена, вы можете выполнять такие задачи, как:

command: "/foo/bar autoLoginUser {{ ansible_become_password }}"
person seshadri_c    schedule 17.11.2020

Если вы используете переменную среды, вы можете использовать lookup, как показано ниже.

- name: Execute command
  command: /foo/bar autoLoginUser {{ lookup('env', 'YOUR_VAR') }}
person gary lopez    schedule 17.11.2020
comment
Спасибо @gary-lopez Я подумал об этом - вероятно, это мой план Б - единственная проблема в том, что разработчикам (которые знают пароль) немного неудобно использовать его напрямую. - person mc7h; 17.11.2020