[英]Setting up ansible playbook for a Nested Network Hierarchy
我的等級:
HOST --->(ssh access)---> SERVER
在另一端,它像:
SERVER:
--------->NODE1:
--------->NODEA
--------->NODEB
--------->NODEC
--------->NODED
箭頭顯示ssh訪問。 主機僅具有對SERVER的ssh訪問權限,而我正在從主機運行劇本。 它對基礎機器沒有ssh。 SERVER可以SSH到NODE1。 SERVER無法SSH到NODEA。 我有必須在所有這些計算機上運行的任務。
解決方案是完成一項任務,例如:
- name: Do task in NODE1
command: ssh user@NODE1 whoami
但這看起來非常不合適。
另一個解決方案是擁有3套劇本。
您能否提出一個解決此問題的更可行方案?
注意:我無法將HOST的ssh訪問權限添加到所有其他節點。 如果真是這樣,那么整個問題就根本不會出現。
看起來像跳轉服務器配置的典型情況:
SERVER上~/.ssh/config
必需設置:
如果使用版本<7.3的OpenSSH:
Host NODEA ProxyCommand ssh NODE1 -W %h:%p
如果使用OpenSSH版本> = 7.3,則:
Host NODEA ProxyJump NODE1
NODE1上的/etc/ssh/sshd_config
必需設置(進行更改后需要重新啟動SSH守護程序):
PermitTunnel yes AllowTcpForwarding yes
在SERVER上運行以通過NODE1連接到NODEA的命令:
ssh NODEA
由於Ansible使用常規的SSH命令,因此在NODEA目標上運行時也將起作用。
如果要在HOST上本地運行Ansible,則可以添加另一個躍點。 例如(> 7.3):
Host NODEA
ProxyJump SERVER, NODE1
如果要使用HOST中的SSH密鑰,則可以通過HOST上的AgentForwarding(在AgentForwarding
上為AllowAgentForwarding yes
)進一步改進。
您也可以在~/.ssh/config
使用通配符來匹配多個主機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.