Saltstack_使用指南08_远程执行-返回程序

时间:2022-07-26
本文章向大家介绍Saltstack_使用指南08_远程执行-返回程序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. 主机规划

salt 版本
1 [root@salt100 ~]# salt --version
2 salt 2018.3.3 (Oxygen)
3 [root@salt100 ~]# salt-minion --version
4 salt-minion 2018.3.3 (Oxygen)
Returners文档
https://docs.saltstack.com/en/latest/ref/returners/index.html

Returner Modules文档

https://docs.saltstack.com/en/latest/ref/returners/all/index.html#all-salt-returners

注意事项

修改了master或者minion的配置文件,那么必须重启对应的服务。

2. 数据库配置

2.1. 数据库安装

根据规划在 salt100 部署mariadb 数据库

1 # 数据库安装
2 yum install -y mariadb mariadb-server    
3 # 启动数据库
4 systemctl start mariadb.service   # 如果有必要可以设置为开机自启动
5 # 在「其他」机器安装,用于测试远程是否可以连接
6 yum install -y mariadb  

2.2. 字符集设置

配置文件也要修改

 1 [root@salt100 ~]# mysql
 2 Welcome to the MariaDB monitor.  Commands end with ; or g.
 3 Your MariaDB connection id is 2
 4 Server version: 5.5.60-MariaDB MariaDB Server
 5 
 6 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 7 
 8 Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
 9 
10 MariaDB [(none)]> show variables like '%char%';  
11 +--------------------------+----------------------------+
12 | Variable_name            | Value                      |
13 +--------------------------+----------------------------+
14 | character_set_client     | utf8                       |
15 | character_set_connection | utf8                       |
16 | character_set_database   | latin1                     |
17 | character_set_filesystem | binary                     |
18 | character_set_results    | utf8                       |
19 | character_set_server     | latin1                     |
20 | character_set_system     | utf8                       |
21 | character_sets_dir       | /usr/share/mysql/charsets/ |
22 +--------------------------+----------------------------+
23 8 rows in set (0.00 sec)
24 
25 MariaDB [(none)]> set character_set_database=utf8;  
26 Query OK, 0 rows affected (0.00 sec)
27 
28 MariaDB [(none)]> set character_set_server=utf8;  
29 Query OK, 0 rows affected (0.00 sec)
30 
31 MariaDB [(none)]> show variables like '%char%';  
32 +--------------------------+----------------------------+
33 | Variable_name            | Value                      |
34 +--------------------------+----------------------------+
35 | character_set_client     | utf8                       |
36 | character_set_connection | utf8                       |
37 | character_set_database   | utf8                       |
38 | character_set_filesystem | binary                     |
39 | character_set_results    | utf8                       |
40 | character_set_server     | utf8                       |
41 | character_set_system     | utf8                       |
42 | character_sets_dir       | /usr/share/mysql/charsets/ |
43 +--------------------------+----------------------------+
44 8 rows in set (0.01 sec)

2.3. 创建数据库、用户、授权

 1 # 创建数据库
 2 MariaDB [(none)]> CREATE DATABASE  `salt`
 3          DEFAULT CHARACTER SET utf8
 4          DEFAULT COLLATE utf8_general_ci;
 5 Query OK, 1 row affected (0.00 sec)
 6 
 7 MariaDB [(none)]> show create database salt;
 8 +----------+---------------------------------------------------------------+
 9 | Database | Create Database                                               |
10 +----------+---------------------------------------------------------------+
11 | salt     | CREATE DATABASE `salt` /*!40100 DEFAULT CHARACTER SET utf8 */ |
12 +----------+---------------------------------------------------------------+
13 1 row in set (0.00 sec)
14 
15 # 创建用户并授权
16 MariaDB [(none)]> grant all on salt.* to salt@'%' identified by 'salt';  # 用于远程访问
17 Query OK, 0 rows affected (0.00 sec)
18 
19 MariaDB [(none)]> grant all on salt.* to salt@'salt100' identified by 'salt';   # 用于本地访问
20 Query OK, 0 rows affected (0.00 sec)
21 
22 MariaDB [(none)]> flush privileges; 
23 Query OK, 0 rows affected (0.00 sec)
24 
25 MariaDB [(none)]> select user,host,password from mysql.user where user = 'salt';
26 +------+---------+-------------------------------------------+
27 | user | host    | password                                  |
28 +------+---------+-------------------------------------------+
29 | salt | %       | *36F75ABC6D500DFA6E905046FD8BE5E115812DD0 |
30 | salt | salt100 | *36F75ABC6D500DFA6E905046FD8BE5E115812DD0 |
31 +------+---------+-------------------------------------------+
32 2 rows in set (0.00 sec)

本地或者远程登录测试

1 mysql -hsalt100 -usalt -psalt
2 # 或者
3 mysql -h172.16.1.100 -usalt -psalt

2.4. 创建表

相关文档

