Saltstack 之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配置及使用
安装salt-api:

[root@server1 ~]# yum install salt-api -y

生成证书:

[root@server1 ~]# cd /etc/pki/tls/private
[root@server1 private]# openssl genrsa 2048 > localhost.key
Generating RSA private key, 2048 bit long modulus
.................+++
...............+++
e is 65537 (0x10001)

[root@server1 private]# cd /etc/pki/tls/certs
[root@server1 certs]# make testcert		//根据提示填写相关信息即可

Saltstack 之salt-api 简介及配置_第1张图片
Saltstack 之salt-api 简介及配置_第2张图片

这时我们生成了证书(localhost.crt)和key(localhost.key)。

创建用户认证文件:

[root@server1 certs]# cd /etc/salt/master.d/
[root@server1 master.d]# vim tls.conf
[root@server1 master.d]# cat tls.conf 
rest_cherrypy:
  port: 8000
  ssl_crt: /etc/pki/tls/certs/localhost.crt
  ssl_key: /etc/pki/tls/private/localhost.key

创建用户授权文件:

[root@server1 master.d]# vim auth.conf
[root@server1 master.d]# cat auth.conf 
external_auth:
  pam:							#热插拔模式
    saltapi:					#用户
      - .*
      - '@wheel'
      - '@runner'
      - '@jobs'

创建用户并配置密码:

[root@server1 master.d]# useradd -s /sbin/nologin saltapi
[root@server1 master.d]# passwd saltapi

重启master服务并启动salt-api服务:

[root@server1 master.d]# systemctl restart salt-master.service 
[root@server1 master.d]# systemctl start salt-api.service 

启动后8000端口以开启:

[root@server1 master.d]# netstat -antlup | grep 8000
\tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      20021/salt-api      

在这里插入图片描述
获取认证token:

[root@server1 master.d]# curl -sSk https://localhost:8000/login     -H 'Accept: application/x-yaml'     -d username=saltapi     -d password=redhat  -d eauth=pam

return:
- eauth: pam
  expire: 1589864868.838355
  perms:
  - .*
  - '@wheel'
  - '@runner'
  - '@jobs'
  start: 1589821668.838354
  token: 738aea2609580fdf80011eaa0794657016a29a4b
  user: saltapi

在返回的信息中包含我们需要的token。

测试推送任务:
命令中token为上各命令的返回值,从返回值可以看出salt-api配置成功。

测试其他命令:

[root@server1 master.d]# curl -sSk https://localhost:8000      -H 'Accept: application/x-yaml'     -H 'X-Auth-Token: 738aea2609580fdf80011eaa0794657016a29a4b'    -d client=local     -d tgt='*'     -d fun=cmd.run -d arg=hostname
return:
- server2: server2
  server3: server3

在这里插入图片描述
也可以调用state模块:

[root@server1 master.d]# curl -sSk https://localhost:8000      -H 'Accept: application/x-yaml'     -H 'X-Auth-Token: 738aea2609580fdf80011eaa0794657016a29a4b'    -d client=local     -d tgt='*'     -d fun=state.sls -d arg=keepalived

也可以基于这个api开发自动化运维系统(github上有现成的项目,搜索oms)。

你可能感兴趣的:(企业实战)