zoukankan      html  css  js  c++  java
  • Saltstack 介绍、安装、配置语法(一)

    Slatstack 介绍

    官网:https://saltstack.com/

    官方源:http://repo.saltstack.com/  (介绍各操作系统安装方法)

     yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm   #cenyos7官方yum源
    

     

    saltstack功能介绍
    三大功能:

    1.远程执行
    2.配置管理(配置某个服务状态)
    3.云管理 (对接openstack)


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

    staltstack的四种运行方式:
    1.Local
    2. Minion/Master C/S
    3.Syndic - 类似于zabbix proxy
    4. Salt SSH

    一.安装saltstack   

    服务端 

    yum install salt-master salt-minion -y

    客户端

    yum install salt-minion -y

    启动服务端

    systemctl start salt-master
    
    systemctl enable salt-master

    配置客户端

    vim /etc/salt/minion
    master: 10.0.0.11   #可以是主机名需要解析(指定服务端的IP地址),冒号有空格
    id: # 每台主机的唯一标识,不配置默认为主机名

    启动客户端  

    systemctl start salt-minion
    
    systemctl enable salt-minion
    

     

    注意事项

    minion配置中有一个id配置,默认是hostname,如果id配置和hostname不一致会导致无法进行通信,那么当hostname做了修改,或者错误的时候该怎么配置呢?
    ①关闭salt-minion  
    ②salt-key -d id  在master上删除minion的id  
    ③minion上删除pki目录 
    ④minion上删除minion_id文件
    ⑤修改完成,启动minion
    #此处必须先停掉minion修改,并删除相应的文件,否则会默认地去查找原先的配置,已踩坑
    
    #以下是刚装完查看minion_id变成了www.test123.com。进行修改成linux-node2.example.com
    [root@linux-node2 salt]# cat minion_id 
    www.test123.com
    [root@linux-node2 salt]# systemctl stop salt-minion
    [root@linux-node2 salt]# rm -rf pki
    [root@linux-node2 salt]# rm -rf minion_id 
    [root@linux-node2 salt]# systemctl start salt-minion
    [root@linux-node2 salt]# cat minion_id 
    linux-node2.example.com
    

      

     - master和minion启动后pki介绍

    第一次启动minion在/etc/salt下生成pki文件目录

    包含minion的公钥minion.pub和私钥minion.pem

    第一次启动master在/etc/salt下生成pki文件目录,因为之前在配置文件/etc/salt/

    包含master的公钥master.pub和私钥master.pem

    linux-node1.example.com和linux-node2.example.com为minion的公钥,名称为id名minions_pre为预认证目录

    通过查看MD5之可知,minions_pre目录下的文件就是客户端上的公钥

     

     - 认证过程

    salt-key

     salt-key命令介绍:
    -L  列出所有
    -d 删除指定的支持通配符
    -D 删除所有
    -A 添加所有
    -a 指定添加

    Accepted Keys 已同意的key

    Denied Keys 拒绝的key

    Unaccepted Keys 未认证的key

    [root@7mini-node1 ~] salt-key -a 7mini-node2   #指定认证某台机器
    [root@7mini-node1 ~] salt-key -a 7mini*  # 通配符

    说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all

    验证是否认证

     两台minion已认证成功,此时再次查看master pki文件目录,minion的公钥文件放入了minions目录下

     

    再次查看minion pki文件目录,存在minion_master.pub公钥文件

     - 远程执行

    语法: 命令 目标 模块.方法 方法参数

    检查所有主机状态

    salt '*' test.ping   #常用

    检查指定主机状态

    [root@7mini-node1 salt]# salt "7mini-node2" test.ping                       
    7mini-node2:
        True

    指定主机,远程执行shell命令

    salt "7mini-node2" cmd.run "ls -lrt /root"
    

      

      

    - 状态模块

    state 写一个描述文件。格式:YAML ,后缀:.sls

    YAML介绍 (重要)

    YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写。(可以查看百度百科介绍)

    格式:数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。

    salt管理理解YAML介绍 https://docs.saltstack.com/en/latest/topics/yaml/index.html


    YAML:三板斧
    1、 缩进   (2个空格,不能使用Tab)
    2、 冒号 key: value (注意key后面需要有空格)
    3、 短横线 – list1   - list2  可以写多个
      
    缩进和冒号表示层级关系:
    冒号表示key: value   表示层级关系

    短横线 – list      列表,后面都有空格

    /etc/salt/master配置文件也是YAML语法

    - master配置

    vim /etc/salt/master
    file_roots  # 定义base、测试、灰度、生产环境配置文件路径,base名称不能改
    

    设置base、测试、灰度、生产环境

    [root@linux-node1 ~]# vim /etc/salt/master     #定义yaml文件放的位置,base环境是必备的
    file_roots:
      base:
        - /srv/salt/base
      dev:
        - /srv/salt/dev
      test:
        - /srv/salt/test
      prod:
        - /srv/salt/prod
    [root@7mini-node1 ~]# systemctl restart salt-master.service
    

      

    创建目录

    [root@7mini-node1 ~]# mkdir -p /srv/salt/{base,dev,test,prod}

      

    - sls文件创建

    apache.sls,放入到/srv/salt/base/web目录下

    [root@linux-node1 ~]# cd /srv/salt/base/
    [root@linux-node1 base]# mkdir web
    [root@linux-node1 web]# vim apache.sls    #编写安装apache的YAML文件
    apache-install:
      pkg.installed:---------->模块pkg,方法installed,会匹配操作系统进行选择安装的方法
        - name: httpd--------->装的包的名称
    
    apache-service:----------->id要唯一
      service.running:-------->状态模块service,running为模块的方法
        - name: httpd--------->管理服务的名称
        - enable: True-------->设置开机自动启动
    
    [root@7mini-node1 ~]# salt '7mini-node2' state.sls web.apache
    #如果apache.sls的位置是在prod目录下,需要在后面增加saltenv=prod
    #salt '7mini-node2' state.sls web.apache saltenv=prod

    - top.sls文件

    实现自动化安装,需要写一个top.sls
    [root@linux-node1 base]# pwd
    /srv/salt/base
    [root@linux-node1 base]# vim top.sls    #必须在base环境下写
    base:
      'linux-node1.example.com':
        - web.apache
      'linux-node2.example.com':
        - web.apache
    ****************************
    如果只有一个任务在全部机子上执行,也可以:
    base:
      '*'
        - web.apache
    ****************************
    [root@linux-node1 ~]# salt '*' state.highstate   #去top.sls读取,*代表通知哪些主机
    
    salt '*' state.highstate test=True   #在不想影响当前主机的运行情况,可以使用test=True 进行预测试
  • 相关阅读:
    【WPF】ListBox GridViewColumn Header 文字换行、文字多行显示
    【Unity】讯飞语音识别SDK
    【Unity】UGUI无法修改UI元素的Pivot锚点位置
    【Unity】EasyTouch5触屏检测
    【Unity】序列化字典Dictionary的问题
    【WPF】自定义形状的按钮Button
    【WPF】图片按钮的单击与双击事件
    【Unity】ShareSDK、SMSSDK的基本使用与常见问题
    【Unity】不能新建项目
    【Java】移动JDK路径后,修改环境变量不生效 Error: could not open `C:Program FilesJavajre1.8.0_131libamd64jvm.cfg'
  • 原文地址:https://www.cnblogs.com/jimmy-xuli/p/9124810.html
Copyright © 2011-2022 走看看