一、saltstack的状态管理

状态管理官网: https://www.unixhot.com/docs/saltstack/ref/states/all/index.html

1)状态分析

[root@k8s6 ~]# cat /srv/salt/web/apache.sls
apache-install:
pkg.installed:
- names:
- httpd
- httpd-devel apache-service: # 名称ID声明 ID必须唯一
service.running: # state声明 状态声明
- name: httpd # 选项声明
- enable: True

2.1) 对于lamp 架构状态管理分析

LAMP架构
)安装软件包 pkg
)修改配置文件 file
)启动服务 service
pkg.installed # 安装
pkg.latest # 确保最新版本
pkg.remove # 卸载
pkg.purge # 卸载并删除配置文件

2.2)安装软件示例和配置文件定义示例

#示例:同时安装多个包
common_packages:
pkg.installed:
- pkgs:
- unzip
- dos2unix
- salt-minion: 2015.8.-.el6 #示例:修改配置文件
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://files/http.conf
- user: root
- group: root
- mode:

2.3)对于配置文件定义的source源分析

- source: salt://files/http.conf  指的salt环境的下的目录
salt:// 表示 当前环境的跟目录
salt跟目录定义
[root@k8s6 lamp]# vim /etc/salt/master
file_roots:
base:
- /srv/salt

比如 salt://lamp/files/http.conf 表示 /srv/salt/lamp/files/http.conf

3)定义lamp架构示例

[root@k8s6 salt]# cat lamp/lamp.sls
lamp-pkg:
pkg.installed:
- pkgs:
- httpd
- php
- mariadb
- mariadb-server
- php-mysql
- php-cli
- php-mbstring apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf
- user: root
- group: root
- mode: php-config:
file.managed:
- name: /etc/php.ini
- source: salt://lamp/files/php.ini
- user: root
- group: root
- mode: mysql-config:
file.managed:
- name: /etc/my.cnf
- source: salt://lamp/files/my.cnf
- user: root
- group: root
- mode: apache-service:
service.running:
- name: httpd
- enable: True
- reload: True mysql-service:
service.running:
- name: mariadb
- enable: True
- reload: True

cat lamp/lamp.sls

配置文件路径

[root@k8s6 salt]# ls lamp/files/
httpd.conf my.cnf php.ini

单台机器启动测试

# 单台机器测试 lamp.lamp ==》目录/文件
[root@k8s6 lamp]# salt 'node01' state.sls lamp.lamp 执行的时候:需要监听客户端日志,排查错误
tail -f /var/log/salt/minion 服务端日志改为debug模式。排查错误
vim /etc/salt/master
#log_level: warning
log_level: debug

4)对于启动服务的另一种写法

[root@k8s6 salt]# cat lamp/apache.sls
apache-server:
pkg.installed:
- pkgs:
- httpd
- php file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf
- user: root
- group: root
- mode: service.running:
- name: httpd
- enable: True
- reload: True

二、状态关系

1)依赖关系require。服务中,只写一个

服务服务的依赖关系
apache-server: # 启动服务需要有依赖关系
service.running:
- name: httpd
- enable: True
- reload: True
- require: # 依赖关系
- pkg: lamp-pkg # 需要先安装
- file: apache-config # 需要有配置文件 mysql-config: # 配置文件被启动服务所依赖
file.managed:
- name: /etc/my.cnf
- source: salt://lamp/files/my.cnf
- user: root
- group: root
- mode:
- require_in: # 被依赖,被启动服务所依赖
- service: mysql-service

2)监听文件。watch

服务服务的依赖关系
apache-server: # 启动服务需要有依赖关系
service.running:
- name: httpd
- enable: True
- reload: True
- require: # 依赖关系
- pkg: lamp-pkg # 需要先安装
- watch
- file: apache-config # 监听该文件

3.1)引入实例

提前安装的文件

[root@k8s6 lamp]# cat pkg.sls
lamp-pkg:
pkg.installed:
- pkgs:
- httpd
- php
- mariadb
- mariadb-server
- php-mysql
- php-cli
- php-mbstring

pkg.sls

导入pkg

[root@k8s6 lamp]# cat lamp.sls
include:
- lamp.pkg apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf
- user: root
- group: root
- mode: php-config:
file.managed:
- name: /etc/php.ini
- source: salt://lamp/files/php.ini
- user: root
- group: root
- mode: mysql-config:
file.managed:
- name: /etc/my.cnf
- source: salt://lamp/files/my.cnf
- user: root
- group: root
- mode: apache-service:
service.running:
- name: httpd
- enable: True
- reload: True mysql-service:
service.running:
- name: mariadb
- enable: True
- reload: True

include

3.2)引入多个文件

安装模块

[root@k8s6 lamp]# cat pkg.sls
lamp-pkg:
pkg.installed:
- pkgs:
- httpd
- php
- mariadb
- mariadb-server
- php-mysql
- php-cli
- php-mbstring

pkg.sls

配置文件模块

[root@k8s6 lamp]# cat config.sls
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf
- user: root
- group: root
- mode: php-config:
file.managed:
- name: /etc/php.ini
- source: salt://lamp/files/php.ini
- user: root
- group: root
- mode: mysql-config:
file.managed:
- name: /etc/my.cnf
- source: salt://lamp/files/my.cnf
- user: root
- group: root
- mode:

config.sls

启动服务模块

[root@k8s6 lamp]# cat service.sls
apache-service:
service.running:
- name: httpd
- enable: True
- reload: True mysql-service:
service.running:
- name: mariadb
- enable: True
- reload: Tru

service.sls

导入模块

[root@k8s6 lamp]# cat init.sls
include:
- lamp.pkg
- lamp.config
- lamp.service

文件目录关系图

[root@k8s6 salt]# tree /srv/salt/lamp/
/srv/salt/lamp/
├── config.sls
├── files
│   ├── httpd.conf
│   ├── my.c
│   └── php.ini
├── init.sls
├── pkg.sls
└── service.sls

启动服务

salt 'node1' state.sls lamp.init

4、jinja模板的使用

4.1)先在sls文件中定于使用jinja模板。并定于变量

[root@k8s6 lamp]# cat config.sls
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf
- user: root
- group: root
- mode:
- template: jinja
- defaults:
PORT: ...............................

4.2) 在引用的配置文件中写入jinja模板

[root@k8s6 lamp]# cat files/httpd.conf
......
Listen {{ PORT }}
.....

Listen {{ PORT }}

salt 'node1' state.sls lamp.init  测试

5)扩展

5.1)引用salt默认的模块。{{ grains['fgdn_ip4'][0] }}  引入salt默认执行的结果

[root@k8s6 lamp]# cat files/httpd.conf
Listen {{ grains['fgdn_ip4'][] }}:{{ PORT }}

5.2)grains 也可写在sls的配置文件中

[root@k8s6 lamp]# cat config.sls
apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://lamp/files/httpd.conf
..........
- template: jinja
- defaults:
IPADDR: {{ {{ grains['fgdn_ip4'][] }} }}
PORT:

httpd.conf文件引用

[root@k8s6 lamp]# cat files/httpd.conf
Listen {{ IPADDR }}:{{ PORT }

5.3)salt远程执行模块

{{ salt['network.hw_addr']('ens33') }}   # 写入配置文件模板
[root@k8s6 lamp]# salt 'node01' network.hw_addr ens33
node01:
:0c::f7::c5

5.4)pillar 值获取

[root@k8s6 web]# salt '*' pillar.items
k8s6:
----------
apache:
httpd
node01:
----------
可写jinja模板
{{ pillar['apache'] }}

三、企业用法

案例:https://github.com/unixhot/saltbook-code/
base 基础环境
[root@k8s6 lamp]# vim /etc/salt/master
file_roots:
base:
- /srv/salt/base
prod:
- /srv/salt/prod pillar_roots:
base:
- /srv/pillar/base
prod:
- /srv/pillar/prod [root@k8s6 salt]# mkdir /srv/salt/base
[root@k8s6 salt]# mkdir /srv/salt/prod
[root@k8s6 salt]# mkdir /srv/pillar/base
[root@k8s6 salt]# mkdir /srv/pillar/prod
[root@k8s6 lamp]# systemctl restart salt-master )base基础环境
init目录,环境初始化:
、dns配置
、history记录时间
、记录命令操作
、内核参数优化
、安装yum仓库
、安装zabbix-agent

