您的位置:首页 > 其它

Saltstack远程执行(四)

2016-10-22 10:35 441 查看
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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: