• Saltstack远程执行

语法例:salt '*' cmd.run 'w'

-  命令:salt

-  目标:'*'

-  模块:cmd.run,自带150+模块,也可以自己写模块

-  返回:执行后结果返回,Returnners组件

1、指定目标(targeting)

官网文档:https://docs.saltstack.com/en/latest/topics/targeting/index.html

两种定位方法:一种和minion ID有关,一种和monion ID无关

1)minion ID有关的方法

  指定具体的minion ID

salt 'linux-node2.example.com' test.ping

  通配符

salt '*' test.ping
salt 'linux-node2*' test.ping
salt 'linux-node[1|2].example.com' test.ping
salt 'linux-node[1-2].example.com' test.ping
salt 'linux-node[!2].example.com' test.ping
salt 'linux-node?.example.com' test.ping

  列表

salt -L 'linux-node1.example.com,linux-node2.example.com' test.ping

  正则表达式

salt -E 'linux-(node1|node2)*' test.ping
salt -E 'linux-(node1|node2).example.com' test.ping

备注: 所有匹配目标的方式,都可以用到top file里面来指定目标。

minion ID设置方案:IP地址、根据业务来进行设置

例:
redis-node1-redis04-idc04-h5web.example.com
redis-node1 # redis第一个节点
redis04 # 集群
idc04 # 机房
h5web # 业务线

  

2)minion ID无关的方法

  IP地址、子网

salt -S 192.168.137.12 test.ping
salt -S 192.168.137.0/24 test.ping

  分组,需要配置master文件

vim /etc/salt/master

重启systemctl restart salt-master

salt -N web test.ping

  混合匹配

官方文档 https://docs.saltstack.com/en/latest/topics/targeting/compound.html

  批处理 ,可用于重启所有主机或进程场景,百分比或固定数量的一点一点重启主机或进程

官方文档 https://docs.saltstack.com/en/latest/topics/targeting/batch.html

2、执行模块

官网文档 https://docs.saltstack.com/en/latest/ref/modules/all/index.html#all-salt-modules

列出salt所有模块,以及如何使用的帮助文档

通过yum默认安装salt所有模块存放路径 /usr/lib/python2.7/site-packages/salt/modules(centos 7)

例:

salt '*' network.active_tcp  # 列出所有主机运行的tcp连接
salt '*' network.arp # 列出所有主机arp salt '*' service.available sshd # 列出所有主机sshd
salt '*' service.get_all # 列出所有主机的所有运行服务
salt '*' service.status sshd # 列出所有主机sshd运行状态 salt-cp '*' /etc/hosts /tmp/test # 将master上/etc/hosts文件拷贝到所有主机的/tmp/test salt '*' state.show_top # 查看top
salt '*' state.single pkg.installed name=lsof # 所有主机安装lsof

3、返回程序

官方文档 https://docs.saltstack.com/en/latest/ref/returners/index.html

1)将返回写入mysql库,是由minion直接写入mysql库

所有minion安装python mysql模块

salt '*' state.single pkg.installed name=MySQL-python

salt '*' cmd.run 'yum install MySQL-python -y'

创建salt库

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(255) 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(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;

授权

grant all on salt.* to salt@'%' identified by 'salt@pw';
FLUSH PRIVILEGES;
exit
mysql -h192.168.137.11 -usalt -psalt@pw salt
show tables;

配置minion文件

vim /etc/salt/minion
mysql.host: '192.168.137.11'
mysql.user: 'salt'
mysql.pass: 'salt@pw'
mysql.db: 'salt'
mysql.port: 3306

重启 systemctl restart salt-minion

测试

salt '*' test.ping --return mysql

salt '*' cmd.run 'df -h' --return mysql

4、编写执行模块

1)放置路径

cd /srv/salt
mkdir _modules

2) 命名

文件名就是模块名

例: my_disk.py

vim /srv/salt/_modules/my_disk.py
def list():
cmd = 'df -h'
ret = __salt__['cmd.run'](cmd)
return ret

3)刷新

salt '*' saltutil.sync_modules

会放到指定目标的/var/cache/salt/minion下

4)执行

salt '*' my_disk.list

