我正在尝试在 ansible 中运行剧本,并想在 ssh-args 中传递两个参数,但看起来失败了。
我想传递的论点是:
ansible-playbook provisioning/ec2.yml -i ec2.py --private-key KEY.pem --ssh-common-args '-o "StrictHostKeyChecking=no proxycommand ssh -W %h:%p -i KEY.pem [email protected]"' --skip-tags=ansible -vvvv
但是看起来它失败了,因为连接永远不会发生,如果我仅使用
proxycommand
运行它它就可以工作,只是我需要在主机验证过程中输入 yes 。
ansible-playbook provisioning/ec2.yml -i ec2.py --private-key KEY.pem --ssh-common-args '-o " proxycommand ssh -W %h:%p -i KEY.pem [email protected]"' --skip-tags
谢谢
要将多个选项传递给 ssh,必须多次传递
-o
reference.-,%2Do%20option,-Can%20be%20used)。
我的 ansible 库存中有这个工作:
# hosts.yaml
ansible_ssh_common_args: -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
我相信命令行版本会这样做:
ansible-playbook provisioning/ec2.yml ... --ssh-common-args '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' ...
或者就你的情况而言,我认为这会起作用:
ansible-playbook provisioning/ec2.yml ... --ssh-common-args '-o StrictHostKeyChecking=no -o ProxyCommand="ssh -W %h:%p -i KEY.pem [email protected]"' ...
(假设代理命令正确,请使用正常的 ssh 连接来验证)