作者:刘耀

QQ:22102107

一、目标(targeting Minions)

1.匹配Minions Id

匹配所有 (*)

[root@node1 salt]# salt '*' test.ping
node2.minion:
True

匹配后面是.minion的

[root@node1 salt]# salt '*.minion' test.ping
node2.minion:
True

匹配一个(?)

[root@node1 salt]# salt '*node?.minion' test.ping
node2.minion:
True

匹配多个[1-5]

[root@node1 salt]# salt 'node[1-5].minion' test.ping
node2.minion:
True

匹配某个主机和某个

[root@node1 salt]# salt 'node[2,3].minion' test.ping
node2.minion:
True

匹配a-z

[root@node1 salt]# salt 'node2.minio[n-z]' test.ping
node2.minion:
True

2.正则匹配:

-E

#匹配node2或者node3后面是.minion的主机
[root@node1 salt]# salt -E '(node2|node3).minion' test.ping
node2.minion:
True 可以在sls的配置文件里使用
修改
vim /etc/salt/states/top.sls
base:
#匹配node2或者node3后面是.minion的主机
'(node2|node3).minion':
#使用正则
- match: pcre
- init.pkg

-L

#匹配多个主机,逗号分隔
[root@node1 states]# salt -L 'node2.minion,node3,minion' test.ping
node2.minion:
True

-S ip地址匹配

salt -S '0.0.0.0/24' test.ping

二、模块

1.hosts模块

#获取IP地址
[root@node1 states]# salt '*' hosts.get_ip node2
node2.minion:
127.0.0.1

2.service模块

获取minion主机所有服务

[root@node1 states]# salt '*' service.get_all
node2.minion:
- abrt-ccpp
- abrt-oops
- abrtd
- acpid
- atd
- auditd
- blk-availability
- control-alt-delete
- crond
- cups
- elasticsearch
- exim
- halt
- htcacheclean
- httpd
- init-system-dbus
- ip6tables
- ipmi
- iptables
- irqbalance
- kexec-disable
- killall
- logstash
- lvm2-lvmetad
- lvm2-monitor
- messagebus
- netconsole
- netfs
- network
- ntpd
- ntpdate
- php-fpm
- plymouth-shutdown
- portreserve
- pptpd
- prefdm
- psacct
- quit-plymouth
- quota_nld
- rc
- rcS
- rcS-emergency
- rcS-sulogin
- rdisc
- readahead
- readahead-collector
- readahead-disable-services
- restorecond
- rsyslog
- salt-minion
- sandbox
- saslauthd
- serial
- shellinaboxd
- single
- smartd
- snmpd
- snmptrapd
- splash-manager
- sshd
- start-ttys
- svnserve
- sysstat
- tty
- ttyS0
- udev-post
- zabbix-agent
- zabbix-agentd
- zabbix_agentd
- zabbix_server 查看服务运行状态 [root@node1 states]# salt '*' service.status sshd
node2.minion:
True 重启某个服务 [root@node1 states]# salt '*' service.reload sshd
node2.minion:
True

3.salt-cp

root@node1 minions]# salt-cp '*' /etc/passwd /tmp/passwd
{'node2.minion': {'/tmp/passwd': True}}
[root@node1 minions]#

返回写入数据库

returners.mysql

默认情况下,发送给salt minion的命令执行结果将返回给salt master.

Saltstack Returner的接口允许将结果发送给任意系统

1.master端安装mysql

第一种:

源码包安装步骤省略

第二种:

yum install mysql-server -y

启动mysql服务

2.minion端部署MySQL-python

yum install MySQL-python

原理是minion把数据直接推到master的数据库中

3.在master端创建数据库

进入数据库

1.创建库名

