SALTSTACK自动化运维管理

文章目录

  • 1、saltstack简介
    • (1)saltstack简介
    • (2)saltstack通信机制
    • (3)saltstack安装与配置
  • 2、saltstack远程执行
    • (1)远程执行shell命令
    • (2)编写远程执行模块
    • (3)YAML语法
    • (4)配置管理
  • 3、grains与pillar详解
    • (1)grains简介
    • (2)pillar简介
    • (3)Grians与Pillar的区别
  • 4、jinja模板
  • 5、job管理
  • 6、salt-ssh与syndic管理
    • (1)salt-ssh简介
    • (2)salt-syndic简介
  • 7、salt-api配置

1、saltstack简介

(1)saltstack简介

SaltStack是一个基于Python开发的开源软件,采用C/S架构,有服务端master和客户端minion。SaltStack是一个基础平台管理工具,配置管理系统,具有一个分布式远程执行系统,可用来在远程节点服务器上执行操作命令与查询数据,而这些动作是并行执行的,且使用最小的网络负载。

  1. 配置管理系统:能够维护预定义状态的远程节点
  2. 分布式远程执行系统:用来在远程节点上执行命令和查询数据
  3. 能使运维人员提高工作效率、规范业务配置与操作
  4. salt的核心功能:
    使命令并行发送到远程系统
    使用安全加密的协议
    使用最小最快的网络载荷
    提供简单的编程接口
  5. salt同样引入了更加细致化的领域控制系统来远程执行,使得系统不仅可以通过主机名,还可以通过系统属性成为目标

(2)saltstack通信机制

  • saltstack采用C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口
    SALTSTACK自动化运维管理_第1张图片
  • Salt Master运行的第二个网络服务就是Zero REP系统,默认监听4506端口
    SALTSTACK自动化运维管理_第2张图片
    SaltStack的工作方式如下:
    (1)master/minion
    (2)masterless
    (3)salt-ssh
    SaltStack master在启动后默认监听4505和4506两个端口,4505为SaltStack的消息发布端口,4506为客户端与服务端之间通信的端口

(3)saltstack安装与配置

官网:https://www.saltstack.com/
阿里云官方镜像:https://developer.aliyun.com/mirror/
https://mirrors.aliyun.com/saltstack/

1)下载安装EPEL源

yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

注:服务端与客户端都需要下载与安装EPEL源
使用镜像安装初始化软件包yum install https://mirrors.aliyun.com/saltstack/yum/redhat/salt-repo-latest-2.el7.noarch.rpm(配置yum源)
SALTSTACK自动化运维管理_第3张图片
更改下载路径

sed -i "s/repo.saltstack.com/mirrors.aliyun.com\/saltstack/g" /etc/yum.repos.d/salt-latest.repo

SALTSTACK自动化运维管理_第4张图片
测试yum repolist

2)master端设置:

yum install -y salt-master			#安装master端
systemctl enable salt-master			#设置master自启动
systemctl start salt-master			#启动master服务
ss -lntup | grep salt

3)minion端配置:
在启动客户端之前,需要修改客户端的配置文件,来确定master是谁

yum install -y salt-minion			#安装minion端
vim /etc/salt/minion
	master: 172.25.6.1			#设置master主机的ip
systemctl enable salt-minion
systemctl start salt-minion
ps -ef | grep salt

注:在实际生产环境中,一般建议使用主机名
4)查看指定端口:

yum install lsof -y
lsof -i:4505
lsof -i:4506

SALTSTACK自动化运维管理_第5张图片
在这里插入图片描述
在这里插入图片描述
SALTSTACK自动化运维管理_第6张图片
5)公钥与私钥文件
minion端在第一次启动时会在/etc/salt/目录下产生一个pki目录
pki目录中的文件:
SALTSTACK自动化运维管理_第7张图片
可以看到,在minion目录下会生成两个文件,一个是minion的公钥,另一个是minion的私钥,然后它会将自己的公钥文件发送给master

