saltstack state.sls常用功能模板编写

saltstack常用功能模块编写

一.简介

Master - 控制中心,salt命令运行和资源状态管理端

Minions - 需要管理的客户端机器,会主动去连接Master端,并从Master端得到资源状态信息,同步资源管理信息

States - 配置管理的指令集

Modules- 包含命令行下运行的指令,和在配置文件里面使用的指令模块可以的函数可以在命令行下运行

Grains - minion端的变量,静态

pillar - minion端的变量,动态,可自定义

highstate - 给minion永久添加状态,从sls配置文件读取到

salt schedule - 自动保持客户端配置

二.常用功能

执行命令cmd.run

Sls模板state.sls

Pillar

自定义模块

三.State.sls

本文主要介绍state.sls常用基础功能写法,主要包含通过sls模板实现以下几块的管理:

  1. 1.    用户管理
  2. 2.    文件管理
  3. 3.    目录管理
  4. 4.    安装包管理
  5. 5.    计划任务

用户管理

用户管理分为创建和删除用户,分别对应user.present和user.absent,如下sls模板,如用户不存在,则新建用户admin和admin1,并设置相关属性:

[[email protected]]# catinit.sls

admin:

user.present:

- shell: /bin/bash

- home: /home/admin

- uid: 888

admin1:

user.present:

- uid: 1111

如下则是删除用户

admin:

user.absent:

- purge:True

- force:True

Purge:为True指删除该用户家目录以及下面的文件,类似于userdel –r

Force:为True指即使该用户当前在线也强制删除

添加用户的模板一般用于其他sls调用,如安装mysql的sls模板可以先调用此模板新建mysql用户。如果是临时需要新建用户,直接用cmd.run即可

 

文件管理:

文件管理主要分为文件的上传和文件附加内容

文件上传管理一般通过file.managed,如下sls,即为在minion端备份gz包之后,将gz包传到minion目录/usr/local下,并设置相关属性

[[email protected]]# cat init.sls

/usr/local/nginx-2.1.2.tar.gz:

file.managed:

- source:salt://nginx/nginx-xxx.xxx.tar.gz

- user: root

- group:root

- mode: 755

- backup:minion

- template:jinja

先备份在minion端的目录/var/cache/salt/minion/file_backup下,然后上传,长期使用备份目录会增大,恢复可用salt命令恢复或者直接手动考备份文件均可

file.append用于追加文件,如下,用于安装完jdk之后将环境变量追加入profile文件里面(假设jdk安装目录为下),用于jdk安装模块调用:

/etc/profile:

file.append:

- text:

- "exportJAVA_HOME=/usr/local/jdk1.6.0_13"

- "exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH"

- "exportCLASSPATH=$JAVA_HOME/lib/:$JAVA_HOME/jre/lib:$CLASSPATH"

目录管理

       file.recurse将目录下的所有文件覆盖到目标minion目录,目录递归复制,类似于rsync,如果master端减少了文件,minion端默认不会删除,如下将本地conf目录的文件全部同步到线上conf,并设置相关属性

/usr/local/nginx/conf:

file.recurse:

-source: salt://nginx/conf

-user: root

-group: root

-file_mode: 644

-dir_mode: 755

-template: jinja

- backup: minion

- makedirs: True

- include_empty: True

- recurse:

- user

- group

- mode

以上模板注意空格调整成一致,一般缩进空2格

新建目录,如新建/web/logstash目录,并设置相关属性,一般用于其他模板调用

/web/logstash:

file.directory:

- user: web

- group: web

- file_mode:644

- dir_mode:755

- makedirs:True

-include_empty: True

- template:jinja

- backup:minion

包管理

       如下,如在linux下即调用系统yum命令安装相关包,常用于初始化环境或者其他模块调用依赖包,如nginx的pcre-devel等

installpackages:

pkg.latest:

- pkgs:

- aspell

- ncurses

- ncurses-devel

- pcre-devel

- telnet

- libcurl

- libcurl-devel

计划任务

添加计划任务salt ‘xxx‘ cron.set_job root 0 3 ‘*‘ ‘*‘ ‘*‘ "echo‘abc‘" "mytest"

删除计划任务salt ‘xxx‘ cron.rm_job root "echo ‘abc‘“

第二种方式就是写sls也可做计划任务

/usr/local/test.sh >> /var/log/test.log2>&1:

cron.present:

- identifier:test cron  #计划任务描述,同上面的mytest

-user: root

-minute: ‘0‘

- hour: ‘4‘

/usr/sbin/ntpdatetime.windows.com:

cron.present:

- identifier: ntpdate rsync

- user: root

- minute: ‘*/30‘

如下是一个完整的nginx安装模板:整个模板的功能就是讲nginx安装包通过file.managed上传到相关目录,调用cmd.run执行安装命令,调用用户管理模板新建用户,调用目录管理上传配置文件目录以及目录内部配置文件。

#用include调用引入外部模板,用于新建nginx需要的用户,新建用户模板见上面用户管理

include:

- nginx_user

#安装nginx

install_nginx:

cmd.run:

- name: tar -zxvf nginx-2.1.2.tar.gz&& cd nginx-2.1.2 && sh configure --prefix=/usr/local/nginx--with-http_ssl_module --with-http_stub_status_module && make&& make install

- cwd: /usr/local  #执行上面的命令需要在此目录

