2.saltstack笔记之目标,模块,返回写入数据库
作者:刘耀
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笔记之目标,模块,返回写入数据库的更多相关文章
- saltstack:使用教程之一安装及客户端返回写入MySQL
saltstack使用教程: 1.安装: 需要epel的yum源,没有的话把下面的复制并新建个文件 /etc/yum.repos.d/epel.repo 粘贴即可: [epel] name=Extra ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- Python标准库笔记(10) — itertools模块
itertools 用于更高效地创建迭代器的函数工具. itertools 提供的功能受Clojure,Haskell,APL和SML等函数式编程语言的类似功能的启发.它们的目的是快速有效地使用内存, ...
- Python标准库笔记(8) — pprint模块
struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串. Python版本: 2.x & 3.x 该模块作用是完成Python数值和C语言结构体的Pyt ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- python笔记之常用模块用法分析
python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...
- python笔记之bisect模块
python笔记之bisect模块 当你决定使用二分搜索时,这个模块会给你带来很大的帮助. 例子 import bisect L = [1,3,3,6,8,12,15] x = 3 #在L中查找x,x ...
- python笔记之itertools模块
python笔记之itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生 ...
- python笔记之ZipFile模块
python笔记之ZipFile模块 zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下, ...
随机推荐
- 【HDU 1757】 A Simple Math Problem
题 Description Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 1 ...
- angularjs-$interval使用
1. 简单使用 var app = angular.module("app",[]); app.controller("AppCtrl", function($ ...
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程
相关学习资料 http://www.360doc.com/content/10/0602/08/1466362_30787868.shtml http://www.gxu.edu.cn/college ...
- C#获得系统打开的端口和状态
实际是通过c#编程方式调用了CMD命令行,然后调用netstat命令,然后将CMD命令的输出流转到了C#控制台程序上.也可以将结果输出到文件. using System; using System.C ...
- ExtJS入门教程01,Window如此简单,你怎能不会?
这是一系列ExtJS教程,今天的是第一篇,主要介绍ExtJS中Window的基本用法.希望大家能够支持! 来吧,创建一个漂亮的弹出窗 var win = Ext.create("Ext.Wi ...
- 回顾bidirectional path tracing
最近因为研究需要,回顾了一下BDPT,主要看VEACH的那篇论文,同时参考了pbrt,mitsuba的实现,自己写了一份新的bdpt实现.以前实现的那一份BDPT不是基于物理的,而且无法处理镜面和透明 ...
- php设置cookie,在js中如何获取
在php中设置cookie. $email="abc@163.com"; setcookie("y_email",$email,time()+3600,&quo ...
- PyOpenGL利用文泉驿正黑字体显示中文字体
摘要:在NeHe的OpenGL教程第43课源代码基础上,调用文泉驿正黑字体实现中文字体的显示 在OpenGL中显示汉字一直是个麻烦的事情,很多中文书籍的文抄公乐此不疲地介绍各种方法及其在windows ...
- 最新 DEDECMS SQL 注入 0day
4月29日消息:国内安全研究团队“知道创宇”称截获到最新DEDECMS SQL注入0day,DEDECMS官网目前提供下载的最新版5.7也受影响,截止本告警发出时官方尚未给出补丁或解决方案,此漏洞利用 ...
- Android学习笔记之打钩显示输入的密码
利用EditText作为密码输入框是个不错的选择(只需设置输入类型为textPassword即可),保密且无需担心被盗取.但有时用户也不知道自己输入的是否正确,这时就应该提供一个“显示密码”的复选框, ...