zoukankan      html  css  js  c++  java
  • 安装saltstack

    https://www.cnblogs.com/agnewee/p/6487262.html

    官方资料:https://docs.saltstack.com/en/latest/ref/configuration/index.html

    官网资料:https://repo.saltstack.com/#rhel

    yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm

    准备工作:

    yum -y install libffi-devel zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel


    WARNINGRedhat Python 3 support requires that EPEL be previously installed. The Python 3 packages now comes with Python 3.6

    安装最新版本。更新安装最新版本,即使它是一个新的主要版本。

    1. 运行以下命令来安装SaltStack存储库和密钥:
      sudo yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm
    2. sudo yum clean expire-cache

    3. 安装盐仆从、盐母或其他盐组件:
      • sudo yum install salt-master
      • sudo yum install salt-minion
      • sudo yum install salt-ssh
      • sudo yum install salt-syndic
      • sudo yum install salt-cloud
      • sudo yum install salt-api
    4. (仅升级)重新启动所有升级的服务,例如:
      sudo systemctl restart salt-minion
    pip install -U halite
    pip install cherrypy
    pip install paste
    pip install gevent #如果装不上就先安装saltstack之后再装它
    pip install pyopenssl
    

      

    分别安装python2 python3版本的pip

    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    
    python get-pip.py
    
    python3  get-pip.py
    
    [root@localhost halite-master]# pip --version
    pip 19.0.3 from /usr/lib/python2.7/site-packages/pip (python 2.7)
    
    [root@localhost halite-master]# pip3 --version
    pip 19.0.3 from /usr/local/python/lib/python3.7/site-packages/pip (python 3.7)
    

      

    安装saltstack

    yum install salt-master salt-minion salt-api -y
    [root@localhost ~]# vim /etc/salt/master
    external_auth:
      pam:
        testuser:            //稍后创建此用户
          - .*
          - '@runner'
     
    halite:  #以下内容需要手动添加
      level: 'debug'
      server: 'cherrypy'
      host: '0.0.0.0'
      port: '8080'
      cors: False
      tls: True
      certpath: '/etc/pki/tls/certs/localhost.crt'
      keypath: '/etc/pki/tls/certs/localhost.key'
      pempath: '/etc/pki/tls/certs/localhost.pem'
    
    [root@localhost ~]# useradd testuser
    [root@localhost ~]# passwd testuser

     

    二、 saltstack的配置

      1、 服务端的配置

        1)     #更新主控关键项

    vim /etc/salt/master
    #绑定Master通信IP
    interface: 192.168.1.205
     
    #自动认证,避免手动运行salt-key来确认证书信息
    auto_accept: True
     
    #指定Saltstack文件根目录
    file_roots  
       base:
        -/srv/salt
    systemctl restart salt-master
    systemctl  start salt-master
    systemctl  enable salt-master
    systemctl  start salt-api
    systemctl  enable salt-api

      2、 被控制端的配置

    vim /etc/salt/minion
    #指定master主机IP
    master: 192.168.1.205
     
    #修改被控主机识别id,建议使用操作系统主机名来配置
    id: node1                              //另外一台为node2
    systemctl  start salt-minion
    systemctl  enable salt-minion

    三、校验安装结果

      通过test模块的ping的方法,可以确认服务器与被控端是否建议信任关系。

      #ping单个客户

    sudo salt ‘node1’ test.ping
    sudo salt ‘node2’ test.ping

     

      #ping所有被控端

    salt '*' test.ping

     

    master配置文件:

    interface: 0.0.0.0      # 默认值:0.0.0.0(所有的网络地址接口); 绑定到本地的某个网络地址接口
    
    publish_port: 4505     # ; 设置master与minion的认证通信端口
    
    user: root            # ;运行salt进程的用户
    
    max_open_files: 100000   #salt-master可以打开的最大句柄数
    
    worker_threads: 5       #启动用来接收或应答minion的线程数
    
    ret_port: 4506         #master用来发送命令或者接收minions的命令执行返回信息
    
    pidfile: /var/run/salt-master.pid  #指定master的pid文件位置
    
    root_dir: /         # 该目录为salt运行的根目录,改变它可以使salt从另外一个目录开始运行,好比chroot
    
    pki_dir: /etc/salt/pki/master  # 这个目录是用来存放pki认证秘钥
    
    cachedir: /var/cache/salt/master #  用来存放缓存信息,salt工作执行的命令信息
    
    verify_env: True  # 在启动验证和设置权限配置目录
    
    keep_jobs: 24   #设置保持老的工作信息的过期时间,单位小时
    
    job_cache: True   #设置master维护的工作缓存,这是一个很好的功能,当你的Minons超过5000台时,他将很好的承担这个大的架构,关闭这个选项,之前的工作执行以及工作系统将无法被利用,一般不推荐关掉改选项,开启改选项将会是很明智的,他将使master获得更快的IO系统
    
    timeout: 5  #默认值:5 ;master执行命令的可以接受的延迟时间
    
    output: nested   #默认值:nested ;salt命令的输出格式
    
    sock_dir: /var/run/salt/master  #默认值:/var/run/salt/master ; 指定unix socket主进程通信的socket创建路径
    
    minion_data_cache: True  # 默认值:True ;minion data cache是关于minion信息存储在master上的参数,这些信息主要是pillar 和 grains数据.这些数据被缓存在cachedir定义的目录下的minion目录下以minion名为名的目录下并且预先确定哪些minions将从 执行回复
    
    include: /etc/salt/extra_config #默认值:/etc/salt/extra_config ;包含其他路径上的配置文件

     Security settings 

    #open_mode: False  #open_mode是一个危险的安全特性,当master遇到pki认证系统,秘钥混淆和身份验证失效时,打开open_mode,master将会接受 所有的身份验证。这将会清理掉pki秘钥接受的minions。
    
      通常情况下open_mode不应该被打开,它只适用于短时间内清理pki keys,若要打开它,可将值调整为True
    
    #auto_accept: False #这个设置将会使master自动接受所有发送公钥的minions
    
    #autosign_file: /etc/salt/autosign.conf #如果autosign_file的值被指定,那么autosign_file将会通过该输入允许所有的匹配项,首先会搜索字符串进行匹配,然后通过正则表达式进行匹配。这是不安全的

    #client_acl: # 默认值:{} ;开启对系统上非root的系统用户在master上执行特殊的模块,这些模块名可以使用正则表达式进行表示

    1
    2
    3
    4
    client_acl:
      larry:
        test.ping
        - network.*

    #client_acl_blacklist  #默认值:{} ;黑名单用户或模块,表示所有非sudo用户以及root都无法通过cmd这个模块执行命令,默认情况改配置是完全禁用的

    1
    2
    3
    4
    5
    6
    client_acl_blacklist:
      users:
        - root
        '^(?!sudo_).*$'   #  all non sudo users
      modules:
        - cmd

    #external_auth:  #默认值:{} ; salt的认证模块采用外部的认证系统用来做认证和验证用户在salt系统中的访问区域

    1
    2
    3
      pam:
        fred:
          test.*
    #file_recv: False #默认值:False ; 允许minions推送文件到master上,这个选项默认是禁用的,出于安全考虑
    
    #file_recv_max_size: 100 # 默认值:100 设置一个hard-limit文件的大小,可以推到master。
    

      

    State System settings    

    state_top: top.sls #默认值:top.sls ; 状态系统使用一个入口文件告诉minions在什么环境下使用什么模块,这个状态入口文件被定义在基础环境的相对根路径下
    
    renderer: yaml_jinja #默认值:yaml_jinja ;使用渲染器用来渲染minions的状态数据
    
    failhard: False #默认值:False ; 设置一个全局的failhard表示,当单个的状态执行失败后,将会通知所有的状态停止运行状态
    
    state_verbose: True #state_verbose允许从minions返回更多详细的信息,通常清空下只返回失败或者已经更改,但是将state_verbose设置为True,将会返回所有的状态检查
    
    state_output: full #state_output的设置将会改变信息输出的格式,
        当被设置为”full”时,将全部的输出一行一行的显示输出;
        当被设置为”terse“时,将会 被缩短为一行进行输出;
        当被设置为”mixed”时,输出样式将会是简洁的,除非状态失败,这种情况下将会全部输出;
        当被设置为”change”时,输出 将会完全输出除非状态没有改变

     File Server settings 

    # file_roots: #  salt运行一个轻量级的文件服务器通过ZeroMQ对minions进行文件传输,因此这个文件服务器是构造在master的守护进程中,并且不需要依赖于专用的端口

    文件服务器的工作环境传递给master,每一个环境可以有多个根目录,但是相同环境下多个文件的子目录不能相同,否则下载的文件将不能被可靠的保证,一个基础环境依赖于主的入口文件,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Example:
     file_roots:
       base:
         /srv/salt/
       dev:
         /srv/salt/dev/services
         /srv/salt/dev/states
       prod:
         /srv/salt/prod/services
         /srv/salt/prod/states

    #hash_type: md5  # 默认值:md5 ; hash_type是用来当发现在master上需要对一个文件进行hash时的hash使用的算法,默认是md5.但是它也支持sha1,sha224,shar256,shar384,shar512 

    #file_buffer_size: 1048576  # 默认值:1048576 ;文件服务器的缓存区大小 

    #fileserver_backend:  # 默认值: fileserver_backend:   - roots  ;salt支持模块化的后端文件系统服务器,它允许salt通过第三方的系统来管理收集文件并提供给minions使用,可以配置多个后端文件系统,这里支 持gitfs、hgfs、roots、s3fs文件调用的搜索顺序按照后台文件系统的配置顺序来搜索,默认的设置只开启了标准的后端服务器roots,具 体的根选项配置通过file_roots参数设置

    1
    2
    3
    fileserver_backend:
      - git
      - roots

    #####         Pillar settings        #####

    #pillar_roots:  # 默认值: base: - /srv/pillar 设置不同的环境对应的存放pillar数据的目录,这个配置和file_roots参数配置一样 

    1
    2
    3
    4
    5
    6
    7
    pillar_roots:
        base:
            /srv/pillar
        dev:
           /srv/pillar/dev
        prod:
            /srv/pillar/prod

    #####         Logging settings       #####

    #log_file: /var/log/salt/master # 默认值:/var/log/salt/master ;master的日志可以发送到一个普通文件,本地路径名或者网络位置

    1
    2
    3
    4
    eg:
    log_file: /var/log/salt/master
    log_file: 
    log_file: udp://loghost:10514

    #log_level: warning  #默认值:warning ; 按照日志级别发送信息到控制台 可选项:# One of 'garbage', 'trace', 'debug', info', 'warning', 'error', 'critical'.

    1
    log_level: warning

    #log_level_logfile: warning #默认值:warning ; 按照日志级别发送信息到日志文件

    #log_datefmt: '%H:%M:%S'  #默认值:%H:%M:%S ;发送到控制台信息所用的日期时间格式,更多详情 

    log_fmt_console

    默认值: [%(levelname)-8s] %(message)s

    控制台日志信息格式,

    1
    log_fmt_console: '[%(levelname)-8s] %(message)s'

    log_fmt_logfile

    默认值: %(asctime)s,%(msecs)03.0f [%(name)-17s][%(levelname)-8s] %(message)s

    %(asctime)s:2003-07-08 16:49:45
    
    %(msecs)03.0f:当前时间的毫秒部分
    
    %(name):日志记录调用器的名字
    
    %(levelname):日志记录级别
    
    %(message)s:日志详细信息
    

      

    1
    log_fmt_logfile: '%(asctime)s,%(msecs)03.0f [%(name)-17s][%(levelname)-8s] %(message)s'

    log_granular_levels  #默认值:{} ; 这可以更加具体的控制日志记录级别

    #####         Node Groups           #####

    1
    2
    nodegroups:
       webgroup1: 'L@_host_serv_1.lansgg.com,_host_serv_1.lansgg.com'

    上面配置是我这边测试用;编辑后,重启master

    1
    [root@master salt]# salt -N webgroup1 test.ping

    wKioL1PbW3WT0crRAAB9zmgXDPc937.jpg

    高级用法:

    关于组的混合匹配:(Compound matchers)

    wKiom1PbWoLDqMKWAAFyiyFwI5g721.jpg

    匹配中可以使用and、or及not等boolean型操作
    例如,想匹配所有minion中主机名(minion id)以webserv开头并且运行在Debian系统上或者minion的主机名(minion id)匹配正则表达式web-dc1-srv.*:
    salt -C ‘webserv* and G@os:Debian or E@web-dc1-srv.*’ test.ping
    在top.sls中可以如下使用:
    base:
      ‘webserv* and G@os:Debian or E@web-dc1-srv.*’:
        – match: compound
        – webserver

     

    遇到的问题:

    ModuleNotFoundError: No module named 'salt'
    -- The result is failed.
    Apr 20 01:34:27 localhost.localdomain systemd[1]: Unit salt-master.service entered failed state.
    Apr 20 01:34:27 localhost.localdomain systemd[1]: salt-master.service failed.
    Apr 20 01:34:27 localhost.localdomain polkitd[5770]: Unregistered Authentication Agent for unix-process:6074:4301 (system bus name :1.13, object path /org/freedesktop
    Apr 20 01:35:04 localhost.localdomain polkitd[5770]: Registered Authentication Agent for unix-process:6082:8015 (system bus name :1.14 [/usr/bin/pkttyagent --notify-f
    Apr 20 01:35:04 localhost.localdomain systemd[1]: Reloading.
    Apr 20 01:35:04 localhost.localdomain systemd[1]: Configuration file /usr/lib/systemd/system/auditd.service is marked world-inaccessible. This has no effect as config
    Apr 20 01:35:04 localhost.localdomain systemd[1]: Configuration file /usr/lib/systemd/system/wpa_supplicant.service is marked executable. Please remove executable per
    Apr 20 01:35:04 localhost.localdomain polkitd[5770]: Unregistered Authentication Agent for unix-process:6082:8015 (system bus name :1.14, object path /org/freedesktop
    Apr 20 01:35:12 localhost.localdomain polkitd[5770]: Registered Authentication Agent for unix-process:6100:8814 (system bus name :1.15 [/usr/bin/pkttyagent --notify-f
    Apr 20 01:35:12 localhost.localdomain systemd[1]: Starting The Salt Master Server...
    -- Subject: Unit salt-master.service has begun start-up
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    -- 
    -- Unit salt-master.service has begun starting up.
    Apr 20 01:35:12 localhost.localdomain systemd[1]: salt-master.service: main process exited, code=exited, status=1/FAILURE
    Apr 20 01:35:12 localhost.localdomain salt-master[6105]: Traceback (most recent call last):
    Apr 20 01:35:12 localhost.localdomain salt-master[6105]: File "/usr/bin/salt-master", line 6, in <module>
    Apr 20 01:35:12 localhost.localdomain salt-master[6105]: from salt.scripts import salt_master
    Apr 20 01:35:12 localhost.localdomain salt-master[6105]: ModuleNotFoundError: No module named 'salt'
    Apr 20 01:35:12 localhost.localdomain systemd[1]: Failed to start The Salt Master Server.
    -- Subject: Unit salt-master.service has failed
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    -- 
    -- Unit salt-master.service has failed.
    -- 
    -- The result is failed.
    Apr 20 01:35:12 localhost.localdomain systemd[1]: Unit salt-master.service entered failed state.
    

    解决方法: 

    pip install salt

      

     

  • 相关阅读:
    广播的最佳实践---实现强制下线功能
    广播的最佳实践---实现强制下线功能
    使用本地广播
    使用本地广播
    关于Win7固态优盘的优化方法
    关于Win7固态优盘的优化方法
    在屏幕中使用评分组件
    在屏幕中使用评分组件
    【NYOJ】[65]另一种阶乘问题
    【NYOJ】[65]另一种阶乘问题
  • 原文地址:https://www.cnblogs.com/linuxws/p/10734336.html
Copyright © 2011-2022 走看看