CREATE DATABASE  `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci; 2.创建jid表 USE `salt`; DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
`jid` varchar(255) NOT NULL,
`load` mediumtext NOT NULL,
UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.创建return表 存放返回的数据 DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
`fun` varchar(50) NOT NULL,
`jid` varchar(255) NOT NULL,
`return` mediumtext NOT NULL,
`id` varchar(255) NOT NULL,
`success` varchar(10) NOT NULL,
`full_ret` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
KEY `id` (`id`),
KEY `jid` (`jid`),
KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 4.创建事件表 DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 5.授权访问 grant all on salt.* to salt@'%' identified by 'salt'; 注:%不包括localhosts

4.在master里修改配置文件

# vi /etc/salt/master
在配置文件后面追加以下内容 mysql.host: '115.29.51.8'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306

5.在minion里修改配置文件

# vi /etc/salt/minion
在配置文件后面追加以下内容 mysql.host: '115.29.51.8'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306

6.master和minion端都重启服务

master端:

# service salt-master restart

minion端:

# /etc/init.d/salt-minion restart

7.测试

#salt '*' test.ping --return mysql
node2.minion:
True # salt '*' cmd.run 'df -TH' --return=mysql
node2.minion:
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext3 8.5G 4.3G 3.8G 54% /

在数据库里查看

方法2:

如果每次执行不加--return=mysql
由master端将返回的数据写入数据库

1.修改master配置文件

# vi /etc/salt/master
在配置文件后面追加以下内容 master_job_cache: mysql

2.重启master

# service salt-master restart

3.测试

过程略

2.saltstack笔记之目标,模块,返回写入数据库的更多相关文章

  1. saltstack:使用教程之一安装及客户端返回写入MySQL

    saltstack使用教程: 1.安装: 需要epel的yum源,没有的话把下面的复制并新建个文件 /etc/yum.repos.d/epel.repo 粘贴即可: [epel] name=Extra ...

  2. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  3. Python标准库笔记(10) — itertools模块

    itertools 用于更高效地创建迭代器的函数工具. itertools 提供的功能受Clojure,Haskell,APL和SML等函数式编程语言的类似功能的启发.它们的目的是快速有效地使用内存, ...

  4. Python标准库笔记(8) — pprint模块

    struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串. Python版本: 2.x & 3.x 该模块作用是完成Python数值和C语言结构体的Pyt ...

  5. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  6. python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

  7. python笔记之bisect模块

    python笔记之bisect模块 当你决定使用二分搜索时,这个模块会给你带来很大的帮助. 例子 import bisect L = [1,3,3,6,8,12,15] x = 3 #在L中查找x,x ...

  8. python笔记之itertools模块

    python笔记之itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生 ...

  9. python笔记之ZipFile模块

    python笔记之ZipFile模块 zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下, ...

随机推荐

  1. 【CodeForces 227A】Where do I Turn?叉积

    题意 ABC的位置关系只有三种可能: 1.在一条直线上,输出TOWARDS A--B--C 2.AB 和BC垂直,B为直角顶点,AB左侧是C,输出LEFT C--B | A 3.AB 和BC垂直,B为 ...

  2. 【CodeForces 471A】MUH and Sticks

    题 题意 给你六根木棍的长度,熊需要头比身体短,大象需要头和身体一样,四肢要一样长,否则就是外星人.请你判断能组成哪一个. 分析 暴力,循环看一下每根有几根相同的,然后如果有四根都是有四根相同的&am ...

  3. Oracle自定义函数实例

    1. 传入一个值, 如果该值为0,则返回空. CREATE OR REPLACE FUNCTION Fun_Test(p IN NUMBER) RETURN VARCHAR2 IS v_Result ...

  4. BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论

    这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...

  5. asp.net 实现在线打印功能,jQuery打印插件PrintArea实现自动分页

    使用的组件:jQuery打印插件PrintArea,有兴趣的可以研究一下. 使用方法略过,这里将介绍如何实现打印多页是可以分页. 现在提供两种方法思路: 1.根据特定的打印机型号和使用的纸张类型,然后 ...

  6. DRUPAL-PSA-CORE-2014-005 && CVE-2014-3704 Drupal 7.31 SQL Injection Vulnerability /includes/database/database.inc Analysis

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Use Drupal to build everything from perso ...

  7. 安装coreseek找不到mysql

    1.安装 coreseek-3.2.14 遇到问题:“ERROR: cannot find MySQL include files,随即在网上搜索各种答案说是要找到mysql.h的正确路径加入./co ...

  8. ModSecurity SQL注入攻击

    ModSecurity是 一个入侵探测与阻止的引擎,它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.它可以作为Apache Web服务器的一个模块或单独的应用程序来运行.ModSecur ...

  9. javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection

    客户端向服务器发送数据时,份两种情况,SSL单向验证和SSL双向验证 1.SSL单向验证时 代码如下: import java.io.IOException; import java.util.Has ...

  10. msmms (一) sms与mms区别

    sms与mms区别 SMS,Short Messaging Service短信业务,可以通过手机等移动设备发送文本型短信.SMS这个术语最早在80年代初期出现,但一直到了90年代初才开始进入商用市场, ...