master端在第一次启动时也会在/etc/salt/目录下产生一个pki目录,这个目录中也有master端的公钥与私钥文件
pki目录中的文件:
SALTSTACK自动化运维管理_第8张图片
6)SaltStack认证配置
SaltStack的服务端与客户端之间通信是需要配置认证的,使用salt-key命令来管理Key
salt-key命令的常用参数及说明

参数 说明
-a 参数后跟主机名,认证指定的主机
-A 认证所有的主机
-L 列出所有客户端的Key
-D 删除所有客户端的Key
-d 删除某一个客户端的Key

在服务端,使用salt-key命令可以查看当前认证状态
SALTSTACK自动化运维管理_第9张图片
可以看出,当前有一个Key处于拒绝状态
可以使用下面的命令去认证指定的主机
SALTSTACK自动化运维管理_第10张图片
可以看出,服务端已经接受客户端的认证
再次查看服务端与客户端存放各自秘钥的目录是否有变化:
SALTSTACK自动化运维管理_第11张图片
SALTSTACK自动化运维管理_第12张图片
可以看出,认证的过程就是服务端与客户端之间交换各自公钥的过程

master端执行命令允许minion端连接:
SALTSTACK自动化运维管理_第13张图片

master端测试与minion端的连接:
SALTSTACK自动化运维管理_第14张图片
minion端启动之后会生成minion_id,若更改操作系统的名字,而没有更改minion_id文件内的名字,minion_id不会改变,若想更新,需要把minion_id文件删除,重启minion端,master端将会自动生成新的文件

yum install -y python-setproctitle.x86_64
systemctl restart salt-master
#可以查看进程更详尽的信息

2、saltstack远程执行

(1)远程执行shell命令

  • salt命令由三个主要部分构成:
    salt '' [arguments]
salt (命令) '*' (目标) cmd.run 'test.ping' (模块)

1)目标使用介绍
目标用于指定哪些minion端需要执行此命令操作
target:指定哪些minion,默认的规则是使用glob匹配minion_id
salt '*' test.ping
targets也可以使用正则表达式:
salt -E 'server[1-3]' test.ping
salt server? test.ping

targets也可以指定列表:
salt -L 'server2,server3' test.ping

  • funcation是module提供的功能,salt内置了大量有效的funcations
salt ‘*’ cmd.run 'uname -a'

SALTSTACK自动化运维管理_第15张图片

  • arguments通过空格来界定参数:
salt 'server2' sys.doc pkg		#查看模板文档
salt 'server2' pkg.install httpd
salt 'server2' pkg.remove httpd
  • salt内置的执行模块列表:
http://docs.saltstack.cn/ref/modules/all/index.html

(1)*:匹配规则,用来代表所有客户端
在这里插入图片描述
(2)IP地址:直接使用IP地址来指定客户端
在这里插入图片描述
(3)正则表达式:正则匹配

salt -E 'server(1|2)' test.ping

(4)客户端列表:使用主机名作为列表,主机名之间用“,”分隔

salt -L 'server1,server2' test.ping
salt 'server2' sys.list_modules		#查看当前支持哪些模块
salt 'server2' sys.list_function cmd	#查看某个模块所支持的函数
salt 'server2' sys.doc cmd.run		#查看模块中某个函数的用法

(2)编写远程执行模块

  • 编辑master配置文件:
vim /etc/salt/master
    file_roots:			#默认值
      base:
        - /srv/salt
  • 重启master服务:
systemctl restart salt-master
  • 创建模块目录
mkdir /srv/salt/_modules 
  • 编写模块文件
vim /srv/salt/_modules/mydisk.py
    def df():    
      return __salt__['cmd.run']('df -h') 
  • 同步模块
salt server2 saltutil.sync_modules
  • 运行模块
salt server2 mydisk.df 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SALTSTACK自动化运维管理_第16张图片
SALTSTACK自动化运维管理_第17张图片

(3)YAML语法

