1. 主机规划
服务器名称 | 操作系统版本 | 内网IP | 外网IP(模拟) | Hostname | 部署模块 |
---|---|---|---|---|---|
salt100 | CentOS7.5 | 172.16.1.100 | 10.0.0.100 | salt100 | salt-master、salt-minion |
salt01 | CentOS7.5 | 172.16.1.11 | 10.0.0.11 | salt01 | salt-minion |
salt02 | CentOS7.5 | 172.16.1.12 | 10.0.0.12 | salt02 | salt-minion |
salt03 | CentOS7.5 | 172.16.1.13 | 10.0.0.13 | salt03 | salt-minion |
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 数据库
# 数据库安装
yum install -y mariadb mariadb-server
# 启动数据库
systemctl start mariadb.service # 如果有必要可以设置为开机自启动
# 在 「其他机器」 安装,用于测试远程是否可以连接
yum install -y mariadb
2.2. 字符集设置
[root@salt100 ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
MariaDB [(none)]> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
2.3. 创建数据库、用户、授权
# 创建数据库
MariaDB [(none)]> CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show create database salt;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| salt | CREATE DATABASE `salt` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)
# 创建用户并授权
MariaDB [(none)]> grant all on salt.* to salt@'%' identified by 'salt'; # 用于远程访问
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on salt.* to salt@'salt100' identified by 'salt'; # 用于本地访问
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select user,host,password from mysql.user where user = 'salt';
+------+---------+-------------------------------------------+
| user | host | password |
+------+---------+-------------------------------------------+
| salt | % | *36F75ABC6D500DFA6E905046FD8BE5E115812DD0 |
| salt | salt100 | *36F75ABC6D500DFA6E905046FD8BE5E115812DD0 |
+------+---------+-------------------------------------------+
2 rows in set (0.00 sec)
本地或者远程登录测试
mysql -hsalt100 -usalt -psalt
# 或者
mysql -h172.16.1.100 -usalt -psalt
2.4. 创建表
相关文档
use salt;
--
-- Table structure for table `jids`
--
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;
--
-- Table structure for table `salt_returns`
--
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;
--
-- Table structure for table `salt_events`
--
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;
3. 安装依赖包
salt '*' state.single pkg.installed name=MySQL-python
或者
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端都添加设置
[root@salt03 ~]# vim /etc/salt/minion
…………
mysql.host: 'salt100'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@salt03 ~]# systemctl restart salt-minion.service # 修改了配置,需要重启 minion
4.3. 方式二:在master端添加设置
[root@salt100 ~]# vim /etc/salt/master
…………
ext_job_cache: mysql
mysql.host: 'salt100'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@salt100 ~]# systemctl restart salt-master.service # 修改了配置,需要重启 master
4.4. 测试执行
# 说明: 带了 --return mysql ,适合上面的方式一,在minion端配置
# 如果没有带 --return mysql ,适合上面的方式二,在master端配置
[root@salt100 ~]# salt '*' test.ping --return mysql
salt03:
True
salt01:
True
salt02:
True
salt100:
True
[root@salt100 ~]# salt 'salt0*' cmd.run 'df -h' --return mysql
salt03:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 2.0G 16G 12% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 911M 12K 911M 1% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 85M 58% /boot
tmpfs 183M 0 183M 0% /run/user/1001
salt01:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 2.1G 16G 12% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 911M 12K 911M 1% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 85M 58% /boot
tmpfs 183M 0 183M 0% /run/user/1001
salt02:
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 2.0G 16G 12% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 911M 12K 911M 1% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 85M 58% /boot
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端添加如下配置
[root@salt100 ~]# vim /etc/salt/master
…………
master_job_cache: mysql
mysql.host: 'salt100'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@salt100 ~]# systemctl restart salt-master.service # 修改了配置,需要重启 master
5.3. 测试执行
[root@salt100 ~]# salt '*' grains.items
[root@salt100 ~]# salt '*' cmd.run 'w'