当前主流配置管理系统 ansible,saltsatck,puppet等。各有优缺点,但是只有saltstack只有restfull api可以调用,其他的想要构建一个批量管理平台必须跟ansible服务器在一起。
staltstack不必多说,是一个相当方便和牛逼的配置管理工具,多元的架构可以让他很轻松管理上万台主机,可以作为包括生产环境的跳板机使用,使用salt可以很轻松开发出基于web的批量管理平台,其中主要依赖于salt-api --> 一个可以提供restfull api的服务接口。
这里主要介绍salt-api的使用。
环境 centos7.3
安装:
服务器端
salt-master
salt-api restfull,必须安装在salt-master主机上
被管理主机
salt-minion
具体安装方法 http://repo.saltstack.com 官方最全安装手册。
基本配置:
salt-master 配置文件位置 /etc/salt/master
使用restfull api不用配置(很轻松,YMY) ,
如果使用salt命令管理机器,指定下sls的文件地址这个介绍不在本文范围内,跳过。
file_roots:
base:
- /srv/salt/
salt-api 配置文件目录 /etc/salt/master.d/
创建一个基本配置 saltapi.conf (名字随便取)
写入基本配置
还有个用户配置,用来指定salt-api登录的用户 auth.conf(名字也是随便起)
创建saltapi用户 useradd saltapi -s /sbin/nologin
授权密码 echo saltapi | password saltapi --stdin
salt-minion 配置文件 /etc/salt/minion
修改一项 指向master主机,其他的都默认,如果改了其他地方那就全部对应修改
master: 172.17.3.55
启动各应用
systemctl start salt-master
systemctl start salt-minion
systemctl start salt-api
使用:
第一步 获取token,token是执行所有命令的认证
第二步 开始执行各种需要的命令,这方面要对salt各种模块使用方法比较熟悉。
主要就是这些,对主要模块灵活运用后,想当简单(比ansible的api简单多了)
staltstack不必多说,是一个相当方便和牛逼的配置管理工具,多元的架构可以让他很轻松管理上万台主机,可以作为包括生产环境的跳板机使用,使用salt可以很轻松开发出基于web的批量管理平台,其中主要依赖于salt-api --> 一个可以提供restfull api的服务接口。
这里主要介绍salt-api的使用。
环境 centos7.3
安装:
服务器端
salt-master
salt-api restfull,必须安装在salt-master主机上
被管理主机
salt-minion
具体安装方法 http://repo.saltstack.com 官方最全安装手册。
基本配置:
salt-master 配置文件位置 /etc/salt/master
使用restfull api不用配置(很轻松,YMY) ,
如果使用salt命令管理机器,指定下sls的文件地址这个介绍不在本文范围内,跳过。
file_roots:
base:
- /srv/salt/
salt-api 配置文件目录 /etc/salt/master.d/
写入基本配置
点击(此处)折叠或打开
- rest_cherrypy:
- host: 172.17.3.55 #salt-api地址,本机地址,http访问地址
- port: 8001 #salt-api端口
- disable_ssl: true #如果不使用ssl
- #ssl_crt: crt_file
- #ssl_key: key_file #如果使用ssl指向证书
还有个用户配置,用来指定salt-api登录的用户 auth.conf(名字也是随便起)
点击(此处)折叠或打开
- external_auth:
- pam: #使用linux的认证模块
- saltapi: #用户名,系统用户
- - .* #权限
- - '@wheel'
- '@runner'
授权密码 echo saltapi | password saltapi --stdin
salt-minion 配置文件 /etc/salt/minion
修改一项 指向master主机,其他的都默认,如果改了其他地方那就全部对应修改
master: 172.17.3.55
启动各应用
systemctl start salt-master
systemctl start salt-minion
systemctl start salt-api
使用:
第一步 获取token,token是执行所有命令的认证
点击(此处)折叠或打开
- data = {
- "username": "saltapi",
- "password": "saltapi",
- "eauth": "pam"
- }
- res=requests.post('http://172.17.3.55:8001/',data)
-
-
- res.json()
- {
- "return": [
- {
- "perms": [
- ".*"
- ],
- "start": 1564555975.711495,
- "token": "ca662c906a189c394e39f9699629b55a40ca9459", #获得token
- "expire": 1564599175.711497,
- "user": "saltapi",
- "eauth": "pam"
- }
- ]
- }
第二步 开始执行各种需要的命令,这方面要对salt各种模块使用方法比较熟悉。
点击(此处)折叠或打开
- headers = {
- 'Accept': ' application/json',
- 'X-Auth-Token': 'ca662c906a189c394e39f9699629b55a40ca9459', #token放入头部
- }
-
- data = {
- 'client': 'local' #调用底层salt模块
- 'tgt': '*' # target 目标主机,需要执行的主机,也可以是list,pcre等,对应expr_form
- 'fun': 'cmd.run' # 执行函数,可以是单个也可以是list,对于arg也为list,跟arg一一对应参数
- 'expr_form': 'glob' # tgt表达式 glob,pcre,list,grain等,属于执行主机的选择
- 'arg': 'ifconfig' # fun的参数,对应fun
- }
- res=requests.post('http://172.17.3.55:8001/',data,headers)
返回格式 {
"return":[
{
"host1": "result1"
},
{
"host2": "result2"
}
]
}
"return":[
{
"host1": "result1"
},
{
"host2": "result2"
}
]
}