В незадаче, как мне получить переменную с именем пользователя, который работает как возможно?
Я создаю сценарий процесса развертывания, в котором используется имя пользователя, запускающего ansible script (например, tlau), и создается каталог развертывания в удаленной системе на основе этого имени пользователя и текущей даты/времени (например, tlau- развернуть-2014-10-15-16:. 52)
Вы считаете, что это доступно в доступных фактах (например, LOGNAME или SUDO_USER), но все они настроены как "root", или идентификатор развертывания, который используется для ssh в удаленной системе. Ни один из них не содержит локального пользователя, тот, кто в настоящий момент запускает незатронутый процесс.
Как я могу script получить имя пользователя, выполняющего незатронутый процесс, и использовать его в своей книге?
Ответы
Ответ 1
Если вы имеете в виду имя пользователя в главной системе, я предполагаю, что вы можете просто запустить локальное действие:
- name: get the username running the deploy
become: false
local_action: command whoami
register: username_on_the_host
- debug: var=username_on_the_host
В этом примере вывод команды whoami
регистрируется в переменной с именем "username_on_the_host", а имя пользователя будет содержаться в username_on_the_host.stdout
.
(задача отладки здесь не требуется, она просто демонстрирует содержимое переменной)
Ответ 2
Если вы gather_facts
, которые по умолчанию включены для воспроизведения, существует встроенная переменная, которая задана как ansible_user_id
которая предоставляет имя пользователя, в котором выполняются задачи. Затем вы можете использовать эту переменную в других задачах или шаблонах с помощью {{ ansible_user_id }}
. Это избавит вас от необходимости запуска задачи для регистрации этой переменной.
См.: http://docs.ansible.com/playbooks_variables.html#information-discovered-from-systems-facts
Ответ 3
Во всех шаблонах я делаю что-то вроде следующего:
# Placed here by {{ lookup('env','USER') }} using Ansible, {{ ansible_date_time.date }}.
При шаблоне над ним отображается как:
# Placed here by staylorx using Ansible, 2017-01-11.
Если я использую {{ ansible_user_id }}
, и я стал root, то эта переменная указывает "root", а не то, что я хочу большую часть времени.