https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html#module-salt.returners.mysql
 1 use salt;
 2 
 3 --
 4 -- Table structure for table `jids`
 5 --
 6 DROP TABLE IF EXISTS `jids`;
 7 CREATE TABLE `jids` (
 8   `jid` varchar(255) NOT NULL,
 9   `load` mediumtext NOT NULL,
10   UNIQUE KEY `jid` (`jid`)
11 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
12 
13 --
14 -- Table structure for table `salt_returns`
15 --
16 DROP TABLE IF EXISTS `salt_returns`;
17 CREATE TABLE `salt_returns` (
18   `fun` varchar(50) NOT NULL,
19   `jid` varchar(255) NOT NULL,
20   `return` mediumtext NOT NULL,
21   `id` varchar(255) NOT NULL,
22   `success` varchar(10) NOT NULL,
23   `full_ret` mediumtext NOT NULL,
24   `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
25   KEY `id` (`id`),
26   KEY `jid` (`jid`),
27   KEY `fun` (`fun`)
28 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
29 
30 --
31 -- Table structure for table `salt_events`
32 --
33 DROP TABLE IF EXISTS `salt_events`;
34 CREATE TABLE `salt_events` (
35 `id` BIGINT NOT NULL AUTO_INCREMENT,
36 `tag` varchar(255) NOT NULL,
37 `data` mediumtext NOT NULL,
38 `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
39 `master_id` varchar(255) NOT NULL,
40 PRIMARY KEY (`id`),
41 KEY `tag` (`tag`)
42 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3. 安装依赖包

1 salt '*' state.single pkg.installed name=MySQL-python    
2 或者
3 salt '*' cmd.run 'yum install -y MySQL-python'    

4. minion返回结果到MySQL数据库

由 minion 端直接返回到 MySQL 数据库,不需要经过 master 端。

相关文档

https://docs.saltstack.com/en/latest/topics/jobs/external_cache.html

4.1. minion端存储架构

4.2. 方式一:所有Minion端都添加设置

1 [root@salt03 ~]# vim /etc/salt/minion 
2 …………
3 mysql.host: 'salt100'
4 mysql.user: 'salt'
5 mysql.pass: 'salt'
6 mysql.db: 'salt'
7 mysql.port: 3306
8 
9 [root@salt03 ~]# systemctl restart salt-minion.service  # 修改了配置,需要重启 minion

4.3. 方式二:在master端添加设置

 1 [root@salt100 ~]# vim /etc/salt/master 
 2 …………
 3 ext_job_cache: mysql
 4 mysql.host: 'salt100'
 5 mysql.user: 'salt'
 6 mysql.pass: 'salt'
 7 mysql.db: 'salt'
 8 mysql.port: 3306
 9 
10 [root@salt100 ~]# systemctl restart salt-master.service   # 修改了配置,需要重启 master

4.4. 测试执行

 1 # 说明: 带了 --return mysql ,适合上面的方式一,在minion端配置
 2 # 如果没有带  --return mysql ,适合上面的方式二,在master端配置
 3 [root@salt100 ~]# salt '*' test.ping --return mysql  
 4 salt03:
 5     True
 6 salt01:
 7     True
 8 salt02:
 9     True
10 salt100:
11     True
12 [root@salt100 ~]# salt 'salt0*' cmd.run 'df -h' --return mysql  
13 salt03:
14     Filesystem      Size  Used Avail Use% Mounted on
15     /dev/sda3        18G  2.0G   16G  12% /
16     devtmpfs        901M     0  901M   0% /dev
17     tmpfs           911M   12K  911M   1% /dev/shm
18     tmpfs           911M  9.6M  902M   2% /run
19     tmpfs           911M     0  911M   0% /sys/fs/cgroup
20     /dev/sda1       197M  113M   85M  58% /boot
21     tmpfs           183M     0  183M   0% /run/user/1001
22 salt01:
23     Filesystem      Size  Used Avail Use% Mounted on
24     /dev/sda3        18G  2.1G   16G  12% /
25     devtmpfs        901M     0  901M   0% /dev
26     tmpfs           911M   12K  911M   1% /dev/shm
27     tmpfs           911M  9.6M  902M   2% /run
28     tmpfs           911M     0  911M   0% /sys/fs/cgroup
29     /dev/sda1       197M  113M   85M  58% /boot
30     tmpfs           183M     0  183M   0% /run/user/1001
31 salt02:
32     Filesystem      Size  Used Avail Use% Mounted on
33     /dev/sda3        18G  2.0G   16G  12% /
34     devtmpfs        901M     0  901M   0% /dev
35     tmpfs           911M   12K  911M   1% /dev/shm
36     tmpfs           911M  9.6M  902M   2% /run
37     tmpfs           911M     0  911M   0% /sys/fs/cgroup
38     /dev/sda1       197M  113M   85M  58% /boot
39     tmpfs           183M     0  183M   0% /run/user/1001

4.5. 数据库表信息

5. master返回结果到MySQL数据库

数据从minion端返回到master之后,再由master写入MySQL

相关文档

https://docs.saltstack.com/en/latest/topics/jobs/external_cache.html

5.1. master端存储架构

5.2. master端添加如下配置

 1 [root@salt100 ~]# vim /etc/salt/master 
 2 …………
 3 master_job_cache: mysql
 4 mysql.host: 'salt100'
 5 mysql.user: 'salt'
 6 mysql.pass: 'salt'
 7 mysql.db: 'salt'
 8 mysql.port: 3306
 9 
10 [root@salt100 ~]# systemctl restart salt-master.service   # 修改了配置,需要重启 master

5.3. 测试执行

1 [root@salt100 ~]# salt '*' grains.items
2 [root@salt100 ~]# salt '*' cmd.run 'w' 

5.4. 数据库表信息