zoukankan      html  css  js  c++  java
  • saltstack

    salt介绍

    saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统。

    salt强大吗

    系统管理员日常会进行大量的重复性操作,例如安装软件,修改配置文件,创建用户,批量执行命令等等。如果主机数量庞大,单靠人工维护实在让人难以忍受。

      早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或方便的对大量主机进行批量的命令执行。

      salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。

      不管是几台、几百台、几千台服务器,都可以使用salt在一个中心节点上进行管控,灵活定位任意服务器子集来运行命令。 

      Salt是python编写的,支持用户通过python自定义功能模块,也提供了大量的python API接口,用户可以根据需要进行简单快速的扩展。

    saltstack的运行方式

    • Local  本地运行,交付管理
    • Master/Minion   <<<   常用方式   
    • Salt SSH   不需要客户端

    salt部署基本架构

    在安装salt之前,先理解salt架构中各个角色,主要区分是salt-master和salt-minion,顾名思义master是中心控制系统,minion是被管理的客户端。

    salt架构中的一种就是master > minion。

    在远程执行系统中,salt用python通过函数调用完成任务。

    运行salt依赖包

    python
    zeromq
    pyzmp
    pycrypto
    msgpack-python
    yaml
    jinja2

    服务器环境准备

    配置本地文件解析,用于加速身份验证  编辑 /etc/hosts

       ip                      主机名
    192.168.12.112    node1            # 主
    192.168.12.181    minion1      # 从
    192.168.12.182    minion2        # 从

    yum配置

    确保环境准备ok,确保每个节点的yum源配置正确

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all #清空缓存
    yum makecache #生成yum缓存

    安装

    1.node1端安装salt-master 
    yum install salt-master -y
    
    2.在2个minion地址中安装salt-minion 
    yum install salt-minion -y

    修改配置文件

    salt-master的配置文件是/etc/salt/master
    salt-minion的配置文件是/etc/salt/minion

    编辑的时候不能有空格!!!

    1.master的配置文件
    interface: 0.0.0.0 #绑定到本地的0.0.0.0地址
    publish_port: 4505  #管理端口,命令发送
    user: root      #运行salt进程的用户
    worker_threads: 5  #salt运行线程数,线程越多处理速度越快,不要超过cpu个数
    ret_port: 4506  #执行结果返回端口
    pidfile: /var/run/salt-master.pid #pid文件位置
    log_file: /var/log/salt/master  #日志文件地址
    #自动接收minion的key
    auto_accept: False
    
    2.三个minion的配置文件
    master: node1
    master_port: 4506
    user: root
    id: s14minion1 #表示minion身份信息的,这里要修改,三个节点,为不同的id
    acceptance_wait_time: 10
    log_file: /var/log/salt/minion

    启动进程

    启动salt-master和salt-minion

    systemctl start salt-master 
    systemctl start salt-minion

    检查秘钥通信

    master端:
    salt-key -f 指明节点id #查看节点的秘钥信息
    
    minion端:
    salt-call --local key.finger #查看自己的秘钥信息,与master端的进行对比

    接受秘钥通信

    在salt软件启动的时候,会进行通信连接,master可以检测到minion的身份地址,此时还未接收key,还未通信,需要认证秘钥才可以通信

    salt-key -L  #查看所有主机秘钥信息
    #salt
    -key参数解析 -L #查看KEY状态 -A #允许所有 -D #删除所有 -a #认证指定的key -d #删除指定的key -r #注销掉指定key(该状态为未被认证)

    运行测试

    salt-key -a minion-id #指明接收一个minion
    
    salt-key -A # 接收所有minion的秘钥
    
    salt "*" test.ping #通过salt主命令 匹配所有的已接收的主机 发送ping命令,会得到True 或false
    
    salt "*" cmd.run #通过执行命令接口,对所有主机,执行命令
    
    salt "*" cmd.run "yum install nginx -y" #对所有主机发送安装nginx的命令

    待续。。

  • 相关阅读:
    DataTable Clone()方法和Copy()方法的区别
    element-ui的使用
    解决VS Code 软件PowerShell执行策略问题
    Vue-Router
    Vue的生命周期
    vue-cli脚手架和webpack
    Vue组件
    Vue基本用法和指令
    ES6常用语法
    前端-Bootstrap框架
  • 原文地址:https://www.cnblogs.com/clbao/p/10116967.html
Copyright © 2011-2022 走看看