Ansible結合跳板機控制遠程服務器
服務器
在ansible的使用過程當中,存在這樣的場景,ansible所在的管理節點與被管理的機器須要 經過一個跳板機才能鏈接,沒法直接鏈接。網上搜了一下,要解決這個問題,並不須要在 ansible裏作什麼處理,而是在ssh鏈接層面解決這個問題。ssh
好比,ide
咱們有三類節點: 管理節點,admin.example.com,是執行ansible命令的服務器 被管理的節點,internal1.example.com, internal2.example.com 跳板機,bastion.example.com 管理節點不能直連 internal1 & internal2,須要經過跳板機創建鏈接。 管理節點鏈接跳板機的方式以下: ssh -i keyfile_bastion -p 12345 user@bastion.example.com 從跳板機鏈接internal節點的方式以下: ssh -i keyfile_internal -p 23456 user@internal1.example.com ssh -i keyfile_internal -p 23456 user@internal2.example.com
解決方案:code
修改 ~/.ssh/config,加入以下的配置項,域名
Host internal1.example.com internal2.example.com User user Port 23456 IdentityFile=keyfile_internal ProxyCommand ssh -qaY -i keyfile_bastion -p 12345 user@bastion.example.com 'nc -w 14400 %h %p' 注意這地方的1key 就是執行機器的位置。2域名跳板機也寫hosts 作解析。3.本機器hosts也要作解析。
這樣,就能夠直接從節點 admin.example.com 執行下面的命令直接鏈接internal1.example.com了it
ssh user@internal1.example.com
ansible中也能夠將internal節點當作能夠直接鏈接的機器來使用io
ansible -i host -m setup internal1.example.com