需求:
當我們的機器在IDC托管時,往往在多個地區都有托管,每個地區的IDC中只有一台外網服務器,這台外網機器起到接收外面請求及內網中機器中的請求,當我們想要使用Ansible管理內網主機時,就需要用到類似“代理”的一個功能,實際底層使用的還是“ssh”;
分析:
因為Ansible底層使用的就是SSH協議,所以我們可以直接定義SSH方法;
SSH“代理”介紹:
-o:添加選項
-W:指定host:port
proxycommand:“代理”模塊
如果不使用上述這些模塊,ssh命令會直接與后方所指定的主機進行連接,但無法連接內網服務器;
Ansible Hosts文件中相關配置:
Ansible的Hosts文件中存儲了被管控的主機地址等信息,我們可以直接在Hosts文件中定義" ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p -p 22 -q root@xxx.xxx.xx.xx" ";可以將這些內容直接定義到一個地區的固定變量中;
~]# vim /etc/ansible/hosts
[bj-server:vars]
ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p -p 22 -q root@xxx.xxx.xx.xx"'
[nj-server:vars]
ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p -p 22 -q root@xxx.xxx.xx.xx"'
[bj-server]
test1 ansible_host=172.16.1.10 ansible_port=22 ansible_user=root ansible_ssh_pass=MyPassW0rd
test2 ansible_host=172.16.1.20 ansible_port=22 ansible_user=root ansible_ssh_pass=MyPassW0rd
配置完成后使用ansible就可以管理內網的主機拉
————————————————
原文鏈接:https://blog.csdn.net/kaikai0720/article/details/108613873 (原文作者有筆誤)