1)缩进:使用空格缩进(两个空格),用来表示层级关系,不能使用< Tab >键
2)冒号:以冒号结尾的行的下一行必须缩进两个空格
字典的keys在YAML中的表现形式是一个以冒号结尾的字符串

my_key: my_value 

3)短横线:使用“-”表示列表项,它与空格一起成对出现(一个短横杠加一个空格)

- list_value_one
- list_value_two

(4)配置管理

SaltStack从0.8.8版本起加入状态管理系统(state system)。配置管理文件以“.sls”结尾,默认使用YAML作为文件的描述格式,使用空格字符为缩进格式,不可以使用< Tab >键,配置文件注释使用“#”,字符串不使用引号,如果有引号就需要进行转义

  • 创建一个sls文件
vim /srv/salt/apache.sls 
  httpd:                 	# ID声明  
    pkg:                 	 # 状态声明    
      - installed         	  # 函数声明 
或者:
  httpd:
    pkg.installed
  • 指定主机执行
 salt server2 state.sls apache

安装多个包:

web:
  pkg.installed:
    - pkgs:
      - httpd

SALTSTACK自动化运维管理_第18张图片

  • 准备Top文件
vim /srv/salt/top.sls 
  base:  
    '*':    
      - apache 
  • 批量执行
salt '*' state.highstate
  1. Salt 状态系统的核心是SLS,或者叫SaLt State 文件
  2. SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据, 常被叫做配置管理
  3. sls文件命名
    sls文件以”.sls”后缀结尾,但在调用是不用写此后缀
    使用子目录来做组织是个很好的选择
    init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以apache/init.sls 就是表示apache
    如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将 被用来表示 apache

管理模块包括文件状态管理模块和服务状态管理模块
文件状态管理模块:

file.managed		#保证文件存在并且为对应的状态
file.recurse		#保证目录存在并且为对应的状态
file.absent		#确保文件不存在,如果存在,则进行删除操作

服务状态管理模块:

service.running		#确保服务处于运行状态,如果没有启动,则进行启动操作
service.enabled		#确保服务会开机自启动
service.disenabled  	#确保服务不会开机自启动
service.dead		#确保服务当前没有运行

SALTSTACK自动化运维管理_第19张图片
SALTSTACK自动化运维管理_第20张图片
SALTSTACK自动化运维管理_第21张图片
在这里插入图片描述
SALTSTACK自动化运维管理_第22张图片
SALTSTACK自动化运维管理_第23张图片
在这里插入图片描述
SALTSTACK自动化运维管理_第24张图片

salt server3 state.sls nginx

在这里插入图片描述
SALTSTACK自动化运维管理_第25张图片
在这里插入图片描述

3、grains与pillar详解

(1)grains简介

  • Grains是SaltStack的一个组件,存放在SaltStack的minion端
  • 当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当 minion重启时才会进行数据的更新
  • 由于grains是静态数据,因此不推荐经常去修改它
  • 应用场景
    信息查询,可用作CMDB
    在target中使用,匹配minion
    在state系统中使用,配置管理模块

Grains存储的信息是静态数据,可用于收集minion端相关的本地信息,如操作系统版本、内核版本、CPU、内存、硬盘、网卡等信息

信息查询
用于查询minion端的IP、FQDN等信息
默认可用的grains:

salt '*' grains.ls

查看每一项的值:

salt '*' grains.items

取单项的值:

salt server2 grains.item ipv4 
salt server2 grains.item fqdn
salt '*' grains.get hwaddr_interfaces	#查看所有主机的所有网卡的MAC地址信息
salt '*' grains.get ip_interfaces	#查看所有主机的所有IP地址信息
salt '*' grains.get os			#查看所有主机的系统版本信息

自定义grains项

  1. 在/etc/salt/minion中定义:
vim /etc/salt/minion 
  grains:  
    roles:    
      - apache    
      - httpd 

重启salt-minion,否则数据不会更新:

systemctl  restart salt-minion
salt server2 grains.item roles
  1. 在/etc/salt/grains中定义:
    创建grains文件
