点击架构师成长之路

架构师成长之路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决定。

....

架构师成长之路5.3-Saltstack配置管理(State状态模块)的更多相关文章

  1. 架构师成长之路3.1-Cobber原理及部署

    点击返回架构师成长之路 架构师成长之路3.1-Cobber原理及部署 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理 ...

  2. 架构师成长之路5.2-Saltstack远程执行

    点击架构师成长之路 架构师成长之路5.2-Saltstack远程执行 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC工具配置才可以 ...

  3. 架构师成长之路5.7-Saltstack数据系统

    点击架构师成长之路 架构师成长之路5.7-Saltstack数据系统 1. Saltstack的两种数据系统 Grains Pollars 2. Saltstack数据系统---Grains Grai ...

  4. 架构师成长之路5.6-Saltstack配置管理(jinja模板)

    点击架构师成长之路 架构师成长之路5.6-Saltstack配置管理(jinja模板) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FU ...

  5. 架构师成长之路5.5-Saltstack配置管理(状态间关系)

    点击架构师成长之路 架构师成长之路5.5-Saltstack配置管理(状态间关系) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC ...

  6. 架构师成长之路5.4-Saltstack配置管理(LAMP架构案例)

    点击架构师成长之路 架构师成长之路5.4-Saltstack配置管理(LAMP架构案例) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要F ...

  7. 架构师成长之路5.1-Saltstack安装及入门

    点击架构师成长之路 架构师成长之路5.1-Saltstack安装及入门 (安装.配置.启动) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需 ...

  8. 架构师成长之路7.1 CDN理论

    点击返回架构师成长之路 架构师成长之路7.1 CDN理论 CDN,Content Distribute Network,内容分发网络:CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数 ...

  9. 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS)

    点击返回架构师成长之路 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS) 采用LVS-DR模式负载均衡,多IDC,多套DNS集群,通过master-slave技术保证dns配置的一致性. 1 ...

随机推荐

  1. 八十九:redis之python操作redis

    安装:pip install redis 连接 字符串操作 插入值 获取 删除值 列表操作,更多操作见源码 添加 获取 集合操作,更多操作见源码 哈希操作,更多操作见源码 事务操作:cache.pip ...

  2. flex与inline-flex

    flex: 将对象作为弹性伸缩盒显示 inline-flex:将对象作为内联块级弹性伸缩盒显示 两者都是使子元素们弹性布局,但是如果是flex,父元素的尺寸不由子元素尺寸动态调整,不设置时默认是100 ...

  3. python-爬虫-bs4-BeautifulSoup

    代码的使用流程: 核心思想:将html文档转换成Beautiful对象,然后调用该对象中的 属性和方法进行html文档指定内容的定位查找. 1 导包:from bs4 import Beautiful ...

  4. 使用现代 C++ 技术增强多核优化

    在本文中,读者将了解如何使用现代 C++ 技术跨内核并行处理数据.通过研究示例代码,下载应用和学习技术,开发人员将更好地了解英特尔® 架构和多核技术.通过学习如何处理潜在的性能瓶颈和并发性问题,可以使 ...

  5. 如何上传整个项目或者是文件夹到github

    原文地址:https://www.cnblogs.com/cairsha/p/11430436.html   在做github个人主页的时候,使用github的readme写起来很麻烦,而且也不好加入 ...

  6. &&、()、||决定linux命令的执行顺序

    在执行某个命令时,有时需要依赖前面的命令是否执行成功.假如你想通过ssh命令复制很多数据文件到另外的机器后,删除所有源有文件,所以在删除源有文件之前首先要确定复制是不是执行成功.只要执行复制成功才可以 ...

  7. Msf小结

    Msfvenom是有效负载生成和编码的组合. 生成攻击载荷 Linux下反弹Meterpreter shell 1 msfvenom -p linux/x86/meterpreter/reverse_ ...

  8. 2019牛客暑期多校训练营(第三场)- F Planting Trees

    题目链接:https://ac.nowcoder.com/acm/contest/883/F 题意:给定n×n的矩阵,求最大子矩阵使得子矩阵中最大值和最小值的差值<=M. 思路:先看数据大小,注 ...

  9. Java小知识----List复制:浅拷贝与深拷贝

    原文地址: https://blog.csdn.net/demonliuhui/article/details/54572908 List浅拷贝 众所周知,list本质上是数组,而数组的是以地址的形式 ...

  10. 洛谷 P3384树链剖分 题解

    题面 挺好的一道树剖模板: 首先要学会最模板的树剖: 然后这道题要注意几个细节: 初始化时,seg[0]=1,seg[root]=1,top[root]=root,rev[1]=root; 在线段树上 ...