salt-ssh 进行跨多个主机的更改

salt-ssh 进行跨多个主机的更改

我需要更改两个主机:

  • 新的 Web 服务器已配置
  • 应该创建隧道主机和新的 Web 服务器之间的隧道

我们实施了这两个步骤,并且两个步骤都有效:

root@s# salt-ssh webserver-new state.sls webserver
root@s# salt-ssh tunnel-host state.sls tunnel

如何使用 salt-ssh 来实现这一点?

上述示例的主机:

  • s:"master"。它不是 salt-master,因为我们只使用 salt-ssh
  • webserver-new: 此主机首次使用 salt 配置
  • 隧道主机:该主机创建新的 Web 服务器所需的一些网络隧道。

答案1

你应该创建一个顶部文件

base:
  'webserver-new':
    - webserver
  'tunnel-host':
    - tunnel

并在所有主机上执行 highstate:

salt-ssh '*' state.apply

更高级的替代方案是使用编排ssh=true选项,尤其是当不同主机上的状态相互依赖时,但它需要 Salt Master(即使对于 salt-ssh Minions 也是如此)。

# /srv/salt/orch/webserver.sls
setup_webserver:
  salt.state:
    - tgt: 'webserver-new'
    - ssh: true
    - sls:
      - webserver
create_tunnel:
  salt.state:
    - tgt: 'tunnel-host'
    - ssh: true
    - sls:
      - tunnel
    - require:
      - salt: setup_webserver

并执行salt-run state.orchestrate orch.webserver

相关内容