saltstack进阶

本文介绍了SaltStack的masterless模式,适用于网络不稳定或单主机场景,通过修改minion配置文件,关闭salt-minion服务,并使用salt-call --local执行。此外,讲解了salt-master的高可用配置,包括主备节点的数据同步策略。最后,探讨了salt-syndic分布式架构,分析其优劣势,并指导了部署步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.masterless

1.1 应用场景

  • master 与 minion 网络不通或通信有延迟,即网络不稳定
  • 想在 minion 端直接执行状态

传统的 SaltStack 是需要通过 master 来执行状态控制 minion 从而实现状态的管理,但是当网络不稳定的时候,当想在minion本地执行状态的时候,当在只有一台主机的时候,想执行状态该怎么办呢?这就需要用到 masterless 了。

有了masterless,即使你只有一台主机,也能玩saltstack,而不需要你有N台主机架构。

1.2 masterless配置

1.2.1 修改minion配置文件
  • 注释master行
  • 取消注释file_client并设其值为local
  • 设置file_roots
  • 设置pillar_roots
//安装salt-minion
[root@localhost ~]# yum -y install salt-minion

//修改minion配置文件
[root@localhost ~]# vim /etc/salt/minion
......
15 # resolved, then the minion will fail to start.
16 #master: salt		//注释此行,不指定master
......
607 # minion in masterless mode.
608 file_client: local			//取消注释并将其值设为local
......
625 file_roots:			//设置file_roots的路径和环境,可定义多个
626   base:
627     - /srv/salt/base
......
663 pillar_roots:		//设置pillar_roots的路径和环境,可定义多个
664   base:
665     - /srv/pillar/base
......

//创建目录
[root@localhost ~]# mkdir /srv/{pillar,salt}/base -p
1.2.2 关闭salt-minion服务

使用 masterless 模式时是不需要启动salt-minion

[root@localhost ~]# systemctl status salt-minion.service 
● salt-minion.service - The Salt Minion
   Loaded: loaded (/usr/lib/systemd/system/salt-minion.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:salt-minion(1)
           file:///usr/share/doc/salt/html/contents.html
           https://docs.saltproject.io/en/latest/contents.html
1.2.3 salt-call

masterless模式执行模块或状态时需要使用salt-call命令,而不再是salt或者salt-ssh。需要注意的是要使用salt-call的–local选项。

//执行模块
[root@localhost ~]# salt-call --local test.ping
local:
    True
[root@localhost ~]# salt-call --local cmd.run 'date'
local:
    Mon Nov 29 19:01:27 CST 2021

//执行状态
[root@localhost ~]# cat /srv/salt/base/init/firewall/main.sls 
firewalld.service:
  service.dead:
    - enable: false

[root@localhost ~]# salt-call --local state.sls init.firewall.main
local:
----------
          ID: firewalld.service
    Function: service.dead
      Result: True
     Comment: Service firewalld.service has been disabled, and is dead
     Started: 19:03:51.166040
    Duration: 726.519 ms
     Changes:   
              ----------
              firewalld.service:
                  True

Summary for local
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1
Total run time: 726.519 ms

[root@localhost ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vend
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值