- unless: test -f/usr/local/nginx/sbin/nginx #测试nginx此文件不存在,则执行上面name后面的命令

- require:

- file: /usr/local/nginx-2.1.2.tar.gz  #执行之前需要先执行此模块,此模块写在下面

#上传nginx安装包模块

/usr/local/nginx-2.1.2.tar.gz:

file.managed:

- source: salt://nginx/nginx-2.1.2.tar.gz

- unless: test -f /usr/local/nginx-2.1.2.tar.gz

- user: root

- group: root

- mode: 755

- template: jinja

- require:

- sls: nginx_user

#上传nginx配置文件模块

/usr/local/nginx/conf:

file.recurse:

- source: salt://nginx/conf

- user: root

- group: root

- file_mode: 644

- dir_mode: 755

- template: jinja

- backup: minion

- makedirs: True

- include_empty: True

- recurse:

- user

- group

- mode

- require:

- cmd: install_nginx

注意上面用到的依赖关系和模板外部调用方法,如下,这里不做详解,可自行查询

include

- modulename

require

- file:

- cmd:

- sls:

此外还有:

变量使用

Watch用法

Pillar自定义变量

以及模块开发等,此文不做详述,后面文章可能会写到

时间: 2024-08-05 19:31:02

saltstack state.sls常用功能模板编写的相关文章

saltstack   state.sls 与 state.highstate

这里简单介绍一下state.sls 与 state.highstate 与区别,这也是自己在使用过程中的一点心得吧. 环境介绍:salt 2015.5.0 (Lithium) top.sls state.highstate 这个是全局的所有的环境的所有的状态生效: state.sls 用来指定特定sls进行处理. 当使用  salt '*' state.highstate 没有任何问题 可是当执行 salt '*' state.sls servers_packages 发现没法执行 翻看官方文档

saltstack/salt的state.sls的使用

SLS(代表SaLt State文件)是Salt State系统的核心.SLS描述了系统的目标状态,由格式简单的数据构成.这经常被称作配置管理 首先,在master上面定义salt的主目录,默认是在/srv/salt/下面,vim /etc/salt/master: file_roots: base: - /srv/salt dev: - /srv/salt-dev 然后,在/srv/salt下面创建top.sls文件(如果有的话,就不用创建了,直接编辑好了) vim top.sls base:

saltstack/salt的state.sls和pillar定义以及使用

SLS(代表SaLt State文件)是Salt State系统的核心.SLS描述了系统的目标状态,由格式简单的数据构成.这经常被称作配置管理 首先,在master上面定义salt的主目录,默认是在/srv/salt/下面,vim /etc/salt/master: file_roots:    base:      - /srv/salt    dev:     - /srv/salt-dev 然后,在/srv/salt下面创建top.sls文件(如果有的话,就不用创建了,直接编辑好了) vi

[转]WebPack 常用功能介绍

概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.template等.个人认为它的优点就是易用,而且常用功能基本都有,另外可以通过自己开发loader和plugin来满足自己的需求.这里就尽量详细的来介绍下一些基本功能的使用. 安装 npm install webpack 运行webpack webpack需要编写一个config文件,然后根据这个文件来执行需

SaltStack实战之配置管理-Jinja2模板

SaltStack实战之配置管理-Jinja2模板 学习 SaltStack SaltStack实战之配置管理-Jinja2模板 1. Salt yaml配置文件使用Jinja2模板介绍 1.1 File状态使用template参数 1.2 模板文件里面变量使用{{ 名称 }} 1.3 变量列表 2. 实战应用 1. Salt yaml配置文件使用Jinja2模板介绍 jinja2官方网站: http://jinja.pocoo.org/ 1.1 File状态使用template参数 - tem

WebStorm常用功能的使用技巧分享

WebStorm 是 JetBrain 公司开发的一款 JavaScript IDE,使用非常方便,可以使编写代码过程更加流畅. 本文在这里分享一些常用功能的使用技巧,希望能帮助大家更好的使用这款强大的 JavaScript 开发工具. 代码编辑 代码跳转: Ctrl + 左键 或者 Ctrl + B,可以跳转到函数或者变量的声明位置 调用位置: Alt + F7,查找调用者 自动补全: 最好是修改一下响应时间,Settings->Editors->General->Code Compl

html(三) -- 常用功能标签

媒体标签 <embed></embed> 属性:        hidden : 设置隐藏插件是否隐藏.        src :用于指定音乐的路径 超链接标签 <a></a> 属性: href  : 用于指定链接的资源.常用协议:file:. mailTo:. http:      target: 设置打开新资源的目标.属性对应的值:_Blank 在独立的窗口上打开新资源   _self 在当前窗口打开新资源. a标签的原理:    1. a标签的href

keepalived高可用的常用功能介绍

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器.本篇文章会介绍keepalived的安装,配置,还有keepalived的一些脚本,keepalived+nginx高可用实现和keepalived双机互为主从的实现. keep

WebPack常用功能介绍

概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.template等.个人认为它的优点就是易用,而且常用功能基本都有,另外可以通过自己开发loader和plugin来满足自己的需求.这里就尽量详细的来介绍下一些基本功能的使用. 上一篇已经介绍如何安装了,这里就不再重复了. 运行webpack webpack需要编写一个config文件,然后根据这个文件来执行需