03 深入远程执行
0、學習目的
http://docs.saltstack.cn/topics/execution/index.html? 官方文檔
0.1 命令解釋
?
[root@host-192-168-23-39 ~]# salt '*' cmd.run 'w' salt 命令 * 指定目標 cmd 模塊 run 模塊的方法 w 模塊的參數0.2 學習目的
1、目標Target
Targets也可以使用正則表達式: salt -E 'virtmach[0-9]' test.pingTargets也可以指定列表: 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 80 salt '*' network.connect baidu.com 802.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/hehe2.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 utf8DEFAULT 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; View Code?查看表
?
授權
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt'; Query OK, 0 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: 3306 View Code重啟
[root@linux-node1 ~]# systemctl restart salt-minion
?(4)執行命令查看
[root@linux-node1 ~]# salt '*' cmd.run 'df -h' --return mysqlmysql查看
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;
?
?
轉載于:https://www.cnblogs.com/venicid/p/11266817.html
總結
- 上一篇: 基本数据类型包装类
- 下一篇: 我是如何去了解需求的