Ansible:通过bastion主机从本地主机执行playbook
我是ansible的新手 我们正在通过ansible进行部署,并为部署配置了一台堡垒主机 我目前使用的方法是克隆bastion主机中的ansible repo并从该文件夹运行命令 我的问题是,是否可以通过bastion通过本地机器运行ansible代码Ansible:通过bastion主机从本地主机执行playbook,ansible,Ansible,我是ansible的新手 我们正在通过ansible进行部署,并为部署配置了一台堡垒主机 我目前使用的方法是克隆bastion主机中的ansible repo并从该文件夹运行命令 我的问题是,是否可以通过bastion通过本地机器运行ansible代码 (基本上,避免bastion主机中的repo)假设您希望在开发环境中通过172.20.0.1bastion提供两个VM172.20.0.10和172.20.0.11。您的库存看起来有点像这样 [development] 172.20.0.10 1
(基本上,避免bastion主机中的repo)假设您希望在开发环境中通过
172.20.0.1
bastion提供两个VM172.20.0.10
和172.20.0.11
。您的库存看起来有点像这样
[development]
172.20.0.10
172.20.0.11
然后您可以编辑~/.ssh/config
并添加
Host bastion
Hostname 172.20.0.1
User youruser
Host 172.20.*
ProxyJump bastion
User youruser
然后,您可以测试一个ssh 172.20.0.10
,它会让您进入第一个虚拟机。如果它适用于SSH,Ansible也应该适用
注意,您可以使用-vvv
运行ansible(或者它是另一个v
,不确定是atm),您将看到SSH命令ansible正在运行
注意2,ProxyJump需要最新的OpenSSH,如果我没有记错的话,至少需要6.7版本
使用ssh访问密钥(您必须将密钥存储在安全的存储中,而不是ansible playbook)
在一个ssh命令中
在ansible
您可以使用两种方法:
方法1
为库存机器/组使用变量,以便为不同的机器/组提供不同的连接选项
添加到库存文件:
[remote-vm]
10.0.1.121
[remote-vm:vars]
ansible_ssh_user=application_user
ansible_ssh_private_key_file=path/to/app_ssh_key
ansible_ssh_common_args= -o ProxyCommand="ssh -q bastian_user@212.34.345.12 -i path/to/bastian_ssh_key -W %h:%p"
方法2
单一配置对所有库存机器有效
在ansible.cfg
中添加/替换:
[defaults]
remote_user = application_user
[ssh_connection]
ssh_args=-i path/to/app_ssh_key -o ProxyCommand="ssh -q bastian_user@212.34.345.12 -i path/to/bastian_ssh_key -W %h:%p"
是的,您可以,您可以使用ssh代理安装或ssh转发您可以从您的主机解释一下吗?在您的项目ansible中,您可以使用ProxyCommand ssh-W%h:%p bastion.test.comSo ansible应安装在bastion主机中??不在本用例中是的,ProxyJump只是ProxyCommand最常见情况的现代快捷方式。但我手头没有这个例子。但是在命令行上,
ssh-J Jumphost FooServer
相当于ssh-o ProxyCommand=“ssh-W%h:%p Jumphost”FooServer
(-J
behing ProxyJump的CLI选项)是的,就是这样:ProxyJump bastion
相当于ProxyCommand ssh:%p bastion
中的/.ssh/config
。如果您想了解有关如何使用bastion运行ansible的更多信息,此博客非常有用:此解决方案仅在本地计算机上工作。。。您必须将ssh配置(~/.ssh/config)复制到另一台机器上才能运行ansible…更好的解决方案是直接在ansible.conf中配置jump o proxy命令
[remote-vm]
10.0.1.121
[remote-vm:vars]
ansible_ssh_user=application_user
ansible_ssh_private_key_file=path/to/app_ssh_key
ansible_ssh_common_args= -o ProxyCommand="ssh -q bastian_user@212.34.345.12 -i path/to/bastian_ssh_key -W %h:%p"
[defaults]
remote_user = application_user
[ssh_connection]
ssh_args=-i path/to/app_ssh_key -o ProxyCommand="ssh -q bastian_user@212.34.345.12 -i path/to/bastian_ssh_key -W %h:%p"