saltstack restfull api调用-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1637480
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 18:02
个人简介

祸兮福之所倚,福兮祸之所伏

文章分类

全部博文(63)

文章存档

2020年(11)

2019年(10)

2017年(10)

2016年(25)

2015年(7)

我的朋友
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: 系统运维

2019-08-02 18:14:51

    当前主流配置管理系统 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             
        
      具体安装方法     官方最全安装手册。

基本配置:
     salt-master   配置文件位置    /etc/salt/master
           使用restfull api不用配置(很轻松,ymy) ,
           如果使用salt命令管理机器,指定下sls的文件地址这个介绍不在本文范围内,跳过。
                                                       file_roots:
                                                            base:
                                                               - /srv/salt/

    salt-api      配置文件目录     /etc/salt/master.d/
           创建一个基本配置 saltapi.conf (名字随便取)
                    写入基本配置

点击(此处)折叠或打开

  1. rest_cherrypy:
  2.            host: 172.17.3.55        #salt-api地址,本机地址,http访问地址
  3.            port: 8001                #salt-api端口
  4.            disable_ssl: true         #如果不使用ssl
  5.            #ssl_crt: crt_file
  6.            #ssl_key: key_file      #如果使用ssl指向证书

         还有个用户配置,用来指定salt-api登录的用户    auth.conf(名字也是随便起)
             

点击(此处)折叠或打开

  1. external_auth:
  2.      pam:     #使用linux的认证模块
  3.        saltapi:    #用户名,系统用户
  4.           - .*        #权限
  5.           - '@wheel'   
              - '@runner'
        创建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是执行所有命令的认证
             

点击(此处)折叠或打开

  1. data = {
  2.             "username": "saltapi",
  3.             "password": "saltapi",
  4.             "eauth": "pam"
  5.         }
  6.         res=requests.post('',data)
  7.         
  8.     
  9.         res.json()
  10.             {
  11.                 "return": [
  12.                     {
  13.                         "perms": [
  14.                             ".*"
  15.                         ],
  16.                         "start": 1564555975.711495,
  17.                         "token": "ca662c906a189c394e39f9699629b55a40ca9459", #获得token
  18.                         "expire": 1564599175.711497,
  19.                         "user": "saltapi",
  20.                         "eauth": "pam"
  21.                     }
  22.                 ]
  23.             }


        第二步 开始执行各种需要的命令,这方面要对salt各种模块使用方法比较熟悉。
           

点击(此处)折叠或打开

  1. headers = {
  2.             'accept': ' application/json',
  3.             'x-auth-token': 'ca662c906a189c394e39f9699629b55a40ca9459',    #token放入头部
  4.         }
  5.     
  6.         data = {
  7.             'client': 'local'       #调用底层salt模块
  8.             'tgt': '*'              # target 目标主机,需要执行的主机,也可以是list,pcre等,对应expr_form
  9.             'fun': 'cmd.run'      # 执行函数,可以是单个也可以是list,对于arg也为list,跟arg一一对应参数
  10.             'expr_form': 'glob'     # tgt表达式 glob,pcre,list,grain等,属于执行主机的选择 
  11.             'arg': 'ifconfig'               # fun的参数,对应fun
  12.         }
  13.         res=requests.post('',data,headers)
      返回格式  {
                  "return":[
                           {
                              "host1": "result1"
                             },
                            {
                              "host2": "result2" 
                           }  
                        ]
                 }          

        主要就是这些,对主要模块灵活运用后,想当简单(比ansible的api简单多了)
         

















阅读(3403) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图