我需要更改两个主机:
- 新的 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