0、学习目的

http://docs.saltstack.cn/topics/execution/index.html  官方文档

0.1 命令解释

  1. [root@host---- ~]# salt '*' cmd.run 'w'
  2. salt 命令
  3. * 指定目标
  4. cmd 模块
  5. run 模块的方法
  6. w 模块的参数

0.2 学习目的

1、目标Target

  1. Targets也可以使用正则表达式:
  2. salt -E 'virtmach[0-9]' test.ping
  3.  
  4. Targets也可以指定列表:
  5. 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

# 查看网卡接口

# 测试连接性

  1. salt '*' network.connect archlinux.org
  2. salt '*' network.connect baidu.com

2.2 service

  1. salt '*' service.get_all
  2. 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模块

批量文件分发

  1. # cp文件目录
  2. [root@linux-node1 salt]# salt-cp '*' /etc/passwd /tmp/hehe
  3. {'linux-node1.example.com': {'/tmp/hehe': True},
  4. 'linux-node2.example.com': {'/tmp/hehe': True}}
  5.  
  6. # ls
  7. [root@linux-node1 salt]# salt \* cmd.run 'ls /tmp/hehe'
  8. linux-node1.example.com:
  9. /tmp/hehe
  10. linux-node2.example.com:
  11. /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用户,切换用户,执行命令

  1. [root@linux-node1 ~]# useradd redhat
  2. [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

  1. [root@linux-node1 ~]# salt \* cmd.run 'yum install -y MySQL-python'
  2.  
  3. Pkg模块
  4. [root@linux-node1 ~]# salt \* pkg.install MySql-python

(2)master端安装数据库,创建表结构

  1. [root@linux-node1 ~]# yum install mariadb-server
  2. [root@linux-node1 ~]# systemctl restart mariadb
  3. [root@linux-node1 ~]# mysql

创建表结构

  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() 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() NOT NULL,
  26. `jid` varchar() NOT NULL,
  27. `return` mediumtext NOT NULL,
  28. `id` varchar() NOT NULL,
  29. `success` varchar() 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() NOT NULL,
  45. `data` mediumtext NOT NULL,
  46. `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  47. `master_id` varchar() NOT NULL,
  48. PRIMARY KEY (`id`),
  49. KEY `tag` (`tag`)
  50. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

查看表

授权

  1. MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';
  2. Query OK, rows affected (0.00 sec)

(3)minion端,修改配置文件

[root@linux-node2 ~]# vim /etc/salt/minion

  1. mysql.host: '192.168.194.131'
  2. mysql.user: 'salt'
  3. mysql.pass: 'salt'
  4. mysql.db: 'salt'
  5. mysql.port:

重启

[root@linux-node1 ~]# systemctl restart salt-minion

(4)执行命令查看

  1. [root@linux-node1 ~]# salt '*' cmd.run 'df -h' --return mysql

mysql查看

  1. MariaDB [salt]> show tables;
  2. MariaDB [salt]> select * from salt_returns;
  3. 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的更多相关文章

  1. saltstack之(四)远程执行及常用模块

    前几篇文章已经完成了saltstack的安装.认证,从这篇文章开始学习使用saltstack的远程执行. 1.salt远程执行命令详解Usage: salt [options] '<target ...

  2. Saltstack_使用指南06_远程执行-指定目标

    1. 主机规划 Targeting Minions文档 https://docs.saltstack.com/en/latest/contents.html 另请参见:自动化运维神器之saltstac ...

  3. 远程执行命令:paramiko

    paramiko模块用于通过 ssh 登录到远程客户端主机并执行命令,常见用法如下: [root@localhost ~]$ yum install -y python-paramiko 通过用户名密 ...

  4. Python之路 - Socket实现远程执行命令

    Python之路 - Socket实现远程执行命令 os模块实现

  5. Saltstack_使用指南07_远程执行-执行模块

    1. 主机规划 远程执行教程文档 https://docs.saltstack.com/en/latest/topics/tutorials/modules.html 所有模块文档 https://d ...

  6. 【03】Saltstack:远程执行

    写在前面的话 远程执行可以说是我们使用 Saltstack 最为基础的目的.所以在这里专门作为单独的一篇来详细的聊聊. 远程执行命令 示例命令: salt '*' cmd.run 'w' 命令分析: ...

  7. Python 模块功能paramiko SSH 远程执行及远程下载

    模块 paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现 ...

  8. 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件

    本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...

  9. SaltStack入门篇(四)之深入理解SaltStack远程执行

    1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...

随机推荐

  1. redis db0-15 的概念

    redis默认有db0~db15之多. redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下. redis下 ...

  2. DOS ftp

    C:\>ftp /? 将文件传送到运行 FTP 服务器服务(经常称为后台程序)的计算机以及将文件从该计算机传出.可以交互使用 Ftp. FTP [-v] [-d] [-i] [-n] [-g] ...

  3. better-scroll踩坑合集

    better-scroll踩坑合集:https://www.jianshu.com/p/6338a8033281

  4. c++ erase 中的坑

    先看一段正常的代码 #include <iostream> #include <string> using namespace std; int main() { " ...

  5. Hyperledger Fabric-sdk-java

    Hyperledger Fabric-sdk-java 2018年04月18日 23:36:02 l_ricardo 阅读数 975更多 分类专栏: 区块链 java   版权声明:本文为博主原创文章 ...

  6. singleWsdl和wsdl区别,Axis2和CXF对比

    WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互. 其实WebSer ...

  7. 动画方案 Lottie 学习(一)之基础

    参考 lottie系列文章(一):lottie介绍 lottie系列文章(二):lottie最佳实践 lottie系列文章(三):动画设计规范 lottie系列文章(四):源码分析——svg渲染

  8. C++ STL用法总结(持续更新)

    Vector 动态数组 https://www.cnblogs.com/zhonghuasong/p/5975979.html lower_bound&&upper_bound htt ...

  9. Oracle update 多字段更新

    一次性update多个字段 以student表为例: -- 创建学生表 create table student ( id number, name varchar2(40), age number, ...

  10. CSS3总结五:弹性盒子(flex)、弹性盒子布局

    弹性盒子容器的属性与应用 display:flex/inline-flex flex-direction flex-wrap justify-content align-items align-con ...