外网Ansible服务器经过堡垒机管理内网中的服务器,ansible堡垒


外网的Ansible经过堡垒机配置内网中的服务器:
    正常情况下,Ansible会通过ssh密钥的方式,管理同一网段中的服务器。但是,存在这种情况,即企业中在每个省都有自己的服务器,但是各省只有少数几台服务器,并且这几台服务器中,有一台是代理服务器,管理员,通过代理服务器,跳到内网中的服务器,实现管理操作的。Ansible适合中小规模的场景,即200台服务器,为了区区几台服务器,使用Ansible来管理,有些麻烦。有一种方式,就是再公网中搭建一个Ansible服务器,该Ansible服务器通过堡垒机,管理内网中的服务器。这样有一个问题,就是,Ansible是通过ssh的密钥的方式来链接到被管理端的。此时,需要Ansible使用密钥的方式,直接连接到内网中的服务器。

            实验:三台centos6的虚拟机A、B、C:A主机:外网中的ansible主机,管理端;(192.168.1.134)
B主机:内网中的跳板机,跳板机;(192.168.1.112、192.168.109.229)
C主机:内网中的主机,被管理端;(192.168.109.228)
要实现的结果是:Ansible服务器可以通过跳板机管理内网中的主机,具体操作如下:
A主机上:
# ssh-keygen -f /root/.ssh/ansible_id_rsa
# ssh-copy-id -i ansible_id_rsa 192.168.1.112
# cd /root/.ssh
# ssh -i ansible_id_rsa 192.168.1.112
B主机上:
# ssh-keygen -f /root/.ssh/jumper_id_rsa
# ssh-copy-id -i jumper_id_rsa 192.168.109.228
# cd /root/.ssh
# tree
    .
    ├── authorized_keys
    ├── jumper_id_rsa
    ├── jumper_id_rsa.pub
    └── known_hosts
# ssh 192.168.109.228 -i jumper_id_rsa
# cat jumper_id_rsa
    -----BEGIN RSA PRIVATE KEY-----
    MIIEoQIBAAKCAQEAwkHdGJtG/TVqOjRrf0LWdKGczAb2erGbuObrQbzTKL7Fxbw0
    ………………………………………………………………………………
    -----END RSA PRIVATE KEY-----
# cat jumper_id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAII/8bfnTt4………zBB/nnhj5oYHLDMUiPQ== root@CS-2
A主机上:
# pwd
    /root/.ssh
# vim jumper_id_rsa
    -----BEGIN RSA PRIVATE KEY-----
    MIIEoQIBAAKCAQEAwkHdGJtG/TVqOjRrf0LWdKGczAb2erGbuObrQbzTKL7Fxbw0
    ………………………………………………………………………………
    -----END RSA PRIVATE KEY-----
# chmod 600 jumper_id_rsa
# vim jumper_id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAII/8bfnTt4………zBB/nnhj5oYHLDMUiPQ== root@CS-2
# vim ssh_config
    Host 192.168.1.112 # 跳板机访问规则的别名;
    User root
    HostName 192.168.1.112
    IdentityFile /root/.ssh/ansible_id_rsa # 访问跳板机的私钥;
    PasswordAuthentication no
    Host 192.168.109.228 # 访问规则的别名;
    Hostname 192.168.109.228
    User root
    ForwardAgent yes # 此配置项是关键;
    ProxyCommand ssh -i /root/.ssh/ansible_id_rsa root@192.168.1.112 -p 22 nc %h %p
    IdentityFile /root/.ssh/jumper_id_rsa # 访问后端主机的私钥;
# tree
    .
    ├── ansible_id_rsa
    ├── ansible_id_rsa.pub
    ├── jumper_id_rsa
    ├── jumper_id_rsa.pub
    ├── known_hosts
    └── ssh_config
注意:需要把B主机上的两个密钥文件拷贝到A主机上。
注意:私钥文件的权限是“-rw-------”。
C主机上:
# pwd
# /root/.ssh
# cat authorized_keys
    ssh-rsa AAAAB3NzaC1yc2EAAAA………………………………UQ/pMjvlzBB/nnhj5oYHLDMUiPQ== root@CS-2
tree
    .
    └── authorized_keys
A主机上:
# ssh 192.168.1.112 -F /root/.ssh/ssh_config    # 验证Ansible主机是否可以通过ssh_config文件链接到跳板机。
# ssh 192.168.109.228 -F /root/.ssh/ssh_config     # 验证Ansible主机是否可以通过ssh_config文件链接到C主机。
# yum install ansible # epel仓库。
# vim /etc/ansible/ansible.cfg
    [defaults]
    timeout = 20
    [ssh_connection]
    ssh_args = -F /root/.ssh/ssh_config
# vim /etc/ansible/hosts
    192.168.1.112 # B主机IP;
    192.168.109.228 # C主机IP;
# ansible 192.168.109.228 -m ping # 验证ansible是否可以正常工作。
    192.168.109.228 | SUCCESS => {
    "changed": false,
    "ping": "pong"
    }
注意:链接的时候,可能会有一些慢,原因是,目标主机的sshd服务开启了 UseDNS和GSSAPIAuthentication配置。为了加快效率,建议将/etc/ssh/sshd_config文件中的这两项关掉。并重启sshd服务。
帮助文档:
http://www.cnblogs.com/junneyang/p/6073714.html
https://zhuanlan.zhihu.com/p/27746055
https://www.bbsmax.com/A/nAJv6n13Jr/
http://www.cweye.net/2015/07/17/ansible-jumper.html

相关内容

    暂无相关文章