В моей сети есть один сервер (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!"
}
ansible_ssh_user
или все другие варианты, которые вы пробовали? - person Zeitounator   schedule 18.03.2021{{ ansible_user }}
действительно определен. - person tariver   schedule 18.03.2021