Saltstack远程执行(四)的更多相关文章

  1. Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

    一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...

  2. 2、自动化运维之SaltStack远程执行详解

    SaltStack远程执行详解 ●目标(Targeting) ●模块(Module) ●返回(Returnners) 混合模式-C 选项 主机名设置参照: redis-node1-redis03-id ...

  3. SaltStack远程执行-返回MySQL

    上一篇:SaltStack远程执行-模块 参考官方文档:https://docs.saltstack.com/en/latest/ref/returners/all/salt.returners.my ...

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

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

  5. saltstack远程执行命令.md

    saltstack 支持在master上向client 远程执行命令,并显示命令执行的结果 命令格式: salt '<操作目标>' <方法> [参数] 示例 示例1 ping检 ...

  6. SaltStack远程执行

    上一篇:SaltStack概述及安装 master也需要安装一个minion 启动salt-master systemctl start salt-master 配置文件在目录/etc/salt下 p ...

  7. 利用 Saltstack 远程执行命令

    Saltstack的一个比较突出优势就是具备执行远程命令的功能. 操作方法与func (https://fedorahosted.org/func/)相似,可以帮助运维人员完成集中化的操作平台. ht ...

  8. SaltStack远程执行-模块

    上一篇:SaltStack数据系统-Pillar 执行模块 salt 'linux-node2.example.com' service.status sshd 其中service是模块名称statu ...

  9. SaltStack远程执行shell脚本

    编辑文件fansik.sh 脚本内容: #!/bin/bash # Author: fansik # data: 2017年 09月 26日 星期二 :: CST touch /tmp/fansik. ...

随机推荐

  1. [【codechefCHSEQ22】Chef and Favourite Sequence(并查集)

    题目:http://hzwer.com/3419.html 题意:给你一个全是0的数列,有m种操作[Li,Ri],每次操作就将下标处于[Li,Ri]的元素取反.你可以选若干个操作来使这个数列最后变成别 ...

  2. Trilateration三边测量定位算法

    转载自Jiaxing / 2014年2月22日 基本原理 Trilateration(三边测量)是一种常用的定位算法: 已知三点位置 (x1, y1), (x2, y2), (x3, y3) 已知未知 ...

  3. Spring + Spring MVC+Hibernate框架整合详细配置

    来源于:http://www.jianshu.com/p/8e2f92d0838c 具体配置参数: Spring: spring-framework-4.2.2Hibernate: hibernate ...

  4. Eclipse导入 appcompat,design兼容包

    从Android studio推出1.0正式版后,就一直在as上开发项目,但是最近要测试一个项目,是eclipse结构,导入as后,是各种报错信息,决定改成eclipse. 其中项目中用到了ppcom ...

  5. openvpn的部署

    http://www.gaohuirong.cn/openvpn/2016/04/12/linux-install-openvpn.html

  6. 多词查询(Multi-word Queries)

    如果我们一次只能搜索一个词,那么全文搜索就会显得相当不灵活.幸运的是,通过match查询来实现多词查询也同样简单: GET /my_index/my_type/_search { "quer ...

  7. 一起学HTML基础-利用CSS和JavaScript制作一个切换图片的网页

    由于个人原因,不详细写步骤 思路: 一.布局 二.制作图片区和按钮区的div及颜色.边框.背景属性等 三.用PS将四张图片剪切到同一个尺寸,重叠放置在图片切换区,透明度设置为0 四.点击对应按钮时,将 ...

  8. 华硕笔记本BIOS设置详解

    BIOS是英文Basic Input/Output System的缩写,即基本输入输出系统,合理的BIOS设置可以让我们的电脑更好的为我们服务,但由于大部分笔记本的BIOS界面是英文,并且BIOS里面 ...

  9. 【CodeForces 699D】Fix a Tree

    dfs找出联通块个数cnt,当形成环时,令指向已访问过节点的节点变成指向-1,即做一个标记.把它作为该联通图的根. 把所有联通的图变成一颗树,如果存在指向自己的点,那么它所在的联通块就是一个树(n-1 ...

  10. cocoaPod的使用

    因为准备在项目中使用bootstrap,在安装bootstrap过程中提示需要Ruby的版本在1.9.2以上,而目前使用的Ruby版本是Mac系统自带的1.8.7.所以需要对Ruby进行升级.这里使用 ...