Использование remote_user в ansible_ssh_common_args в файле инвентаризации

В моей сети есть один сервер (server2), к которому нельзя получить прямой доступ. Сначала вам нужно установить ssh на server1, а оттуда на server2.

В моем файле конфигурации есть следующая строка:

remote_user = foo.bar

Мой инвентарь:

 hosts:
   server1:
     ansible_host: 10.0.0.1
   server2:
     ansible_host: 10.0.0.2
     ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q [email protected]"'

Это нормально работает, но я не хочу, чтобы имя пользователя было жестко заданным. здесь и здесь там являются примерами, которые remote_user можно передать через {{ ansible_ssh_user }}, но я не могу заставить его работать.

Что я пробовал:

ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q {{ ansible_ssh_user }}@10.0.0.1"'

Также пробовал {{ ansible_user }} и {{ user }}. Но когда я запускаю ansible server2 -m ping, я получаю сообщение об ошибке

"The field 'ssh_common_args' has an invalid value, which includes an undefined variable. The error was: 'ansible_user' is undefined"

Можно ли использовать пользователя, определенного remote_user в ansible_ssh_common_args?

P.S. ansible server1 -m ping отлично работает.

P.P.S. Написал playbook для тестовых целей:

- name: Playbook to test default user
  hosts: all
  gather_facts: false

  tasks:
  - name: Print default users
    debug:
      var: ansible_user

Когда я бегу ansible-playbook test-default-user.yml --limit server1, я получаю

ok: [server1] => {
    "ansible_user": "foo.bar"
}

Также работает с ansible_ssh_user, но всего за {{ user }} я получаю

ok: [server1] => {
    "user": "VARIABLE IS NOT DEFINED!"
}

person tariver    schedule 18.03.2021    source источник
comment
Как и где именно вы объявили ansible_ssh_user или все другие варианты, которые вы пробовали?   -  person Zeitounator    schedule 18.03.2021
comment
Насколько я понял, это определено в файле конфигурации. См., Например, здесь.   -  person tariver    schedule 18.03.2021
comment
Добавлен P.P.S. с помощью тестового сценария, чтобы показать, что {{ ansible_user }} действительно определен.   -  person tariver    schedule 18.03.2021


Ответы (1)


Написал этот вопрос в список рассылки Ansible и получил ответ от разработчика. https://groups.google.com/g/ansible-project/c/fY5lAHCEHfA

Вкратце - так работать не должно. В функции будет специальный компонент для запроса настроек плагина.

person tariver    schedule 13.04.2021