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. 数据库表信息
- Finecms模板标签调用小结 方便快速入门
- 新装/重装git后的指令&链接到github
- 【译】ASP.NET MVC 6路由技术
- 从原理到实践:Oracle 12.2 Sharding技术揭秘
- Xamarin-C#开发移动App-环境搭建
- Tensorflow快速入门
- .NET Core 实战笔记1-介绍和安装
- 全面直观认识深度神经网络
- dedecms清空所有文章怎么操作?sql语句如何写?
- .NET Core 实战笔记2-从命令开始
- 【译】使用Docker Compose一条指令配置Mesos
- 【译】Windows下的Docker Machine - 如何设置你的Docker主机
- 史上最透彻的KMP算法讲解
- 【译】助你成功搭建云应用的12条方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AkShare-重要机构-伦敦金属交易所
- 为什么不推荐使用BeanUtils属性转换工具
- 从源码打造云原生时代的「Linux」——Kubernetes
- Django-models & QuerySet API
- [奇淫巧技]GitHub个人页的新玩法
- 一致性哈希的分析与实现
- 关系型数据库查询语言 SQL 和图数据库查询语言 nGQL 对比
- 目标检测之评价指标 - mAP
- sass的基础用法
- Golang Gin 实战(十四)| 文件托管、反向代理百度网站、自实现API网关
- ceph修复pg inconsistent
- 基于kubernetes的kong网关实战
- 移动端适配必须掌握的基本概念和适配方案
- [OHIF-Viewers]医疗数字阅片-医学影像-Redux中的reducer到底是什么,以及它为什么叫reducer?
- 【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验