zoukankan      html  css  js  c++  java
  • salt-api 配置使用

    salt-api 安装 ;配置源 (系统环境示例是centos6)

    环境:

    系统:
    # cat /etc/issue
    CentOS release 6.7 (Final)
    内核:
    # uname -r
    2.6.32-573.el6.x86_64
    运行账户:
    root 
    运行环境:
    # java -version
    java version "1.8.0_92"

    yum 源配置

    epel 源
    rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm
    
    salt-stack 源
    # vi salt-stack.repo 
    
    [saltstack-repo]
    name=SaltStack repo for Red Hat Enterprise Linux $releasever
    baseurl=http://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
    # baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
    enabled=1
    gpgcheck=1 
    # 或者 设置 gpgcheck=0
    # gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
    gpgkey=http://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

      1、yum 安装 salt 

    salt-master:
    yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud -y 
    
    salt-api:
    yum install salt-api -y
    
    salt-minion:
    yum install salt-minion -y

      2、配置证书 自生成证书 证书目录

    切换证书目录 生成自签名证书
    cd /etc/pki/tls/certs
    make testcert
    # 需要输入 key 和 EDNs
    2048
    2048
    2048
    # 剩余的可以enter直接默认回车。
    
    切换私钥目录:
    cd /etc/pki/tls/private
    # 解密key文件,生成无密码的key文件, 过程中需要输入key密码,该密码为之前生成证书时设置的密码
    openssl rsa -in localhost.key -out localhost_nopass.key

      3、创建 salt-api 账户

    # useradd -M -s /sbin/nologin salt-api
    # echo "salt-api" | passwd salt-api --stdin

      4、配置 master 配置文件

    # cat /etc/salt/master |grep -v ^$ |grep -v ^#
    
    default_include: master.d/*.conf
    # 设置开启配置目录
    interface: 172.16.5.17
    # 设置 master IP 

      5、配置 api 相关配置文件

    创建  api 配置文件 api.conf

    # cat api.conf 
    rest_cherrypy:
      host: 172.16.5.17   # 主机
      port: 8888          # 端口
      ssl_crt: /etc/pki/tls/certs/localhost.crt
      ssl_key: /etc/pki/tls/private/localhost_nopass.key

    创建 eauth 认证文件: eauth.conf

    # cat eauth.conf
    external_auth:  
      pam:            # 认证模式,pam 是linux用户默认认证模式
        salt-api:     # salt-api 认证用户 (前面设置的)
          - .*        # 设置用户权限 *全部
          - '@wheel'  # 模块
          - '@runner' # 模块

    salt-api 配置文件目录结构

      7、配置 minion

    [root@oracle yum.repos.d]# cat /etc/salt/minion |grep -v ^$ |grep -v ^#
    master: 172.16.5.17
    id: 172.16.5.18
    # 本机ip

      8、启动:

    /etc/init.d/salt-master restart
    /etc/init.d/salt-api restart
    /etc/init.d/salt-minion restart

    9、测试 salt-api 获得 token (token值 api服务重启后失效)

    # curl -ssk https://172.16.5.17:8888/login -H 'Accept: application/x-yaml' -d username='salt-api' -d password='salt-api' -d eauth='pam' 
    
    return:
    - eauth: pam
      expire: 1571255434.530587
      perms:
      - .*
      - '@wheel'
      - '@runner'
      start: 1571212234.530586
      token: 7d43359bdc35297482926be2fcf378d136b29f5a
      user: salt-api
    curl 参数:
    -k  忽略证书获取https内容 
    -s  指定使用静默(silent)方式
    -i  指定SaltAPI收到服务器返回的结果同时显示HTTP Header。
    -H  指定一个特定的Header给远端服务器,当SaltAPI 需要发送appliton-tion/json Header时。会以我们希望的JSON格式返回结果
    -d  想远端服务器发送POST请求,以key=value的格式发送 ,注意key=v时,必须紧挨=号两边

    测试功能模块

    # 获得token
    curl -k https://172.16.5.17:8888/login -H 'Accept: application/x-yaml' -d username='saltapi' -d password='saltapi' -d eauth='pam'
    
    # 测试test.ping ; salt 'ip' test.ping (local)
    curl -k https://172.16.5.17:8888 -H "Accept: application/x-yaml" -H "X-Auth-Token: 6d133baa48ad607233cb80599c35c10d49d5f26a" -d client='local' -d tgt='*' -d fun='test.ping'
    
    # 测试 salt -l 'ip' cun.run 'df -h' 
    curl -k https://172.16.5.17:8888 -H "Accept: application/x-yaml" -H "X-Auth-Token: 6d133baa48ad607233cb80599c35c10d49d5f26a" -d client='local' -d tgt='*' -d fun='cmd.run' -d arg='df -h'
    
    执行参数:
    client : 模块,python处理salt-api的主要模块,‘client interfaces <netapi-clients>’
    local : 使用‘LocalClient <salt.client.LocalClient>’ 发送命令给受控主机,等价于saltstack命令行中的'salt'命令
    local_async : 和local不同之处在于,这个模块是用于异步操作的,即在master端执行命令后返回的是一个jobid,任务放在后台运行,通过产看jobid的结果来获取命令的执行结果。
    runner : 使用'RunnerClient<salt.runner.RunnerClient>' 调用salt-master上的runner模块,等价于saltstack命令行中的'salt-run'命令
    runner_async : 异步执行runner模块
    wheel : 使用'WheelClient<salt.wheel.WheelClient>', 调用salt-master上的wheel模块,wheel模块没有在命令行端等价的模块,但它通常管理主机资源,比如文件状态,pillar文件,salt配置文件,以及关键模块<salt.wheel.key>功能类似于命令行中的salt-key。
    wheel_async : 异步执行wheel模块
    备注:一般情况下local模块,需要tgt和arg(数组),kwarg(字典),因为这些值将被发送到minions并用于执行所请求的函数。而runner和wheel都是直接应用于master,不需要这些参数。
    tgt : minions 地址
    fun : 函数
    arg : 参数
    expr_form : tgt的匹配规则
        'glob' - Bash glob completion - Default
        'pcre' - Perl style regular expression
        'list' - Python list of hosts
        'grain' - Match based on a grain comparison
        'grain_pcre' - Grain comparison with a regex
        'pillar' - Pillar data comparison
        'nodegroup' - Match on nodegroup
        'range' - Use a Range server for matching
        'compound' - Pass a compound match string

    示例:

    curl -sk http://172.16.5.17:8888/run 
        -H 'Accept: application/x-yaml' 
        -H 'Content-type: application/json' 
        -d '[{
            "client": "local",
            "tgt": "172.16.5.23",
            "fun": "test.ping",
            "username": "salt-api",
            "password": "salt-api",
            "eauth": "pam"
        }]' 
    
    root@oracle:/etc/salt/master.d# curl -sSk https://172.16.5.17:8888 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: 19d7f22e22b9968b7dd4d293868739d994100be8' -d client=local -d tgt='172.16.5.23' -d fun=cmd.run -d arg=hostname
    return:
    - 172.16.5.23: web1
    
    root@EM-6CU623W7BA:/etc/salt/master.d# curl -sSk https://172.16.5.17:8888 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: 19d7f22e22b9968b7dd4d293868739d994100be8' -d client=local -d tgt='172.16.5.23' -d fun=cmd.run -d arg=uptime
    return:
    - 172.16.5.23: ' 21:54:54 up 298 days, 13:27,  1 user,  load average: 0.00, 0.00,
        0.00'

      

     

  • 相关阅读:
    linux常用命令
    设计模式-软件设计原则1-开闭原则
    java连接redis5.0单机版报连接超时错误
    模拟安装redis5.0集群并通过Java代码访问redis集群
    redis安装-单机版
    eclipse异常关了,tomcat如何关
    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component...
    排序算法
    RpcException:No provider available for remote service异常
    3.mysql多表
  • 原文地址:https://www.cnblogs.com/sharesdk/p/11686040.html
Copyright © 2011-2022 走看看