一、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. php函数漏洞

    1.ereg — 正则表达式匹配 此函数遇 %00 截断. <?php $a = $_GET['pwd']; var_dump(ereg ("^[0-9]+$", $a)); ...

  2. mybatis返回新增对象的主键

    加这两行就可以返回这个插入对象的自增的主键<insert id="insertSeatPortraitData" parameterType="seatPortra ...

  3. SpringBoot 快速集成 Elastic Job

    一.引入依赖 <dependency> <groupId>com.github.kuhn-he</groupId> <artifactId>elasti ...

  4. linux运维、架构之路-MySQL主从复制

    一.MySQL主从复制原理图  MySQL主从复制原理:实现主从复制原理是三个线程完成的,主的I/O线程,备的I/O线程与SQL线程 1.首先主库db01需要开启binlog.授权一个replicat ...

  5. xss盲打

    什么是xss盲打? 简单来说,盲打就是在一切可能的地方尽可能多的提交xss语句,然后看哪一条会被执行,就能获取管理员的cooike.趁着没过期赶紧用了,这样就能直接管理员进后台.然后再上传一句话,大马 ...

  6. 透明的LISTVIEW

    .NET就是封装的太密了,有时很多时候让我们反而更麻烦,特别是COPY不到的时候,又不懂自已想的话,说土一点就是死路一条, 记得以前经常用一句话,C++支持,可C#他不支持啊!就这样安慰自已 其实做多 ...

  7. Eclipse中安装和使用FindBugs

    FindBugs在Eclipse的离线安装:   1 到http://findbugs.sourceforge.net/downloads.html下载20131115123549_nlpir_ict ...

  8. django搭建一个小型的服务器运维网站-用户登陆与session

    目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...

  9. 理解json和jsonp的定义和区别以及如何实际使用

    (一)什么是跨域请求? 首先要理解什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的. 其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景. 常见 ...

  10. Sending form data

    https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data This arti ...