zoukankan      html  css  js  c++  java
  • SaltStack快速入门

    1.1Saltstack基本概述

    SaltStack是一个异构平台基础设施管理工具,具有远程执行、配置管理、云管理, 只需要花费数分钟即可运行起来,扩展性组以支撑管理上万台服务器,速度快,服务器之间秒级通讯数秒钟即可完成数据传递。

    SaltStack三大功能

    • 远程执行
    • 配置管理(状态)
    • 云管理

    SaltStack四种运行方式

    • Local本地运行
    • Minion/Master 传统方式运行
    • Syndic分布式
    • Salt SSH

    SaltStack常用网址

    1.2Saltstack快速安装

    SaltStack支持多种操作系统,如CentOS、RedHat、Debian、Ubuntu、FreeBSD、Solaris、Fedora、SuSe、Gentoo、MAC OS X、Archlinux等,以及Windows(仅支持Minion

    1.配置salt官方阿里云yum仓库

    [root@salt0-master ~]# yum install -y  
    https://mirrors.aliyun.com/saltstack/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
    [root@salt0-master ~]# sed -i 
    "s/repo.saltstack.com/mirrors.aliyun.com/saltstack/g" /etc/yum.repos.d/salt-latest.repo
    [root@salt0-master ~]# yum makecache
    

    2.安装Master,并启动服务

    [root@salt0-master ~]# yum install salt-master -y
    [root@salt0-master ~]# systemctl enable salt-master
    [root@salt0-master ~]# systemctl start salt-master
    

    3.安装Salt-Minion指向Salt-Master网络地址

    [root@salt1-minion ~]# yum install salt-minion -y
    #配置master地址或主机名, 建议使用主机名方式
    [root@salt1-minion ~]# sed -i '/master: /cmaster: salt-master' /etc/salt/minion
    [root@salt1-minion ~]# systemctl enable salt-minion
    [root@salt1-minion ~]# systemctl start salt-minion
    

    4.如启动时发生异常可以查看SaltStack相关日志

    #服务端日志
    [root@salt0-master ~]# tail -f /var/log/salt/master
    #客户端日志
    [root@salt1-minion ~]# tail -f /var/log/salt/minion
    

    1.3Saltstack认证方式

    Salt的数据传输是通过AES加密,MasterMinion之间在通信之前,需要进行认证。
    Salt通过认证的方式保证安全性,完成一次认证后,Master就可以控制Minion来完成各项工作了。

    • 1.minion在第一次启动时, 会在/etc/salt/pki/minion/下自动生成minion.pem(private key)minion.pub(public key)然后将minion.pub发送给master
    • 2.master在第一次启动时, 会在/etc/salt/pki/master下自动生成master.pem和master.pub会接收到minionpublic key通过salt-key命令接收minion public key, 则会在master/etc/salt/pki/master/minions目录下存放以minion id命名的public key同时minion会保存一份master public key/etc/salt/pki/minion_master.pub

    Salt认证原理小结

    minion将自己的公钥发送给master
    mastr认证后会将自己的公钥也放置minion端

    Master端Key认证示例

    在上面一个小节已经提到了MasterMinion的认证方式,只有Master接受了Minion Key后,才能进行管理。具体的认证命令为salt-key常用的有如下命令。

    [root@linux-node1 ~]# salt-key -L
    Accepted Keys:  #已经接受的key
    Denied Keys:    #拒绝的key
    Unaccepted Keys:#未加入的key
    Rejected Keys:#吊销的key
    
    #常用参数
    -L  #查看KEY状态
    -A  #允许所有
    -D  #删除所有
    -a  #认证指定的key
    -d  #删除指定的key
    -r  #注销掉指定key(该状态为未被认证)
    
    #在master端/etc/salt/master配置
    auto_accept: True   #如果对Minion信任,可以配置master自动接受请求
    

    salt-key使用

    #列出当前所有的key
    [root@salt0-master ~]# salt-key 
    Accepted Keys:
    salt1-minion.example.com
    salt2-minion.example.com
    salt3-minion.example.com
    salt4-minion.example.com
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:
    
    #添加指定minion的key
    [root@salt0-master ~]# salt-key  -a salt1-minion.example.com -y
    #添加所有minion的key
    [root@salt0-master ~]# salt-key  -A  -y
    
    #删除指定的key
    [root@salt0-master ~]# salt-key -d salt1-minion.example.com -y
    #删除所有的key
    [root@salt0-master ~]# salt-key -D -y
    

    1.4Saltstack远程执行

    远程执行是SaltStack的核心功能之一。主要使用salt模块可以批量给选定的Minion端执行相应的命令,并获得返回结果。

    1.判断SaltMinon主机是否存活

    [root@salt0-master ~]# salt '*' test.ping
    salt3-minion.example.com:
        True
    salt2-minion.example.com:
        True
    salt1-minion.example.com:
        True
    salt4-minion.example.com:
        True
    
    # salt 是一个命令
    # * 表示目标主机, 在这里代表所有目标主机
    # test.ping是salt远程执行的一个模块下面的方法。
    

    2.SaltStack可以使用cmd.run模块远程执行shell命令

    //让指定目标Minion节点运行uptime命令
    [root@salt0-master ~]# salt 'salt1-minion.example.com' cmd.run 'uptime'
    salt1-minion.example.com:
         14:45:50 up 1 day,  1:25,  2 users,  load average: 0.00, 0.02, 0.05
    
    # Salt提供了大量的模块执行不同的操作, 不建议生产频繁使用cmd.run
    

    1.5Saltstack配置管理

    salt通过状态模块来识别配置描述文件State状态文件,格式是YAML扩展名后缀是.sls

    1.YAML基础语法

    YAML:
        1.缩进(层级关系)  2个空格,不能试用Tab。
        2.冒号  key: value
        3.短横线 - list1
                - list2
    
    • 1.缩进
      • YAML使用一个固定的缩进风格表示数据层级结构关系,每个缩进由两个空格组成, 不要使用tabs。
    • 2.冒号
      • 以冒号结尾, 以冒号为路径的除外,其他所有冒号后面所有必须有空格。
    • 3.短横线
      • 表示列表项,使用一个短横杠加一个空格。
      • 多个项使用同样的缩进级别作为同一列表。

    2.YAML配置,设置base环境

    #定义基础环境目录位置
    [root@salt0-master ~]# vim /etc/salt/master
    file_roots:
      base:
        - /srv/salt
    #修改配置必须重启服务
    [root@salt0-master ~]# systemctl restart salt-master
    

    3.编写yaml语法文件

    [root@salt0-master ~]# mkdir -p /srv/salt/app
    [root@salt0-master ~]# cd /srv/salt/app
    
    #编写sls文件, apache安装并启动
    [root@salt0-master app]# cat apache.sls 
    apache-install:
      pkg.installed:
        - name: httpd
    
    apache-systemctl:
      service.running:
        - name: httpd
        - enable: True
    
    #编写sls文件, vsftpd安装并启动
    [root@salt0-master app]# cat vsftpd.sls 
    vsftpd_install:
      pkg.installed:
        - names:
          - vsftpd
          - httpd-tools
    
    vsftpd_systemctl:
      service.running:
        - name: vsftpd
        - enable: True
    
    #编写sls文件, nginx安装并启动
    [root@salt0-master app]# cat nginx.sls
    nginx-install:
      pkg.installed:
        - name: nginx
    
    nginx-systemctl:
      service.running:
        - name: nginx
    

    4.使用salt命令的state状态模块让所有Minion都应用该配置

    [root@linux-node1]# salt '*' state.sls app.vsftpd
    [root@linux-node1]# salt '*' state.sls app.vsftpd 
    

    5.如果想不同的主机应用不同的配置, 则需要使用到salt高级状态模块

    # topfile入口文件只能放置在base环境
    [root@salt0-master ~]# cat /srv/salt/top.sls 
    base:
      'salt1-minion.example.com':
        - app.nginx
      'salt2-minion.example.com':
        - app.nginx
      'salt3-minion.example.com':
        - app.apache
        - app.vsftpd
      'salt4-minion.example.com':
        - app.apache
        - app.vsftpd
    

    6.当使用salt命令执行高级状态, 会将topfile当做入口文件,进行调用

    # 将高级状态应用到所有主机
    [root@linux-node1]# salt '*' state.highstate
    

    1.6SaltStack消息队列

    SaltStack可以支数以千计,甚至更多的服务器。这些性能的提供主要来自于ZeroMQ, 因为SaltStack底层是基于ZeroMQ进行高效的网络通信。ZeroMQ是一个简单好用的传输层,像框架一样的一个套接字库,他使得Socket编程更加简单、简洁和性能更高。

    发布与订阅
    ZeroMQ支持Publish/Subscribe即发布与订阅模式,我们经常简称Pub/Sub

    Salt Master运行两个网络服务
    一个是ZeroMQ PUB消息发布与订阅系统,默认监听4505端口, 主要用于MasterMinion下发指令

    #所有的Minion连接到Master的4505端口TCP状态持续保持为ESTABLISHED
    [root@linux-node1]# yum install lsof -y
    [root@linux-node1]# lsof -i :4505
    

    注意: 可以修改/etc/salt/master配置文件的publish_port参数设置端口。

    请求与响应

    ZeroMQ支持Request-Reply请求与响应模式,简称REQ/REP

    Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口salt客户端与服务端通信的端口
    同时也主要用于Master接收Minion执行某个命令后的返回值

    注意: 可以修改/etc/salt/master配置文件的ret_port参数设置。

    显示SaltStack进程名称方式

    [root@linux-node1]# yum install -y python-setproctitle
    [root@linux-node1]# ps aux | grep salt
    /usr/bin/salt-master -d ProcessManager  #中心进程管理器
    /usr/bin/salt-master -d _clear_old_jobs  #清除旧的Jobs文件及更新fileserver
    /usr/bin/salt-master -d Publisher       #将任务PUB到Minion端
    /usr/bin/salt-master -d EventPublisher  #Event Publisher进程
    /usr/bin/salt-master -d ReqServer_ProcessManager #ReqServer进程管理器
    /usr/bin/salt-master -d MWorker  #工作进程
    /usr/bin/salt-master -d MWorker  #工作进程
    /usr/bin/salt-master -d MWorker  #工作进程
    /usr/bin/salt-master -d MWorker  #工作进程
    /usr/bin/salt-master -d MWorker  #工作进程
    /usr/bin/salt-master -d MWorkerQueue #将Ret接口(ROUTER)数据转发到Worker(DEALER)
    

    1.7SaltStack常用配置

    1.Salt Master配置

    Salt Master端的配置是修改/etc/salt下master配置文件。以下是Master端常用的配置。

    interface: //指定bind 的地址(默认为0.0.0.0)
    publish_port: //指定发布端⼝(默认为4505)
    ret_port: //指定结果返回端⼝,  与minion配置⽂件中的master_port对应(默认为4506)
    user: //指定master进程的运⾏⽤户,如果调整, 则需要调整部分目录的权限(默认为root)
    timeout: //指定timeout时间,  如果minion规模庞⼤或⺴络状况不好,建议增⼤该值(默认5s)
    keep_jobs: //minion执⾏结果返回master, master会缓存到本地的cachedir目录,该参数指定缓存多⻓时间,可查看之间执行结果会占⽤磁盘空间(默认为24h)
    job_cache: //master是否缓存执⾏结果,如果规模庞⼤(超过5000台),建议使⽤其他⽅式来存储jobs,关闭本选项(默认为True)
    file_recv : //是否允许minion传送⽂件到master 上(默认是Flase)
    file_roots: //指定file server目录,  默认为:
        file_roots:    
           base:    
            - /srv/salt     
    pillar_roots : //指定pillar ⺫录,  默认为:
        pillar_roots:     
          base:     
            - /srv/pillar     
    log_level: //⽇志级别
    ⽀持的⽇志级别有'garbage', 'trace', 'debug', info', 'warning', 'error', ‘critical ’ ( 默认为’warning’)
    

    2.Salt Minion配置
    Minion端配置非常简单,一般只需要修改两个配置即可。

    [root@minion ~]# vim /etc/salt/minion
    master: 192.168.56.11 //修改master为master的IP地址
    id: //客户端的id,默认不设置会取客户端的完整主机名
    

    Salt Minion端常用配置

    master: //指定master 主机(默认为salt)
    master_port: //指定认证和执⾏结果发送到master的哪个端⼝,  与master配置⽂件中的ret_port对应(默认为4506)
    id: //指定本minion的标识, salt内部使⽤id作为标识(默认为主机名)
    user: //指定运⾏minion的⽤户.由于安装包,启动服务等操作需要特权⽤户, 推荐使⽤root( 默认为root)
    cache_jobs : //minion是否缓存执⾏结果(默认为False)
    backup_mode: //在⽂件操作(file.managed 或file.recurse) 时,  如果⽂件发⽣变更,指定备份目录.当前有效
    providers : //指定模块对应的providers, 如在RHEL系列中, pkg对应的providers 是yumpkg5
    renderer: //指定配置管理系统中的渲染器(默认值为:yaml_jinja )
    file_client : //指定file clinet 默认去哪⾥(remote 或local) 寻找⽂件(默认值为remote)
    loglevel: //指定⽇志级别(默认为warning)
    tcp_keepalive : //minion 是否与master 保持keepalive 检查, zeromq3(默认为True)
  • 相关阅读:
    python字符串
    python定义多点坐标_绘制折线_计算起始点和终点
    python进制转化
    python画奥运五环
    python的注释方法行连接符
    python的命名和帮助命令查看关键字
    python的turtle模块画图
    汇编语言
    python自动化办公【第三节 判断语句】
    python自动化办公【第二节 运算及数据类型等【不断修订中】】
  • 原文地址:https://www.cnblogs.com/henrylinux/p/11498062.html
Copyright © 2011-2022 走看看