zoukankan      html  css  js  c++  java
  • 架构师成长之路5.3-Saltstack配置管理(State状态模块)

    点击架构师成长之路

    架构师成长之路5.3-Saltstack配置管理(State状态模块)

    配置管理工具:

    • Pupper:1. 采用ruby编程语言;2. 安装环境相对较复杂;3.不支持远程执行,需要FUNC工具配置才可以
    • Ansible:1.采用python编程语言;2.被红帽收购;3.轻量级;4.基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块。
    • Saltstack:采用python编程语言,同时提供Rest API方便二次开发以及和其它平台进行集成(目前企业使用率最高)

    Saltstack最基本的三大功能:

    • Remote execution远程执行:同时在上百上千台机器批量执行命令
    • Configuration management配置管理:状态管理(一种状态描述,但是这种状态很难回滚)
    • Event-Driven infrastucture事件驱动基础设施:监听对象,状态变化产生事件捕捉事件自动编排,故障自愈
    • Salt cloud 云管理:几乎可以管理所有的公有云和私有云

    Saltstack四种运行方式:

    • local:一台本地自运行
    • Minion/Master: 就是C/S模式
    • Syndic 代理组件管理(可以理解成zabbix proxy模式)
    • Salt SSH: 不用安装agent,也能通过SSH收集信息

    1. Saltstack的配置管理---State状态模块

    Salt通过State模块来进行文件的管理;通过YAML语法来描述,后缀是.sls的文件 。

    1.1 了解YAML  详见

    remove vim:
      pkg.removed:
        - name: vim  

    注意:

    • 带有ID和每个函数调用的行都以冒号(:)结束。
    • 每个函数调用在ID下面缩进两个空格。
    • 参数作为列表传递给每个函数。
    • 每行包含函数参数的行都以两个空格缩进开头,然后是连字符,然后是一个额外的空格。
    • 如果参数采用单个值,则名称和值位于由冒号和空格分隔的同一行中。
    • 如果一个参数需要一个列表,则列表从下一行开始,并缩进两个空格

    1.2 配置salt,定义环境  告诉salt去哪里找配置状态文件

    • 首先定义环境目录,file_roots;
    • 其次创建上面定义的目录;
    • 最后重启服务
    vi /etc/salt/master

    以上为默认file_roots信息,创建如下内容(其中base目录是必须的):

    mkdir -p /srv/salt/{base,dev,test,prod}   #创建目录
    systemctl restart salt-master  #重启服务
    

    务必做测试。

    为什么测试存在问题,查看存在一个报错:"could not find expected ':' "  ,原因为:  重新查看yml配置文件!

     

     1.3 编写sls文件(salt state的缩写),配置在对应的目录

     1.3.1 在base环境下编写一个安装apache的sls文件

          题外话,运维需要统一标准,建议此处命名开头采用小写字母。(主机名建议采用-,而不是_,为的就是后期主机名做DNS解析就麻烦了。)

    apache-install:    #定义apache的ID声明(全局唯一状态标识),检查设备有没有http,若存在就忽略,没有才安装
      pkg.installed:    #pkg是状态模块,installed是pkg状态模块的方法
        - name: httpd  #-name是installed的方法参数
    
    apache-service:    #定义apache的ID声明(全局唯一状态标识),保障httpd处于运行状态,检查是否运行,运行就忽略,没运行就安装
      service.running: #service是状态模块,running是service状态模块的方法
        - name: httpd   #-name是installed的方法参数
        - enable: True   #-enable是installed的方法参数
    

    1.4 使用salt命令的state状态模块让minion应用配置

    # 让所有的minion都安装apache(由于salt默认的环境就是base,所以可以直接在后面指定调用的apache.sls文件,不要后缀sls)
    salt '*' state.sls apache
    
    # 让所有的minion都安装vsftpd(saltenv指定环境)
    salt '*' state.sls vsftpd saltenv=dev
    
    # 让其中一台minion(Saltstack02)安装apache
    salt 'Saltstack02*' state.sls apache

    在master上面执行后,在被执行的minion上查看:

    ps aux  | grep yum 

     安装完成后,master返回结果:

     

    5.  使用salt命令执行高级状态。建议将同一类的放置在一个目录下,以“.”的方式进行调用

     

    salt 'Saltstack02*' state.sls web.apache
    

    6、使用salt的高级状态使不同主机应用不同的配置 

    查看一下salt如何定义的高级状态

    以上可知状态系统可以使用一个“top”file入口文件,放置在base环境目录下,命名为top.sls,默认不建议更改其内容。

    base:
      'Saltack02':
        - web.apache
      'Saltstack01':
        - web.apache

    salt '*' state.highstate   # 启用高级状态,去topfile里面读取(只是去通知主机干什么,而至于执行或不执行,执行什么,由topfile决定。

    ....

  • 相关阅读:
    Vue2.1.7源码学习
    JavaScript 复制对象【Object.assign方法无法实现深复制】
    数组去重你知道几种?
    基于webpack2.x的vue2.x的多页面站点
    欲练JS,必先攻CSS——前端修行之路
    闭包的7种形式
    遇见未知的CSS
    redux 个人整理
    log4j.properties打印日志信息(1)
    Java Web开发之Servlet、JSP基础
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/11971284.html
Copyright © 2011-2022 走看看