saltstack的高级管理
一、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的高级管理的更多相关文章
- 高级进阶DB2(第2版)——内部结构、高级管理与问题诊断
<高级进阶DB2(第2版)——内部结构.高级管理与问题诊断> 基本信息 作者: 牛新庄 出版社:清华大学出版社 ISBN:9787302323839 上架时间:2013-7-3 出版 ...
- 基于Bootstrap 3.x的免费高级管理控制面板主题:AdminLTE
AdminLTE 是一个基于Bootstrap 3.x的免费高级管理控制面板主题.AdminLTE - 是一个完全响应式管理模板.基于Bootstrap3框架.高度可定制的,易于使用.适合从小型移动设 ...
- 温故而知新-mysql高级管理
温故而知新-mysql高级管理 1 mysql的一些授权信息都保存在授权表中 授权表是6个 db,user,host,tables_priv,columns_priv,procs_priv 这6个表 ...
- saltstack 服务器批量管理
学习saltstack 服务器批量管理 1.saltstack 简介 SaltStack是一个开源的.新的基础平台管理工具,使用Python语言开发,同时提供Rest API方便二次开发以及和其他运维 ...
- Saltstack 集中化管理平台安装
Saltstack的简介 SaltStack(http://www.saltstack.com/)是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp ...
- 【saltstack 集中化管理】
Master(监控端): Minion(被监控端) 监控: /etc/master: #interface:监控端地址 #自动接受被监控端证书 #saltstack文件根目录位置 #启动监控 被监控: ...
- Maatkit--Mysql的高级管理工具
Maatkit是不错的mysql管理工具,已经成为Percona的一部分.包含以下主要工具: 1.mk-table-checksum 检查主从表是否一致的有效工具 2.mk-table-sync 有效 ...
- saltstack之用户管理
1.添加用户 /srv/salt/top.sls base: 'test82.salt.cn': - user.useradd /srv/salt/user/useradd.sls jim: user ...
- mysql 12章_MySQL数据库的高级管理
一. 用户管理 Root用户是MySQL数据库管理系统中的系统管理员,但在实际开发过程中通常需要根据不同的开发者分配不同的用户,这样有利于用户的管理和维护. . 用户的创建: ) 方式1:使用MySQ ...
随机推荐
- PyQt5+qtdesigner开发环境配置
1.PyQt5安装 pip install PyQt5 2.qtdesigner安装 本来直接用pip install PyQt5-tools安装的,但是网速下的慢,中间还断了几次,在网上找到一个稳定 ...
- 2018-10-16-weekly
Algorithm 判断子序列 What 给定字符串 s 和 t ,判断 s 是否为 t 的子序列.如,"ace"是"abcde"的一个子序列,而"a ...
- linux find rm ls 逻辑非运用
需求场景描述 查找出除已知文件外的文件 办法: [root@VM_58_118_centos test]# .1_fv1..0_pv1..6_15752678845473..2_fv1..4_pv1. ...
- Linux 系统下文件夹与文件的读写可执行权限问题
linux是一个多用户操作系统,linux对文件系统内的所有文件,实行了严格的权限划分管理.防止没有权限的用户访问某个文件.linux文件或目录的权限分为 读.写.可执行三种权限.文件访问的用户类别分 ...
- Oracle数据库一些操作信息
Oracle数据库如何查看当前用户角色权限及默认表空间查看当前用户的一些信息,包括用户拥有的角色权限信息.用户表空间以及用户和默认表空间的关系等--查看用户的角色权限1.查看当前用户拥有的角色权限信息 ...
- [CSP-S模拟测试]:数论(数学)
题目传送门(内部题11) 输入格式 第一行,三个整数$T,K,M$,分别代表数据组数.良好标准和整数范围.接下来$T$行,每行一个整数$n_i$,代表一个询问. 输出格式 输出$T$行,在第$i$行对 ...
- 区间查询异或最大值——cf1100F,hdu6579(线性基)
hdu6579 题意初始时有n个数,现在有q次操作: 查询[l,r]内选择一些数使得异或和最大:在末尾加入一个数.题目强制在线. 思路对于i我们记录[1,i]每个基底最靠近i的位置和这个位置的值,然后 ...
- “美登杯”上海市高校大学生程序设计 E. 小花梨的数组 (线段树)
https://acm.ecnu.edu.cn/contest/173/problem/E/ 分析: 考虑这样一种情况,如果对一个点连续地做几次乘操作,那么之后紧跟着的除操作只需要将乘操作的次数减少即 ...
- codeforces 617 E. XOR and Favorite Number(莫队算法)
题目链接:http://codeforces.com/problemset/problem/617/E 题目: 给你a1 a2 a3 ··· an 个数,m次询问:在[L, R] 里面又多少中 [l, ...
- ES命令
基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味 ...