Ansible結合跳板機控制遠程服務器

Ansible結合跳板機控制遠程服務器

在ansible的使用過程中,存在這樣的場景,ansible所在的管理節點與被管理的機器需要 通過一個跳板機才能連接,無法直接連接。網上搜了一下,要解決這個問題,並不需要在 ansible裏做什麼處理,而是在ssh連接層面解決這個問題。

比如,

我們有三類節點:

    管理節點,admin.example.com,是執行ansible命令的服務器

    被管理的節點,internal1.example.com, internal2.example.com

    跳板機,bastion.example.com

管理節點不能直連 internal1 & internal2,需要通過跳板機建立連接。

管理節點連接跳板機的方式如下:

  ssh -i keyfile_bastion -p 12345 [email protected]

從跳板機連接internal節點的方式如下:

  ssh -i keyfile_internal -p 23456 [email protected]
  ssh -i keyfile_internal -p 23456 [email protected]

解決方案:

修改 ~/.ssh/config,加入如下的配置項,

Host internal1.example.com internal2.example.com
    User user
    Port 23456
    IdentityFile=keyfile_internal
    ProxyCommand ssh -qaY -i keyfile_bastion -p 12345 [email protected] 'nc -w 14400 %h %p'

            注意這地方的1key 就是執行機器的位置。2域名跳板機也寫hosts 做解析。3.本機器hosts也要做解析。

這樣,就可以直接從節點 admin.example.com 執行下面的命令直接連接internal1.example.com了

ssh [email protected]

ansible中也可以將internal節點當做可以直接連接的機器來使用

ansible -i host -m setup internal1.example.com
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章