vim /etc/salt/grains
  deployment:  datacenter1 

不需要重启服务,但是需要同步
同步数据:

salt server2 saltutil.sync_grains 

查询自定义项:

salt server2 grains.item deployment

编写grains模块
在salt-master端创建_grains目录:

mkdir /srv/salt/_grains
vim /srv/salt/_grains/my_grain.py
  def my_grain():    
    grains = {}    
    grains['roles'] = 'nginx'    
    grains['hello'] = 'world'    
    return grains 
salt '*' saltutil.sync_grains   	#同步grains到minion端

grains匹配运用
在target中匹配minion:

salt -G roles:apache cmd.run hostname

SALTSTACK自动化运维管理_第26张图片
针对特定的场景进行相关操作

salt -G 'os:Centos' test.ping		#系统版本为Centos的所有主机执行ping测试
salt -G 'os:Centos' cmd.run 'echo welcome to here!'	#系统版本为Centos的所有主机执行一条命令

在top文件中匹配:

vim /srv/salt/top.sls
  base:
    'roles:apache':
      - match: grain
      - apache
     'roles:nginx':
       - match: grain
       - nginx
salt '*' state.highstate

(2)pillar简介

  • pillar和grains一样也是一个数据系统,但是应用场景不同
  • pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息
  • pillar更加适合在配置管理中运用

pillar在master端定义,然后指定对应的minion端,用saltutil.refresh_pillar刷新缓存来存储master指定的数据,且只有指定的minion端才能看到。基于这一点,此功能特别适用于保存敏感信息

声明pillar
定义pillar基础目录:
编辑配置文件/etc/salt/master

vim /etc/salt/master
  pillar_roots:
    base:
      - /srv/pillar			#设置pillar存储文件的目录

服务端创建此文件的存储目录

mkdir /srv/pillar -p

重启服务端服务

systemctl restart salt-master
/etc/init.d/salt-master restart

自定义pillar项

vim /srv/pillar/top.sls
  base:
    '*':
      - packages
vim /srv/pillar/packages.sls
  {% if grains['fqdn'] == 'server3' %}
  package: httpd
  {% elif grains['fqdn'] == 'server2' %}
  package: mairadb
  {% endif %}

刷新所有客户端pillar缓存,同步信息

salt '*' saltutil.refresh_pillar

查询pillar数据

salt '*' pillar.items
salt '*' pillar.item roles

SALTSTACK自动化运维管理_第27张图片
SALTSTACK自动化运维管理_第28张图片
pillar数据匹配
命令行中匹配:

salt -I 'roles:apache' test.ping

SALTSTACK自动化运维管理_第29张图片
state系统中使用:

vim /srv/salt/apache.sls
  apache:
    pkg.installed:
      - name: {{ pillar['package'] }}

(3)Grians与Pillar的区别

1)两者的用途不同。Grains用于存储客户的基本信息,而Pillar用于存储master端分配给minion端的数据
2)存储数据的区域不同。Grains存储在客户端,而Pillar存储在服务端
3)更新方式不同。Grains是在minion启动时进行更新,也可以使用saltutil.sync_grains进行手工刷新。Pillar使用saltutil.refresh_pillar进行刷新,效率更高,更灵活。

4、jinja模板

  • SaltStack是完全基于Python开发的自动配置管理工具,Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作
  • 通过jinja模板可以为不同服务器定义各自的变量
  • 两种分隔符: {% … %} 和 {{ … }},前者用于执行诸如 for 循环或赋值的语句,后者把表达式的结果打印到模板上
  • 通过使用Jinjia模板在state状态配置文件中实现条件判断、循环、变量引用等功能

Jinja模板使用方式
Jinja最基本的用法是使用控制结构包装条件:

vim /srv/salt/test.sls
  /mnt/testfile:
    file.append:
      {% if grains['fqdn'] == 'server2' %}
      - text: server2
      {% elif grains['fqdn'] == 'server3' %}
      - text: server3
      {% endif %}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Jinja在普通文件的使用:

