saltstack数据返回和模块定义

(本文所有主机ip均为172.25.17网段,主机名和ip相对应。比如172.25.17.3对应server3,并且所有salt包和python包需要自行下载并配置到yum源中)

数据返回

模型:将minion返回的数据通过master存储在数据库中
这里写图片描述
实现:
1.在server3端安装mysql-server和MySQL-python并开启数据库服务:

[root@server3 ~]# yum install mysql-server -y
[root@server3 ~]# yum install MySQL-python -y

2.新建.sql文件test.sql:

[root@server3 ~]# vim test.sql

文件内容:

  1 CREATE DATABASE  `salt`
  2   DEFAULT CHARACTER SET utf8
  3   DEFAULT COLLATE utf8_general_ci;
  4 
  5 USE `salt`;
  6 
  7 --
  8 -- Table structure for table `jids`
  9 --
 10 
 11 DROP TABLE IF EXISTS `jids`;
 12 CREATE TABLE `jids` (
 13   `jid` varchar(255) NOT NULL,
 14   `load` mediumtext NOT NULL,
 15   UNIQUE KEY `jid` (`jid`)
 16 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 17 -- CREATE INDEX jid ON jids(jid) USING BTREE;
 18 
 19 --
 20 -- Table structure for table `salt_returns`
 21 --
 22 
 23 DROP TABLE IF EXISTS `salt_returns`;
 24 CREATE TABLE `salt_returns` (
 25   `fun` varchar(50) NOT NULL,
 26   `jid` varchar(255) NOT NULL,
 27   `return` mediumtext NOT NULL,
 28   `id` varchar(255) NOT NULL,
 29   `success` varchar(10) NOT NULL,
 30   `full_ret` mediumtext NOT NULL,
 31   `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 32   KEY `id` (`id`),
 33   KEY `jid` (`jid`),
 34   KEY `fun` (`fun`)
 35 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 36 
 37 --
 38 -- Table structure for table `salt_events`
 39 --
 40 
 41 DROP TABLE IF EXISTS `salt_events`;
 42 CREATE TABLE `salt_events` (
 43 `id` BIGINT NOT NULL AUTO_INCREMENT,
 44 `tag` varchar(255) NOT NULL,
 45 `data` mediumtext NOT NULL,
 46 `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 47 `master_id` varchar(255) NOT NULL,
 48 PRIMARY KEY (`id`),
 49 KEY `tag` (`tag`)
 50 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 51 

将这个文件导入数据库:
sql文件导入之后会在数据库中创建相应的库和表,用来存储返回的数据。

[root@server3 ~]# mysql < test.sql 

3.同样在server5端也安装MySQL-python:

[root@server5 ~]# yum install MySQL-python -y

4.测试servre5端能否成功返回:

[root@server3 ~]# salt server5 test.ping --return mysql
server5:
    True

5.编辑server3端的配置文件写入配置:

[root@server3 ~]# vim /etc/salt/master

写入:

1056 # Which returner(s) will be used for minion's result:
1057 #return: mysql
1058 master_job_cache: mysql
1059 mysql.host: 'localhost'
1060 mysql.user: 'salt'
1061 mysql.pass: 'westos'
1062 mysql.db: 'salt'
1063 mysql.port: '3306'

之后重启服务:

[root@server3 ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                               [  OK  ]
Starting salt-master daemon:                               [  OK  ]

6.进入数据库进行用户授权:

扫描二维码关注公众号,回复: 2850200 查看本文章
[root@server3 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.71 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all on salt.* to salt@localhost identified by 'westos';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

7.执行指令获取返回数据:

[root@server3 ~]# salt server5 cmd.run 'df -h'
[WARNING ] Returner unavailable: MySQL returner could not connect to database: (1045, "Access denied for user 'salt'@'server3' (using password: YES)")
server5:
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   19G  1.1G   17G   6% /
    tmpfs                         499M   16K  499M   1% /dev/shm
    /dev/vda1                     485M   33M  427M   8% /boot

这里如果出现的WARNING说用户salt无法连接数据库,可能重启salt-master服务也会出错。这时候重启虚拟机。重启虚拟机开启数据库服务和salt-master服务,重新执行指令获取返回数据,如果出现以下错误:
这里写图片描述
需要重启server5端的salt-minion服务。
再次获取数据,没有WARNING警告说明获取数据成功:

[root@server3 ~]# salt server5 cmd.run 'df -h'
server5:
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   19G  1.1G   17G   6% /
    tmpfs                         499M   32K  499M   1% /dev/shm
    /dev/vda1                     485M   33M  427M   8% /boot

这时在数据库中也可以看到返回的数据:

mysql> use salt;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_salt |
+----------------+
| jids           |
| salt_events    |
| salt_returns   |
+----------------+
3 rows in set (0.00 sec)
mysql> select * from salt_returns;

返回数据:
这里写图片描述

模块定义

1.在server3端新建目录/srv/salt/_modules并进入目录新建python文件:

[root@server3 ~]# mkdir /srv/salt/_modules
[root@server3 ~]# cd /srv/salt/_modules/
[root@server3 _modules]# vim my_disk.py

文件内容:
定义一个df -h 模块:

  1 #/usr/bin/env python
  2 def df():
  3         return __salt__['cmd.run']('df -h')

2.在所有minion端刷新模块:

[root@server3 _modules]# salt '*' saltutil.sync_modules
server5:
    - modules.my_disk
server3:
    - modules.my_disk
server6:
    - modules.my_disk
server4:
    - modules.my_disk

3.模块执行:

[root@server3 _modules]# salt '*' my_disk.df
server5:
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   19G  1.1G   17G   6% /
    tmpfs                         499M   32K  499M   1% /dev/shm
    /dev/vda1                     485M   33M  427M   8% /boot
server4:
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   19G  1.1G   17G   6% /
    tmpfs                         499M   16K  499M   1% /dev/shm
    /dev/vda1                     485M   33M  427M   8% /boot
server6:
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   19G  1.1G   17G   6% /
    tmpfs                         246M   16K  246M   1% /dev/shm
    /dev/vda1                     485M   33M  427M   8% /boot
server3:
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   19G  1.1G   17G   7% /
    tmpfs                         499M   36K  499M   1% /dev/shm
    /dev/vda1                     485M   33M  427M   8% /boot

猜你喜欢

转载自blog.csdn.net/letter_A/article/details/81809148