我正试图使用Ansible剧本在专用子网上提供2个ec2实例。我的基础设施包括:
- 公用子网上的堡垒主机
- 2个私有子网上的2个EC2实例
- 用于传出连接的NAT门
- 应用程序负载平衡器
我的问题是如何从localhost运行Ansible剧本来影响私有实例。我可以SSH转发剧本吗?还是剧本必须驻留在堡垒主机中,然后使用私有IP作为主机?
创建ssh配置文件~/.ssh/config
,然后将以下行添加到配置文件
host bastion
HostName bastion_ip
User bastion_user
identityFile ~/.ssh/mykey.pem
host private_instance
HostName 10.0.0.11
user private_ec2_user
ProxyCommand ssh bastion -W %h:%p
identityFile ~/.ssh/mykey.pem
我的问题是如何从localhost到影响私有实例。
现在您已经配置了ssh config
文件,键入所需的全部内容
ssh private_instance
这将创建到您的私有实例的SSH隧道,您不需要每次都键入复杂或冗长的命令。
Ansible允许使用SSH配置选项,当尝试将命令从堡垒转发到私有子网主机时,ProxyCommand可以进行救援。以下是的示例
ssh -o ProxyCommand="ssh ubuntu@52.50.10.5 'nc 192.168.0.20 22'" ubuntu@nothing
例如,上面的命令将首先通过SSH连接到52.50.10.5,然后在端口22上打开一个到192.168.0.20的套接字。套接字连接(连接到远程SSH服务器(然后传递给原始SSH客户端命令调用以使用。
来源:https://spin.atomicobject.com/2016/05/16/ansible-aws-ec2-vpc/