我的组织有一个适当的策略,该策略允许“仅”以下ssh命令起作用。
ssh -i /tmp/private.key -t user2@host2 bash --noprofile
我试图修改ansible库存主机文件以构建上述ssh。请在下面查看我的ansible主机文件:
host2 ansible_ssh_common_args="-t -o UserKnownHostsFile=/dev/null" ansible_shell_executable=sh ANSIBLE_HOST_KEY_CHECKING=false ansible_ssh_private_key_file=/tmp/private.key USER_RUN=user2
我也尝试了以下方法,但它们也失败了
ansible_shell_executable=/bin/bash
ansible_ssh_extra_arg=.....
我的ansible版本是:
ansible --version
ansible 2.7.1
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/user1/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Sep 12 2018, 05:31:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
在调试中,我看到由ansible构造的ssh没有
bash --noprfile
user2 @ target2之后
请帮助提供解决方案。
答案 0 :(得分:1)
要实现此目的,您可以通过以下方式为特定主机设置远程外壳程序:
库存
some_host ansible_shell_executable="/bin/bash --noprofile"
other_host ansible_shell_executable="/bin/bash --noprofile"
或通过以下方式全局
ansible.cfg
executable = /bin/bash --noprofile
更多信息,请参见右侧的documentation。
请注意,ansible还会在后台进行sftp
转移。
恕我直言,如果您想在组织中使用ansible,则更改政策是合理的。