vim /srv/salt/apache.sls
  /etc/httpd/conf/httpd.conf:
    file.managed:
      - source: salt://httpd.conf
      - template: jinja
      - context:
        bind: 172.25.6.2		#指定监听地址

import方式,可在state文件之间共享

定义变量文件:
vim lib.sls
{% set port = 80 %}

导入模板文件:
vim httpd.conf
{% from 'lib.sls' import port %}
...
Listen {{ prot }}

引用变量
直接引用grains变量:

Listen {{ grains['ipv4'][1] }}

直接引用pillar变量:

Listen {{ pillar['ip'] }}

在state文件中引用:

- template: jinja
- context:
  bind: {{ pillar['ip'] }}

5、job管理

Job简介
SaltStack在执行任何一个操作时,都会在master上产生一个JID

  • master在下发指令任务时,会附带上产生的jid
  • minion在接收到指令开始执行时,会在本地的cache目录(默认为/var/cache/salt/minion)下的proc目录中产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况
  • 指令执行完毕将结果传送给master后,删除该临时文件

master将minion返回的执行结果存储在本地/var/cache/salt/master/jobs目录,默认缓存24小时,此配置可以通过修改master配置文件中的keepjobs选项来调整
Job缓存默认保存24小时:

vim /etc/salt/master
  keep_jobs: 24

master端Job缓存目录:

/var/cache/salt/master/jobs

把Job存储到数据库
SALTSTACK自动化运维管理_第30张图片
修改master端配置:

vim /etc/salt/master
  master_job_cache: mysql
  mysql.host: 'localhost'
  mysql.user: 'salt'
  mysql.pass: 'salt'
  mysql.db: 'salt'
  mysql.port: 3306

重启salt-master服务:

systemctl restart salt-master

安装mysql数据库:

yum install -y mariadb-server MySQL-python

执行数据库初始化脚本:

mysql_secure_installation

导入数据模板:

mysql -p < salt.sql

创建数据库授权:

mysql
> grant all on salt.* to salt@localhost identified by 'salt';
> grant all on salt.* to salt@'%' identified by 'salt';

salt.sql模板内容:

CREATE DATABASE  `salt`
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;

USE `salt`;

--
-- Table structure for table `jids`
--

DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
  `jid` varchar(255) NOT NULL,
  `load` mediumtext NOT NULL,
  UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- CREATE INDEX jid ON jids(jid) USING BTREE;

--
-- Table structure for table `salt_returns`
--

DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
  `fun` varchar(50) NOT NULL,
  `jid` varchar(255) NOT NULL,
  `return` mediumtext NOT NULL,
  `id` varchar(255) NOT NULL,
  `success` varchar(10) NOT NULL,
  `full_ret` mediumtext NOT NULL,
  `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  KEY `id` (`id`),
  KEY `jid` (`jid`),
  KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `salt_events`
--

DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这里插入图片描述
SALTSTACK自动化运维管理_第31张图片
SALTSTACK自动化运维管理_第32张图片
Job管理
查看所有minion当前正在运行的jobs(在所有minions上运行saltutil.running)

salt-run jobs.active

列出当前master jobs cache中所有job

salt-run jobs.list_jobs

从master jobs cache中查询指定jid的运行结果

salt-run jobs.lookup_jid <jid>

6、salt-ssh与syndic管理

(1)salt-ssh简介

  • salt-ssh可以独立运行的,不需要minion端
  • salt-ssh 用的是sshpass进行密码交互的
  • 以串行模式工作,性能下降
  • 安装salt-ssh
yum install -y salt-ssh

salt-ssh配置
配置roster文件,默认的本地路径是 /etc/salt/roster:

server2:
  host: 172.25.6.2
  user: root

SALTSTACK自动化运维管理_第33张图片

[root@server2 ~]# systemctl stop salt-minion
[root@server3 ~]# systemctl stop salt-minion

测试:

salt-ssh '*' test.ping -i		//询问密码加 -i
#'*'指roster中指定的主机
vim ~/.ssh/config
  StrictHostKeyChecking no

在这里插入图片描述
在这里插入图片描述

(2)salt-syndic简介

  • syndic其实就是个代理,隔离master与minion
  • Syndic必须要运行在master上,再连接到另一个topmaster上
  • Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster
  • topmaster并不知道有多少个minion
  • syndic与topmaster的file_roots和pillar_roots的目录要保持一致

salt-syndic配置
SALTSTACK自动化运维管理_第34张图片
topmaster端:

vim /etc/salt/master
  order_masters: True		#作为顶级master
  
systemctl start salt-master
salt-key -L					#查看下级master的连接授权
salt-key -A

下级master端:

yum install -y salt-syndic

vim /etc/salt/master
  syndic_master: 172.25.6.4			#指向topmaster	
  	
systemctl restart salt-master
systemctl start salt-syndic

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SALTSTACK自动化运维管理_第35张图片
在这里插入图片描述
SALTSTACK自动化运维管理_第36张图片
SALTSTACK自动化运维管理_第37张图片
SALTSTACK自动化运维管理_第38张图片
可以看到,topmaster通过syndic转交给下级masters,下级masters继而和minions进行通信

7、salt-api配置

salt-api简介

  • SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单
  • 官方提供了三种api模块:
    rest_cherrypy
    rest_tornado
    rest_wsgi
    官方链接:https://docs.saltstack.com/en/latest/ref/netapi/all/index.html#all- netapi-modules

salt-api配置
1)安装salt-api:

yum install -y salt-api python-cherrypy

在server1或server4上安装salt-api
在解决依赖性的同时会安装python-cherrypy
在这里插入图片描述
SALTSTACK自动化运维管理_第39张图片
2)生成证书:

cd /etc/pki/tls/private
openssl genrsa 2048 > localhost.key
cd /etc/pki/tls/certs
make testcert			#根据提示填写相关信息即可

SALTSTACK自动化运维管理_第40张图片
1024和2048皆可
SALTSTACK自动化运维管理_第41张图片
SALTSTACK自动化运维管理_第42张图片
SALTSTACK自动化运维管理_第43张图片
3)创建用户认证文件:

useradd -s /sbin/nologin saltapi
echo westos | passwd --stdin saltapi
vim /etc/salt/master.d/auth.conf
  external_auth:
    pam:
      saltapi:
        - .*
        - '@wheel'
        - '@runner'

SALTSTACK自动化运维管理_第44张图片
在调用api时,需要认证
创建认证文件,扩展名必须为.conf
在这里插入图片描述
SALTSTACK自动化运维管理_第45张图片
创建用户
SALTSTACK自动化运维管理_第46张图片

4)激活rest_cherrypy模块:

vim /etc/salt/master.d/api.conf
  rest_cherrypy:
    host: 172.25.0.1
    port: 8000
    ssl_crt: /etc/pki/tls/certs/localhost.crt
    ssl_key: /etc/pki/tls/private/localhost.key

SALTSTACK自动化运维管理_第47张图片
5)重启服务:

systemctl restart salt-master
systemctl start salt-api

在这里插入图片描述
网络工具未安装
在这里插入图片描述
在这里插入图片描述
salt-api使用
获取认证token:

curl -sSk https://172.25.0.1:8000/login \
  -H 'Accept: application/x-yaml' \
  -d username=saltapi \
  -d password=westos \
  -d eauth=pam

SALTSTACK自动化运维管理_第48张图片
推送任务:

curl -sSk https://172.25.0.1:8000 \
  -H 'Accept: application/x-yaml' \
  -H 'X-Auth-Token: 77e2b1de04b0dbc0a4bf11900712b83e4fa2c241'\
  -d client=local \
  -d tgt='*' \
  -d fun=test.ping

token值是上面命令获取的token值

SALTSTACK自动化运维管理_第49张图片

你可能感兴趣的:(SALTSTACK自动化运维管理)