温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SaltStack如何进行远程执行命令

发布时间:2026-07-02 10:51:37 来源:亿速云 阅读:118 作者:小樊 栏目:系统运维

在 **SaltStack(Salt)**中,远程执行命令是最核心的功能之一,通常通过 salt 命令来调用 Execution Modules 完成。下面从基础到进阶系统说明。


一、基本远程执行命令格式

salt '<target>' <module.function> [参数]

示例:在所有 Minion 上执行命令

salt '*' cmd.run 'uptime'

二、常用远程执行方式

1. 使用 shell 命令(最常用)

salt '*' cmd.run 'ls /tmp'

执行指定 shell 命令,返回结果由 Minion 收集并汇报给 Master。

✅ 适用:临时命令
❌ 不适合复杂逻辑或长期状态管理


2. 针对特定 Minion

按 Minion ID

salt 'minion1' cmd.run 'hostname'

使用通配符

salt 'web*' cmd.run 'systemctl status nginx'

3. 使用 Grains 匹配(按属性)

salt -G 'os:CentOS' cmd.run 'uname -r'

常见条件:

  • os:CentOS
  • os:Ubuntu
  • cpuarch:x86_64

4. 使用 Pillar 匹配

salt -I 'role:web' cmd.run 'systemctl reload nginx'

5. 使用 Node Groups(节点组)

在 Master 配置 /etc/salt/master:

nodegroups:
  web: 'web*'
  db: 'db*'

执行:

salt -N web cmd.run 'uptime'

6. 批量 & 异步执行

批量执行(加快速度)

salt '*' -b 10 cmd.run 'df -h'

一次并发 10 台

异步执行

salt --async '*' cmd.run 'sleep 30'

查看任务:

salt-run jobs.list_jobs
salt-run jobs.lookup_jid <JID>

三、常用模块示例

cmd 模块(执行命令)

salt '*' cmd.run 'echo hello'
salt '*' cmd.script salt://scripts/deploy.sh

test 模块(测试连通性)

salt '*' test.ping

pkg 模块(包管理)

salt '*' pkg.install nginx
salt '*' pkg.upgrade

service 模块

salt '*' service.status nginx
salt '*' service.restart nginx

state 模块(状态执行)

salt '*' state.apply nginx

四、在 Agent 端(Minion)本地执行

如果在 Minion 上执行(不通过 Master):

salt-call cmd.run 'hostname'

五、执行流程简述

Master
  |
  | salt '<target>' cmd.run 'command'
  |
Minion 接收 → 执行 → 返回结果

Minion 默认每 5 秒 连接 Master(zeromq)


六、常见错误排查

1. Minion 不在线

salt '*' test.ping

2. 命令无返回

  • 检查目标匹配是否正确
  • 查看 Minion 日志:
tail -f /var/log/salt/minion

3. 权限问题

远程命令以 root 身份执行(默认)


七、实战示例

所有 CentOS 升级内核

salt -G 'os:CentOS' cmd.run 'yum update -y kernel'

灰度发布

salt 'web[1-3]' cmd.run 'deploy.sh'

八、总结

✅ SaltStack 远程执行核心命令:

salt <target> <module.function> [args]

✅ 关键能力:

  • 秒级并发
  • 多种匹配方式
  • 丰富的内置模块
  • 可脚本化 / API 化

如果你愿意,我可以:

  • 给你 SaltStack + 命令执行架构图
  • 帮你 写远程执行的最佳实践
  • 对比 Salt vs Ansible 远程执行差异

你可以直接告诉我你的使用场景。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手