作者:刘耀

QQ:22102107

一、目标(targeting Minions)

1.匹配Minions Id

匹配所有 (*)

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

匹配后面是.minion的

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

匹配一个(?)

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

匹配多个[1-5]

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

匹配某个主机和某个

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

匹配a-z

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

2.正则匹配:

-E

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

-L

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

-S ip地址匹配

  1. salt -S '0.0.0.0/24' test.ping

二、模块

1.hosts模块

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

2.service模块

  1. 获取minion主机所有服务
  2. [root@node1 states]# salt '*' service.get_all
  3. node2.minion:
  4. - abrt-ccpp
  5. - abrt-oops
  6. - abrtd
  7. - acpid
  8. - atd
  9. - auditd
  10. - blk-availability
  11. - control-alt-delete
  12. - crond
  13. - cups
  14. - elasticsearch
  15. - exim
  16. - halt
  17. - htcacheclean
  18. - httpd
  19. - init-system-dbus
  20. - ip6tables
  21. - ipmi
  22. - iptables
  23. - irqbalance
  24. - kexec-disable
  25. - killall
  26. - logstash
  27. - lvm2-lvmetad
  28. - lvm2-monitor
  29. - messagebus
  30. - netconsole
  31. - netfs
  32. - network
  33. - ntpd
  34. - ntpdate
  35. - php-fpm
  36. - plymouth-shutdown
  37. - portreserve
  38. - pptpd
  39. - prefdm
  40. - psacct
  41. - quit-plymouth
  42. - quota_nld
  43. - rc
  44. - rcS
  45. - rcS-emergency
  46. - rcS-sulogin
  47. - rdisc
  48. - readahead
  49. - readahead-collector
  50. - readahead-disable-services
  51. - restorecond
  52. - rsyslog
  53. - salt-minion
  54. - sandbox
  55. - saslauthd
  56. - serial
  57. - shellinaboxd
  58. - single
  59. - smartd
  60. - snmpd
  61. - snmptrapd
  62. - splash-manager
  63. - sshd
  64. - start-ttys
  65. - svnserve
  66. - sysstat
  67. - tty
  68. - ttyS0
  69. - udev-post
  70. - zabbix-agent
  71. - zabbix-agentd
  72. - zabbix_agentd
  73. - zabbix_server
  74. 查看服务运行状态
  75. [root@node1 states]# salt '*' service.status sshd
  76. node2.minion:
  77. True
  78. 重启某个服务
  79. [root@node1 states]# salt '*' service.reload sshd
  80. node2.minion:
  81. True

3.salt-cp

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

返回写入数据库

returners.mysql

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

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

1.master端安装mysql

  1. 第一种:
  2. 源码包安装步骤省略
  3. 第二种:
  4. yum install mysql-server -y
  5. 启动mysql服务

2.minion端部署MySQL-python

  1. yum install MySQL-python
  2. 原理是minion把数据直接推到master的数据库中

3.在master端创建数据库

  1. 进入数据库
  2. 1.创建库名
  3. CREATE DATABASE `salt`
  4. DEFAULT CHARACTER SET utf8
  5. DEFAULT COLLATE utf8_general_ci;
  6. 2.创建jid
  7. USE `salt`;
  8. DROP TABLE IF EXISTS `jids`;
  9. CREATE TABLE `jids` (
  10. `jid` varchar(255) NOT NULL,
  11. `load` mediumtext NOT NULL,
  12. UNIQUE KEY `jid` (`jid`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  14. 3.创建return 存放返回的数据
  15. DROP TABLE IF EXISTS `salt_returns`;
  16. CREATE TABLE `salt_returns` (
  17. `fun` varchar(50) NOT NULL,
  18. `jid` varchar(255) NOT NULL,
  19. `return` mediumtext NOT NULL,
  20. `id` varchar(255) NOT NULL,
  21. `success` varchar(10) NOT NULL,
  22. `full_ret` mediumtext NOT NULL,
  23. `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  24. KEY `id` (`id`),
  25. KEY `jid` (`jid`),
  26. KEY `fun` (`fun`)
  27. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  28. 4.创建事件表
  29. DROP TABLE IF EXISTS `salt_events`;
  30. CREATE TABLE `salt_events` (
  31. `id` BIGINT NOT NULL AUTO_INCREMENT,
  32. `tag` varchar(255) NOT NULL,
  33. `data` mediumtext NOT NULL,
  34. `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  35. `master_id` varchar(255) NOT NULL,
  36. PRIMARY KEY (`id`),
  37. KEY `tag` (`tag`)
  38. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  39. 5.授权访问
  40. grant all on salt.* to salt@'%' identified by 'salt';
  41. 注:%不包括localhosts

4.在master里修改配置文件

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

5.在minion里修改配置文件

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

6.master和minion端都重启服务

  1. master端:
  2. # service salt-master restart
  3. minion端:
  4. # /etc/init.d/salt-minion restart

7.测试

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

在数据库里查看

方法2:

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

1.修改master配置文件

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

2.重启master

  1. # service salt-master restart

3.测试

  1. 过程略

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. 【BZOJ-2588】Count on a tree 主席树 + 倍增

    2588: Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MBSubmit: 3749  Solved: 873[ ...

  2. JDBC中prepareStatement 和Statement 的区别

    package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedSta ...

  3. UVA294DIvisors(唯一分解定理+约数个数)

    题目链接 题意:输入两个整数L,U(L <= U <= 1000000000, u - l <= 10000),统计区间[L,U]的整数中哪一个的正约数最多,多个输出最小的那个 本来 ...

  4. javascript 的button onclick事件不起作用的解决方法

    在项目中遇到个问题:servlet向前端返回如下按钮,当course_ID为数字是onclick事件正常,但当course_ID含有字母时onclick事件就不起作用.网上找了很多方法都不管用,最后自 ...

  5. awk命令--update20150120

    简介 awk是一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符分割成field,切开的部分再进行各种分析处理. 模式和动作: 任何awk语句都是由模式和动作组成,模式部分决定动作语句何时触发 ...

  6. varnish4.0简介

    Varnish 4.0 简介 Varnish 是一款开源的HTTP加速器和反向代理服务器,它的主要特点有: (1)是基于内存缓存,重启后数据将消失.(2)利用虚拟内存方式,io性能好.(3)支持设置0 ...

  7. Solr之搭建Solr5.2.1服务并从Mysql上导入数据

    原文地址:http://www.bkjia.com/webzh/1026243.html

  8. ES+Hbase对接方案概述

    方案背景 Hbase的索引方案有很多,越来越多的人开始选择ES+Hbase的方案,其实该方案并没有想象中那么完美,ES并发低,同时查询速度相对Hbase也慢很多,那为什么会选择他呢,它的写入比较快,如 ...

  9. svn命令在linux下的使用

    svn命令在linux下的使用 SVN软件版本管理 三 12th, 2008 转载本站文章请注明,转载自:扶凯[[url]http://www.php-oa.com[/url]] 本文链接: [url ...

  10. C++中map的概念,与简单操作

     来源:http://blog.csdn.net/wallwind/article/details/6876892 C++map学习   map<Key, Data, Compare, Allo ...