自动化运维工具SaltStack05 – SaltStack配置管理2

  • A+
所属分类:DevOps saltstack

前面介绍了:

今天来介绍下SaltStack配置管理的include的用法与远程执行匹配主机名。

一、include用法

        include:中文意思为包括、使成为...的一部分的意思。

        我们都知道要运行java环境必须要安装JDK和tomcat、我们先写一个安装JDK的状态,然后再安装Tomcat的状态里用include调用安装JDK的状态。

1.1、安装JDK的状态

# cat /srv/salt/base/web/jdk.sls 
jdk-install:
  pkg.installed:
    - name: java-1.8.0-openjdk

1.2、安装Tomcat状态

# cat /srv/salt/base/web/tomcat1.sls 
include:         #将前面写的jdk状态include进来
  - web.jdk

tomcat-install:
  file.managed:
    - name: /usr/local/src/apache-tomcat-8.0.46.tar.gz
    - source: salt://web/files/apache-tomcat-8.0.46.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src && tar zxf apache-tomcat-8.0.46.tar.gz && mv apache-tomcat-8.0.46 /usr/local/ && ln -s /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat
    - unless: test -L /usr/local/tomcat && test -d /usr/local/apache-tomcat-8.0.46

1.3、执行这个安装Tomcat的状态

# salt * state.sls web.tomcat1           #执行这个状态

如果这个状态不是再默认的base环境下要如何来执行哪?

salt 'linux-node2*' state.sls redis-cluster.redis-master saltenv=prod    #可以通过saltenv来声明执行的环境

二、配置管理模块说明

2.1、pkg模块

pkg是虚拟的,不用管是什么操作系统,如果centos系统pkg模块会使用yum安装软件包,如果是其他的系统它也会使用系统支持安装工具,所以这个不需要担心。

  • pkg模块用得到的参数
  • pkg.installed     #确保软件包已安装,如果没有安装就安装。
  • pkg.latest       #确保软件是最新版本,如果不是,进行升级。
  • pkg.remove     #确保软件包已卸载,如果之前已安装,进行卸载。
  • pkg.purge       #除了remove外,也会删除其配件
  • pkgs.named     #列表,(都想下载那些软件包)

2.2、service模块

  • service.running    #确保服务处于运行状态,如果没有运行就启动。
  • service.enabled     #确保服务开机自动启动
  • service.disabled     #确保服务开机不自启动
  • service.dead        #确保服务当前没有运行,如果运行就停止

2.3、file模块

  • file.managed    #保证minion端的文件存在并且为对应master端的状态
  • file.recurse     #保证minion端的目录及目录下的文件存在并且为对应master端的状态
  • file.append     #往指定文件里追加文本
  • file.absent      保证文件不存在,如果存在就删除

三、SaltStack远程执行时匹配主机

3.1、通配符匹配

salt '*' test.ping         #*表示所有
salt 'linux-node1*' test.ping         #linux-node1*表示linux-node1开头的所有主机
salt '*example*' test.ping       #example主机名包含example的所有服务器
salt 'web?' test.ping       #匹配主机名web后有一个字符的所有主机
salt 'web[1-5]' test.ping      #匹配web1-5的所有服务器
salt 'web[1,4]' test.ping      #匹配web1,web4两台服务器

3.2、正则匹配

salt -E 'linux-node(1|2).example.com' test.ping     

3.3、top.sls里使用正则匹配

base:
  'web1-(prod|devel)':
-    match: pcre
-    webserver

3.4、列表匹配

salt -L 'web1,web2,web3' test.ping

3.5、Grains匹配

salt -G 'os:CentOS' test.ping
salt -G 'cpuarch:x86_64' grains.item num_cpus

3.6、IP段匹配

salt -S 192.168.56.0/24 test.ping

3.7、批量处理,一次性执行执行多少台服务器

salt '*' -b 10 test.ping        #指定一次性执行10台

3.8、批量处理,按百分比执行

salt -G 'os:RedHat' --batch-size 25% apache.signal uptime

 

 

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: