我是ansible的新手
我们通过ansible进行部署,并为部署配置了一个堡垒机主机。
我目前使用的方法是在堡垒机主机上克隆ansible存储库并从该文件夹运行命令。
我的问题是是否可以通过本地计算机通过堡垒机运行ansible代码?
(基本上,避免在堡垒机主机上使用存储库)
我是ansible的新手
我们通过ansible进行部署,并为部署配置了一个堡垒机主机。
我目前使用的方法是在堡垒机主机上克隆ansible存储库并从该文件夹运行命令。
我的问题是是否可以通过本地计算机通过堡垒机运行ansible代码?
(基本上,避免在堡垒机主机上使用存储库)
172.20.0.1
来为几台虚拟机172.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
,我现在不确定),您将看到Ansible正在运行的SSH命令。
注2:ProxyJump需要最新的OpenSSH,至少是6.7,如果我记得正确的话。
-J
是ProxyJump的CLI选项)。 - RémyProxyJump bastion
相当于 ~/.ssh/config
中的 ProxyCommand ssh -W %h:%p bastion
。
如果你想了解如何使用堡垒机运行 Ansible,这篇博客文章非常有帮助:https://blog.scottlowe.org/2015/12/24/running-ansible-through-ssh-bastion-host/ - SmartTomhost remoto : 10.0.1.121
user remoto : application_user
ssh key : app_ssh_key
host bastian : 212.34.345.12
user bastian : bastian_user
ssh key: bastian_ssh_key
使用密钥通过ssh访问(必须将密钥存储在安全的存储设备中,而不是与ansible playbook一起存储)。
$ ssh application_user@10.0.1.121 -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"
你可以使用两种方法:
对于清单机器/组,使用变量以便为不同的机器/组有不同的连接选项。
添加到清单文件:
[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"
适用于所有清单机器的单个配置。
添加到/替换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"