Ansible получить имя пользователя из командной строки

В моих плей-листах я часто ссылаюсь на имя пользователя (исключительно на его "ubuntu" ).

Есть ли встроенный способ сказать "получить его из значения, переданного в командной строке"?

Я знаю, что могу сделать

ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"

а затем я могу использовать {{user}} в playbook, но он чувствует странное определение пользователя дважды.

Ответы

Ответ 1

Как заявил Вудхэм, переменная, представляющая подключаемый пользователь,

{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )

Но вам не обязательно определять его в файле инвентаризации как таковой.

Вы можете определить его в:

1. Ваша игра, если вы используете загрузочную книжку: См. руководство по Playbooks

- name: Some play
  hosts: all
  remote_user: ubuntu

2. В файле инвентаря: См. руководство по инвентаризации

[all]
other1.example.com     ansible_user=ubuntu (Ansible < 2.0 was ansible_ssh_user)

3. Как вы сказали, в командной строке:

ansible-playbook -i inventory -u ubuntu playbook.yml

4. Аналоговый файл конфигурации как директива remote_user. См. руководство по файлу конфигурации

Аналоговый файл конфигурации может быть помещен в текущую папку ansible.cfg, ваш homedir .ansible.cfg или /etc/ansible/ansbile.cfg.

[defaults]
remote_user=ubuntu

Ответ 2

Я считаю, что стандартный способ сделать это будет определять ansible_ssh_user в файле инвентаризации, и вы можете ссылаться на него как {{ansible_ssh_user}} в playbook.