• salt-api安装以及简单实使用


    1、安装说明

      操作系统版本:CentOS Linux release 7.5.1804 (Core)

      saltstack版本:2018.3.2

      已经关闭selinux、firewalld服务。

    2、配置yum源

    编辑/etc/yum.repos.d/salt.repo,内容如下:

    [salt-latest] name=SaltStack Latest Release Channel for RHEL/Centos $releasever baseurl=https://mirrors.aliyun.com/saltstack/yum/redhat/7/$basearch/latest failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key

    3、安装salt-master、salt-minion、salt-api

    yum install salt-master salt-minion salt-api pyOpenSSL

    4、配置salt-master配置文件

    master节点配置文件为/etc/salt/master,内容如下:

    interface
    : 0.0.0.0 publish_port: 4505 user: root max_open_files: 100000 worker_threads: 5 ret_port: 4506 root_dir: / default_include: master.d/*.conf  #设置salt master的配置文件,包含master.d目录下的文件 pki_dir: /etc/salt/pki/master keep_jobs: 24 timeout: 5 auto_accept: True state_top: top.sls file_roots: base: - /srv/salt log_file: /var/log/salt/master log_level: debug file_recv: True #启用从客户端传送文件到master节点

    5、部署配置salt-api认证,添加认证用户,生成证书等

    #创建一个saltapi用户,同时为该用户添加密码
    useradd -M -s /sbin/nologin saltapiuser
    echo '123456' | passwd saltapi --stdin
    
    #开启visudo,使该用户能拥有root权限
    usermod -g wheel saltapi
    
    #进行自签名证书配置
    cd /etc/pki/tls/certs/
    make saltapicert
    salt-call --local tls.create_self_signed_cert

    提示已经存在时,可以删除/etc/pki/tls/certs/localhost.crt  /etc/pki/tls/certs/localhost.key重新生成

    6、添加salt-api配置文件,设置远程调用端口等内容

    vim /etc/salt/master.d/api.conf

    内容如下:
    rest_cherrypy: port:
    8010  #设置远程rest api调用端口 ssl_crt: /etc/pki/tls/certs/localhost.crt  #自定义tls证书,使其支持https ssl_key: /etc/pki/tls/certs/localhost.key  #自定义key external_auth:  #设置认证方式 pam: saltapi: - .* - '@wheel' - '@runner'

    若不想使用https调用,则将ssl_cert、ssl_key配置去掉即可。

    7、配置完成之后,需要重启相关服务

    systemctl restart salt-master
    systemctl restart salt-api
    systemctl restart salt-minion

    8、获取认证token值

    curl  -sSk https://18.18.1.6:8010/login -H 'Accept: application/x-yaml' -d username='saltapiuser' -d password='123456' -d eauth='pam'
    显示内容如下:

    return:
    - eauth: pam
    expire: 1535514571.611626
    perms:
    - .*
    - '@wheel'
    - '@runner'
    start: 1535471371.611626
    token: f9546b1a123bd1edcefefbcff37a54ff3358cda3 #此处即为远程调用的token值
    user: saltapiuser

    备注:如果在配置文件中,并未配置ssl_cert、ssl_key配置,请使用http进行调用。同时若重启salt-api服务,token值会变化。若再次生成,也会发生变化。

    9、执行models,使用test.ping查看是否调用成功。

    [root@192-168-40-71 ~]# curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client='local' -d tgt='192.168.40.71' -d fun='test.ping'
    return:
    - 192.168.40.71: true

    输出结果如上,即可说明salt-api已经配置完成,同时可使用rest api进行调用。

    10、远程调用命令解析

    -d client='local':使用local进行远程命令执行
    -d tgt='192.168.40.71':指定远程minion节点地址
    -d fun='cmd.run' :调用的模块名称
    -d arg='ip addr list':调用模块所需要的参数
    
    备注:如果调用的模块需要多个参数,需要指定多个-d arg='参数内容'进行使用。请参考模块使用示例中的add_host添加解析作为参考。

    11、常用模块使用示例

    使用cmd.run模块,远程执行命令
    curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client='local' -d tgt='192.168.40.71' -d fun='cmd.run' -d arg='ip addr list'

    使用add_host添加hosts解析
    curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client='local' -d tgt='192.168.40.71' -d fun='hosts.add_host' -d arg='2.2.2.2' -d arg='test.lcs'
    其中2.2.2.2为ip地址,test.lcs为域名。

    使用cp.push方法从minion上将文件复制到master节点上
    curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client='local' -d tgt='192.168.40.71' -d fun='cp.push' -d arg='/tmp/1.txt'
    复制过来的文件位置为:/var/cache/salt/master/minions/192.168.40.71/files/tmp,其中192.168.40.71为minion节点ip地址。

    调用cp.get_file方法,将master节点上文件复制到minion节点上。
    curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client='local' -d tgt='192.168.40.71' -d fun='cp.get_file' -d arg='salt://tmp/1.txt' -d arg='/data/1.txt'

    由于需要在复制文件的时候,需要传入多个参数,因此,使用run模块,将多个参数放在列表中传入。
    curl -k https://18.18.1.6:8010/run -H "Accept: application/json" -H "Content-type: application/json" -d '[{"client":"local","tgt":"192.168.40.71","fun":"cp.get_file","arg":["salt://tmp/1.txt","/data/111.txt"],"username":"xxx","password":"xxx","eauth":"pam"}]'
  • 相关阅读:
    用C语言编写生成小学四则运算程序
    每周学习报告
    读现代软件工程有感和自我介绍
    第七天
    第五天
    第六天
    作业九:课程总结
    作业四:结对编程项目--四则运算
    psp记录个人项目花费时间
    作业三:代码规范,代码复查
  • 原文地址:https://www.cnblogs.com/crysmile/p/9551806.html
Copyright © 2020-2023  润新知