• SaltStack安装及API开启


    1. 环境

    1.1 操作系统

    CentOS7最小化安装

    # cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"

    # cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)

    1.2 节点

    本例中共涉及到三台服务器

    1. 10.10.2.231:主机名node1,作为master节点
    2. 10.10.2.232:主机名node2,作为minion节点
    3. 10.10.2.233:主机名node3,作为minion节点

    2. 准备YUM源

    以下步骤需要在每个节点上执行

    # rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub

    # curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

    第一步如果报错,执行

    # wget https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
    # rpm --import SALTSTACK-GPG-KEY.pub

    3. 安装Salt-Master

    master节点执行:

    # yum install -y salt-master

    4. 安装Salt-Minion

    minion节点执行:

    # yum install -y salt-minion

    修改/etc/salt/minionmaster的值(注意master前面的#记得去掉)

    master: 10.10.2.231

    5. 启动Salt-Master

    master节点执行:

    # systemctl start salt-master
    # systemctl enable salt-master

    6. 启动Salt-Minion

    minion节点执行:

    # systemctl start salt-minion
    # systemctl enable salt-minion

    7. 在Salt-Master添加Salt-Minion认证

    master节点执行:

    关闭防火墙或开放4505、4506端口

    关闭防火墙

    # systemctl stop firewalld && systemctl disable firewalld

    开放45054506端口

    # firewall-cmd --zone=public --add-port=4505/tcp --permanent
    # firewall-cmd --zone=public --add-port=4506/tcp --permanent
    # firewall-cmd --reload

    添加Salt-Minion认证

    # salt-key -A
    The following keys are going to be accepted:
    Unaccepted Keys:
    node2
    node3
    Proceed? [n/Y] Y
    Key for minion node2 accepted.
    Key for minion node3 accepted.

    8. 测试安装结果

    master节点执行:

    # salt '*' test.ping
    node2:
      True
    node3:
      True

    # salt '*' cmd.run 'ls /root'
    node3:
     anaconda-ks.cfg
    node2:
     anaconda-ks.cfg

    安装成功

    9. 开启Salt-Api

    master节点执行:

    1. 安装Salt-ApiSalt-Minion(安装Salt-Minion是为了通过salt-call命令制作证书)

      # yum install -y salt-api

    2. 制作自签名证书

      # salt-call --local tls.create_self_signed_cert

      如果报错'tls' __virtual__ returned False: PyOpenSSL version 0.10 or later must be installed before this module can be used.尝试执行yum install -y pyOpenSSL如果错误依然存在则尝试:

      # pip3 install --upgrade pip
      # pip3 install --upgrade setuptools-rust
      # pip3 install --upgrade PyOpenSSL

    3. 修改Salt-Master配置文件,开启ReatApi

      # vi /etc/salt/master.d/api.conf
      rest_cherrypy:
       host: 10.10.2.231
       port: 8000
       ssl_crt: /etc/pki/tls/certs/localhost.crt
       ssl_key: /etc/pki/tls/certs/localhost.key

      • hostSalt-Master节点的IP地址
      • port可自定义为自己想要的端口
    4. Salt-Api创建系统用户并设置密码

      # useradd -M -s /sbin/nologin saltapi
      # passwd saltapi
      更改用户 saltapi 的密码 。
      新的 密码:
      重新输入新的 密码:
      passwd:所有的身份验证令牌已经成功更新。

    5. Salt-Api配置认证信息

      # vi /etc/salt/master.d/auth.conf

      external_auth:
       pam:
        saltapi:
         - .*
         - '@wheel'
         - '@runner'
         - '@jobs'

    6. 重启Salt-MasterSalt-Api

      # systemctl restart salt-master
      # systemctl restart salt-api
      # systemctl enable salt-api

    7. 关闭防火墙或开放8000端口

      关闭防火墙

      # systemctl stop firewalld && systemctl disable firewalld

      开放8000端口

      # firewall-cmd --zone=public --add-port=8000/tcp --permanent
      # firewall-cmd --reload

    8. 测试结果

      # curl -k https://10.10.2.231:8000/login -d username='saltapi' -d password='saltapi' -d eauth='pam'
      {"return": [{"token": "16bc53ab66f8cc072b7f14e61838ab75198c3742", "expire": 1639086007.9837725, "start": 1639042807.9837713, "user": "saltapi", "eauth": "pam", "perms": [".*", "@wheel", "@runner", "@jobs"]}]}
      # curl -k https://10.10.2.231:8000 -H "X-Auth-Token: 16bc53ab66f8cc072b7f14e61838ab75198c3742" -d client='local' -d tgt='*' -d fun='test.ping'
      {"return": [{"node3": true, "node2": true}]}

    回到目录

    如果您发现笔者措辞不严谨、逻辑不合理,甚至代码有错误、结论很偏颇等等问题,欢迎联系QQ:562759534。笔者感激各位的讨论和指正,并在此不胜感激!拜谢!
  • 相关阅读:
    linux常用命令---文件操作
    Django 框架中定时触发脚本
    jquery 中选择当前标签下众多相同子标签中的第n个
    Django + DRF + Elasticsearch 实现搜索功能
    django 使用celery 实现异步任务
    python 通过 pymysql模块 操作 mysql 数据库
    django 自定义中间件 middleware
    django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作
    python脚本 读取excel格式文件 并进行处理的方法
    python 将json格式的数据写入csv格式的文件中
  • 原文地址:https://www.cnblogs.com/LOVE0612/p/15668536.html
Copyright © 2020-2023  润新知