簡體   English   中英

為嵌套網絡層次結構設置Ansible手冊

[英]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套劇本。

  1. 將1-ssh從HOST設置為SERVER並執行任務。 負責將SET2.zip從公共URL下載到SERVER。
  2. 第2套-該劇本可以從SERVER插入NODE1,並在那里執行所需的任何操作。 有一個從公共URL下載SET3.zip到NODE1的任務。
  3. 設置3-可以將其從NODE1切換到節點A,B,C,D。

您能否提出一個解決此問題的更可行方案?

注意:我無法將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM