03 深入远程执行:target目标、模块modules、返回returns
0、学习目的
http://docs.saltstack.cn/topics/execution/index.html 官方文档
0.1 命令解释
[root@host---- ~]# salt '*' cmd.run 'w'
salt 命令
* 指定目标
cmd 模块
run 模块的方法
w 模块的参数
0.2 学习目的
1、目标Target
Targets也可以使用正则表达式:
salt -E 'virtmach[0-9]' test.ping Targets也可以指定列表:
salt -L 'foo,bar,baz,quo' test.ping
# Ip地址
# 或者在一个命令中混合使用多target类型:
2、模块Module
http://docs.saltstack.cn/ref/modules/all/index.html#all-salt-modules
2.1 network模块
# 活动的tcp
# 查看arp
# 查看网卡接口
# 测试连接性
salt '*' network.connect archlinux.org
salt '*' network.connect baidu.com
2.2 service
salt '*' service.get_all
salt '*' service.get_all |grep sshd
# 服务开启着
# 获取所有服务
# 服务是否关闭
# 重新加载,重启,状态
# 停止服务
2.3 state模块
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.state.html
2.4 file模块
批量文件分发
# cp文件目录
[root@linux-node1 salt]# salt-cp '*' /etc/passwd /tmp/hehe
{'linux-node1.example.com': {'/tmp/hehe': True},
'linux-node2.example.com': {'/tmp/hehe': True}} # ls
[root@linux-node1 salt]# salt \* cmd.run 'ls /tmp/hehe'
linux-node1.example.com:
/tmp/hehe
linux-node2.example.com:
/tmp/hehe
2.5 模块用户访问控制
http://docs.saltstack.cn/topics/eauth/access_control.html
1. 要求:redhat用户只能用这两个模块
2.[root@master ~]# vim /etc/salt/master
重启master服务
3.PERMISSION授权
[root@master ~]# chmod 775 /var/cache/salt /var/cache/salt/master /var/cache/salt/master/jobs /var/run/salt /var/run/salt/master
4. 创建redhat用户,切换用户,执行命令
[root@linux-node1 ~]# useradd redhat
[root@linux-node1 ~]# passwd redhat
5. 只在某个机器执行
6.问题:
错误,表明用户没有写log权限,
解决方式:
把test用户加到root用户组,
并对root用户组赋予/var/log/salt/master 文件的写权限
3、返回returners
https://docs.saltstack.com/en/latest/ref/returners/index.html
https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.mysql.html
返回到Mysql
返回时minion返回的,返回命令,直接写入MySQL
1.minion端配置
(1)每个Minion都需要装MySQL
[root@linux-node1 ~]# salt \* cmd.run 'yum install -y MySQL-python' Pkg模块
[root@linux-node1 ~]# salt \* pkg.install MySql-python
(2)master端安装数据库,创建表结构
[root@linux-node1 ~]# yum install mariadb-server
[root@linux-node1 ~]# systemctl restart mariadb
[root@linux-node1 ~]# mysql
创建表结构
CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci; USE `salt`; --
-- Table structure for table `jids`
-- DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
`jid` varchar() NOT NULL,
`load` mediumtext NOT NULL,
UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX jid ON jids(jid) USING BTREE; --
-- Table structure for table `salt_returns`
-- DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
`fun` varchar() NOT NULL,
`jid` varchar() NOT NULL,
`return` mediumtext NOT NULL,
`id` varchar() NOT NULL,
`success` varchar() 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() NOT NULL,
`data` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`master_id` varchar() NOT NULL,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
查看表
授权
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';
Query OK, rows affected (0.00 sec)
(3)minion端,修改配置文件
[root@linux-node2 ~]# vim /etc/salt/minion
mysql.host: '192.168.194.131'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port:
重启
[root@linux-node1 ~]# systemctl restart salt-minion
(4)执行命令查看
[root@linux-node1 ~]# salt '*' cmd.run 'df -h' --return mysql
mysql查看
MariaDB [salt]> show tables;
MariaDB [salt]> select * from salt_returns;
MariaDB [salt]> select * from salt_returns\G;
2. job cache机制
(1)Master配置文件
[root@linux-node1 ~]# vim /etc/salt/master
保持24小时
(2) 重启
[root@linux-node1 ~]# systemctl restart salt-master
(3)执行命令,查看
[root@linux-node1 ~]# salt '*' test.ping
[root@linux-node1 ~]# salt '*' cmd.run 'uptime' -v
MariaDB [salt]> select * from salt_returns\G;
03 深入远程执行:target目标、模块modules、返回returns的更多相关文章
- saltstack之(四)远程执行及常用模块
前几篇文章已经完成了saltstack的安装.认证,从这篇文章开始学习使用saltstack的远程执行. 1.salt远程执行命令详解Usage: salt [options] '<target ...
- Saltstack_使用指南06_远程执行-指定目标
1. 主机规划 Targeting Minions文档 https://docs.saltstack.com/en/latest/contents.html 另请参见:自动化运维神器之saltstac ...
- 远程执行命令:paramiko
paramiko模块用于通过 ssh 登录到远程客户端主机并执行命令,常见用法如下: [root@localhost ~]$ yum install -y python-paramiko 通过用户名密 ...
- Python之路 - Socket实现远程执行命令
Python之路 - Socket实现远程执行命令 os模块实现
- Saltstack_使用指南07_远程执行-执行模块
1. 主机规划 远程执行教程文档 https://docs.saltstack.com/en/latest/topics/tutorials/modules.html 所有模块文档 https://d ...
- 【03】Saltstack:远程执行
写在前面的话 远程执行可以说是我们使用 Saltstack 最为基础的目的.所以在这里专门作为单独的一篇来详细的聊聊. 远程执行命令 示例命令: salt '*' cmd.run 'w' 命令分析: ...
- Python 模块功能paramiko SSH 远程执行及远程下载
模块 paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现 ...
- 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...
- SaltStack入门篇(四)之深入理解SaltStack远程执行
1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...
随机推荐
- Golang 无法下载依赖 golang.org (GoLand解决方法)
如下图所示将Proxy设置为:https://goproxy.io/
- YAPTCHA(HDU2973)【威尔逊定理】
威尔逊原理.即对于素数p,有(p-1)!=-1( mod p). 首先,将原式变形为[ (3×k+6)! % (3×k+7) + 1] / (3×k+7),所以: 1.3×k+7是素数,结果为1, 2 ...
- DRF 认证 权限 视图 频率
认证组件 使用:写一个认证类,继承BaseAuthentication 在类中写authenticate方法,把request对象传入 能从request对象中取出用户携带的token根据token判 ...
- 【求教 探讨】python tkinter的messagebox
最近有一个要求,用python的tkinter制作一个messagebox,传入3个参数: title text timeout.用户可以点击“确定” 关闭窗口: 或者 等待几秒(timeout) ...
- Postgresql explain的analyze和buffers选项
sql查询分析: 原文地址:https://blog.csdn.net/qq_28893679/article/details/78316283
- Mysterious Crime CodeForces - 1043D (哈希)
大意: 给定m个n排列, 求有多少个公共子串. 枚举每个位置, hash求出最大匹配长度. #include <iostream> #include <sstream> #in ...
- SQL Join的应用(转)
INNER JOIN LEFT JOIN RIGHT JOIN OUTER JOIN LEFT JOIN EXCLUDING INNER JOIN RIGHT JOIN EXCLUDING INNER ...
- python爬虫下正则各种字符串数据匹配
s = '*\/:?"<>|' #这9个字符在Windows系统下是不可以出现在文件名中的str1 = '\巴拉<1"!11[]>1*hgn/p:?|' # ...
- left join 和 inner join 区别和优化
关联查询总结,left join 和 inner join 区别和优化 一直以来都没有细细的研究 left join 和 inner join,现在发觉要做优化还真的是要熟悉它们的区别才行. 原谅转载 ...
- Flask框架学习篇(一)
安装好Python,pip install flask安装好flask后,开始编写第一个flask程序 #包含动态路由的flask程序from flask import Flask app= Flas ...