在清单文件中的 `ansible_ssh_common_args` 中使用 `remote_user`
Using `remote_user` in `ansible_ssh_common_args` in inventory file
在我的网络中有一台服务器(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 foo.bar@10.0.0.1"'
这很好用,但我不想对用户名进行硬编码。 Here and here 有例子表明 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"
是否可以在 ansible_ssh_common_args
中使用 remote_user
定义的用户?
P.S。 ansible server1 -m ping
工作正常。
P.P.S。为测试目的编写了剧本:
- 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 邮件列表并得到了开发者的答复。
https://groups.google.com/g/ansible-project/c/fY5lAHCEHfA
简短摘要 - 它不应该以这种方式工作。在功能中会有一个特殊的组件来查询插件设置。
在我的网络中有一台服务器(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 foo.bar@10.0.0.1"'
这很好用,但我不想对用户名进行硬编码。 Here and here 有例子表明 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"
是否可以在 ansible_ssh_common_args
中使用 remote_user
定义的用户?
P.S。 ansible server1 -m ping
工作正常。
P.P.S。为测试目的编写了剧本:
- 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 邮件列表并得到了开发者的答复。 https://groups.google.com/g/ansible-project/c/fY5lAHCEHfA
简短摘要 - 它不应该以这种方式工作。在功能中会有一个特殊的组件来查询插件设置。