ansible - Ansible 使用具有不同 ansible_ssh_common_args 的 delegate_to
问题描述
我正在尝试从我的 ansible master 运行到主机(我们称之为 hostclient),这需要在另一台主机上执行某些操作(我们称之为 susemanagerhost :))。
hostclient 需要ansible_ssh_common_args
完整的 proxycommand,而 susemanager host 不需要,ansible_ssh_common_args
因为它是直接连接。
所以我想我可以使用delegate_to
,但是名为 hostclient 的主机和名为 susemanagerhost 的主机具有不同的变量值ansible_ssh_common_args
。
我想我可以用of to更改ansible_ssh_common_args
运行内部的值(因为我想恢复其他标准任务的原始值)然后到(从 ansible master 到 susemanager 主机的连接是直接连接,不需要 proxycommand ) 但它不起作用。
似乎它仍在使用.set_fact
ansible_ssh_common_args
ansible_ssh_common_args_backup
ansible_ssh_common_args
null
ansible_ssh_common_args
解决方案
ansible_ssh_common_args
通常用于“通过”代理服务器执行命令:
<ansible system> => <proxy system> => <intended host>
您提出问题的方式不需要使用ansible_ssh_common_args
并且可以坚持使用delegate_to
:
- name: execute on host client
shell: ls -la
- name: execute on susemanagerhost
shell: ls -la
delegate_to: "root@susemanagerhost"
调用这个游戏:
ansible-playbook <play> --limit=hostclient
这应该这样做。
编辑:在 github 上提交错误后,工作解决方案是:
ansible_ssh_common_args: '-o StrictHostKeyChecking=no -o ProxyCommand="ssh -W %h:%p -i ~/.ssh/id_rsa ansible@{{ jumphost_server }}"'
在host_vars
或group_vars
。其次是静态使用delegate_to
:
delegate_to: <hostname>
hostname
应该是 ansible 使用的主机名。
但不使用:
delegate_to: "username@hostname"
这解决了我的问题,希望它也适合你。
推荐阅读
- arrays - 为什么 MATCH 函数不能在 Excel 中使用数组公式达到预期效果?(附上例子)
- php - CentOS 7 无法连接 clamd.sock 文件(权限被拒绝错误)
- exchange-server - 在列表上使用 $filter
Outlook 日历 - node.js - 如果两个模型关联时发生名称冲突怎么办?
- java - 使用 IntelliJ 代替 eclipse
- xml - “序言中不允许内容”错误,但在 XML 声明之前没有任何内容
- python-3.x - 如何从命令行的不同行重新启动暂停的 python 程序
- indexing - 是否可以索引框架集、新闻提要或 Iframe 页面
- php - 无法重新加载 nginx.service:需要交互式身份验证
- php - Laravel 迁移在 Ubuntu 服务器上失败,但在 wamp 上没有