saltstack的高级管理的更多相关文章

  1. 高级进阶DB2(第2版)——内部结构、高级管理与问题诊断

    <高级进阶DB2(第2版)——内部结构.高级管理与问题诊断> 基本信息 作者: 牛新庄    出版社:清华大学出版社 ISBN:9787302323839 上架时间:2013-7-3 出版 ...

  2. 基于Bootstrap 3.x的免费高级管理控制面板主题:AdminLTE

    AdminLTE 是一个基于Bootstrap 3.x的免费高级管理控制面板主题.AdminLTE - 是一个完全响应式管理模板.基于Bootstrap3框架.高度可定制的,易于使用.适合从小型移动设 ...

  3. 温故而知新-mysql高级管理

    温故而知新-mysql高级管理 1 mysql的一些授权信息都保存在授权表中 授权表是6个 db,user,host,tables_priv,columns_priv,procs_priv 这6个表 ...

  4. saltstack 服务器批量管理

    学习saltstack 服务器批量管理 1.saltstack 简介 SaltStack是一个开源的.新的基础平台管理工具,使用Python语言开发,同时提供Rest API方便二次开发以及和其他运维 ...

  5. Saltstack 集中化管理平台安装

    Saltstack的简介 SaltStack(http://www.saltstack.com/)是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp ...

  6. 【saltstack 集中化管理】

    Master(监控端): Minion(被监控端) 监控: /etc/master: #interface:监控端地址 #自动接受被监控端证书 #saltstack文件根目录位置 #启动监控 被监控: ...

  7. Maatkit--Mysql的高级管理工具

    Maatkit是不错的mysql管理工具,已经成为Percona的一部分.包含以下主要工具: 1.mk-table-checksum 检查主从表是否一致的有效工具 2.mk-table-sync 有效 ...

  8. saltstack之用户管理

    1.添加用户 /srv/salt/top.sls base: 'test82.salt.cn': - user.useradd /srv/salt/user/useradd.sls jim: user ...

  9. mysql 12章_MySQL数据库的高级管理

    一. 用户管理 Root用户是MySQL数据库管理系统中的系统管理员,但在实际开发过程中通常需要根据不同的开发者分配不同的用户,这样有利于用户的管理和维护. . 用户的创建: ) 方式1:使用MySQ ...

随机推荐

  1. 定位公众号页面,跳转之后 vuejs 失效问题

    是第一个页面的. data () { }, 写成了这样,没写返回 {} 5555~. 网页中死活可以,微信中死活不行. data () { return {} },

  2. Kettle日志级别

    Kettle的日志级别LogLevel分为以下几个: Nothing 没有日志 不显示任何输出 Error 错误日志 仅仅显示错误信息 Minimal 最小日志 使用最小的日志 Basic 基本日志 ...

  3. Linux和VMware

    1.1   Linux操作系统简介 是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位和64位硬件.Lin ...

  4. redis学习一 String数据类型

    一:概述 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的 ...

  5. Xenu Link Sleuth 简单好用的链接测试工具

    XenuLink Sleuth 名词介绍 “Xenu链接检测侦探”是被广泛使用的死链接检测工具.可以检测到网页中的普通链接.图片.框架.插件.背景.样式表.脚本和java程序中的链接. 那么神马时候出 ...

  6. laravel5.6 ORM 关联模型,一对一和一对多

    Laravel5.6 关联模型的操作,主要是一对一,一对多,多对多等操作.下面示例主要解析前面两个操作用法比较常用.(操作和用法TP5类似)将关联查询使用语法hasOne.hasMany.belong ...

  7. php面试专题---22、网站优化 总结

    php面试专题---22.网站优化 总结 一.总结 一句话总结: 主要从前端.后端.数据库.资源四个方面开始发散 前端浏览器缓存和数据压缩前端优化(减少HTTP请求次数) 资源流量优化(防盗链处理)C ...

  8. legend3---1、meedu安装

    legend3---1.meedu安装 一.总结 一句话总结: 视频的安装教程做主菜,辅以文档安装教程做配料,口感甚佳. 1.为什么不直接从github下载文件的发行版,而要选择composer方式安 ...

  9. 移动端调试 — 安卓机+chrome

    移动端开发时,我们常使用chrome自带的模拟器,模拟各种手机设备. 但模拟毕竟是模拟,当开发完毕,使用真机访问页面出现问题时如何调试呢? 下面介绍一种针对Android机的调试方法 1. 在pc和a ...

  10. 架构-SOA:SOA(面向服务的架构)

    ylbtech-架构-SOA:SOA(面向服务的架构) 面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来.接口是采 ...