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

    SALTSTACK是什么?

    Salt是一种和以往不同的基础设施管理方法,它是建立在大规模系统高速通讯能力可以大幅提升的想法上。这种方法使得Salt成为一个强大的能够解决基础设施中许多特定问题的多任务系统。远程执行引擎是Salt的核心,它能够为多组系统创建高速、安全的双向通讯网络。基于这个通许系统,Salt提供了一个非常快速、灵活并且容易使用的配置管理系统,称之为“Salt States”。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

    saltstack的三种运行方式:
    1. local 本地
    2. master/minion   主人批量管理方式
    3. salt ssh    ssh方式

    saltstack的特点:

    1. 部署简单、方便;
    2. 主从集中化管理;
    3. 配置简单、功能强大、扩展性强;
    4. 主控端(master)和被控端(minion)基于证书认证,安全可靠;
    5. 支持API及自定义模块,可通过Python轻松扩展。

    saltstack主要功能:

    1. 远程执行命令
    2. 配置管理
    3. 云管理 支持各种云平台

    安装SALT

     测试环境配置

    系统版本 IP 主机名 
    CentOS Linux release 7.2.1511 (Core) 192.16.14.58 master-node-01
    CentOS Linux release 7.2.1511 (Core) 192.168.14.30 minion-node-01

    我在centos7.2环境下

    参考:

    https://docs.saltstack.com/en/latest/topics/installation/index.html#quick-install1

    配置好salt源,直接用yum安装

    安装的版本是SALT 2016.11.5

     

    1.安装master

     master-node上安装

    yum install salt-master
    

      

    安装salt-master会自动把salt-minion安装上。

    2.安装minion

    minion-node上安装

    yum install salt-minion
    

      

    3.master-node开机自启master,minion-node开机自启minion

    systemctl enable salt-master   
    
    systemctl enable salt-minion
    

    4.启动salt-master和salt-minion

    master-node主机上执行:
    systemctl start salt-master
    
    
    
    minion-node上执行
    systemctl start salt-minion
    

      

    5.做上host解析(测试环境)有dns可以做dns解析

    HOST文件如下

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.14.50 master-node-01
    192.168.14.37 minion-node-01 
    

      

    master和minion的hosts文件都是一样

    6.防火墙,(做测试我关掉了 )

    iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT
    iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT
    

      

    master可以有多个,minion一样也是可以有多个

    安装salt-master会默认把salt-minion安装上

    master可以理解为主人,minion可以理解为奴才

    修改配置文件

    在master-node和minion-node上都修改/etc/salt/minion中16行的位置

    去掉注释master哪行改为如下内容:

    master: 192.168.14.50  

    告诉主人是谁,master后面也可以是域名

    修改了配置文件,记得重启服务

    认证

    认证一般都是在master上操作,可以简单理解是否管理这太机器

    minion第一启动会产生认证文件,会把公钥发送给master

    认证目录:/etc/salt/pki/minion

    master第一次启动也会产生相应的认证文件

    认证目录:/etc/salt/pki/master

    在master上可以利用tree命令查看关系

    [root@master-node-01 ~]# cd /etc/salt/pki/master/
    [root@master-node-01 master]# tree
    .
    ├── master.pem
    ├── master.pub
    ├── minions
    ├── minions_autosign
    ├── minions_denied
    ├── minions_pre
    │   ├── master-node-01
    │   └── minion-node-01
    └── minions_rejected
    

      

    master上操作

    master需要管理那些minion,这时候就需要认证授权,

    1.查看认证信息状态:salt-key

    [root@master-node-01 master]# salt-key
    Accepted Keys:   #同意的key
    Denied Keys:
    Unaccepted Keys:  #未同意的key
    master-node-01
    minion-node-01
    Rejected Keys:   #拒绝的key
    

      

    2.同意认证

    命令有如下:

    salt-key -A   #同意所有
    salt-key -a   key名(支持通配符)   #同意指定的主机
    salt-key -a master-*    #同意管理master-开头的认证主机
    

      

    [root@master-node-01 master]# salt-key -a master-*
    The following keys are going to be accepted:
    Unaccepted Keys:
    master-node-01
    Proceed? [n/Y] y
    Key for minion master-node-01 accepted.
    

      

    3.查看所管理的主机

    命令:

    salt-key -L
    

      

     4.在利用tree查看关系

     

     minion也接收的master上的公钥

    5.更多命令,查看详细的帮组信息

    salt-key --help

    master和minion认证过程

    (1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
    (2)、master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。

    Master与Minion的连接

    SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。

    远程执行

    远程管理主机

    salt  'key名(支持通配符)'  test.ping

    salt命令   引号中间是主机名   test是saltstack的一个模块   ping是test模块下的一个方法

     

    * 表时在所有已管理的minion上执行

    salt '*'  cmd.run  '参数(具体的shell命令)'

     配置管理

     1.简单master配置文件修改

    修改master配置文件,修改内容如下,以及具体修改的行数

     #号是注释,无实际意义

    vim /etc/salt/master
    
    535  file_roots:   #saltstack状态文件
    536    base:    #指定一个坏境支持多种坏境(列开发,测试),base前面2个空格,默认必须要有一个base环境
    537      - /srv/salt/  # -前面4个空格  ,状态文件存放的目录,注意本地是否有这个目录,没有则新建
    

      

    重启master生效

    本地新建目录/srv/salt/

    2.配置安装httpd模板文件

    在/srv/salt/目录下,新编辑apache.sls  内容如下

    apache install:  #安装名称
      pkg.installed:  #前面两个空格,pkg是个模块,installed是个方法
        - names:    #前面4个空格
          - httpd     #前面6个空格,安装的软件包,会用yum安装
          - httpd-devel  #开发工具包
    apache-server:
      service.running:  #前面两个空格   service是个模块,running也是个方法
        - name: httpd    # 安装软件包的名称  前面4个空格 
        - enable: True   #前面4个空格   开机自启
        - reload: True   #前面4个空格   可以重载
    

      

    往所有主机上安装apache

    salt '*'  state.sls apache   
    

      

    #在所有机器上执行apache这个文件的,apache后面不用写.sls 默认会给加上 这个状态文件所做的功能在所有机器上安装httpd和httpd-devel 以及开机自启

    过程中可以查看是不是用在用yum装apache,       ps aux | grep yum

     执行结果如下图:

    状态管理

    一个机器肯定有多个状态,用高级状态,会有一个入口文件,来监控哪些机器有哪些状态,默认入口文件名叫top.sls,必须放在base环境 

     内容如下:

    base:  #在base环境下
      '*':  #有所有minion机器上,可以写执行的minion的已认证的名字 ,支持通配符,前面连个空格
        - apache#所有的minion都执行apache这个文件的状态 ,前面四个空格,可以执定那些机器执行相应状态文件 
    

      

    执行高级状态

    salt '*' state.highstate
    

      

    效果如下:

    什么东西放在base环境?
    所有机器都要执行的状态,应该放在base环境,例如 所有机器都要调整内核参数  等等

      

  • 相关阅读:
    gitlab备份及恢复
    Nginx一:常用命令和配置文件介绍
    SpringTask三:使用SpringBoot
    SpringTask二:注解配置方式
    SpringTask一:xml配置方式
    大坑!maven的web项目初始化错误:sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification ...
    Quartz(5):quartz监听器
    Quartz(4):quartz.properties配置文件介绍
    Quartz(3):simpleTrigger和cronTrigger触发器的介绍
    Quartz(2):JobDetail、JobExectionContext、JobDataMap的介绍
  • 原文地址:https://www.cnblogs.com/keme/p/6877604.html
Copyright © 2011-2022 走看看