008-saltstack之salt-ssh
根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的。
早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操作:
1)pssh工具,它需要提前做好key关联的ssh信任关系,比起for循环语句,我之前还是比较喜欢用pssh。
具体用法见于:http://www.cnblogs.com/kevingrace/p/6378719.html
2)expect 最大的有点就是交互,但是要成高性能的话,需要自己写多线程的。
参考:http://www.cnblogs.com/kevingrace/p/5900303.html
3)python利器,用过一段时间,该有的都有的,很是强大。
|
1
2
3
|
from fabric import envenv.hosts = ['user1@host1:port1', 'user2@host2.port2']env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'} |
4)最后,还是比较看好salt-ssh。
salt-ssh可以独立运行的,不需要minion端。salt-ssh可以代替expect之类的密码推送脚本,看起来功能不比expect差 。 salt-ssh 用的是sshpass进行密码交互的。
下面就对salt-ssh的使用做一简单梳理:
1)安装
[root@bastion-IDC ~]# wget http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@bastion-IDC ~]# rpm -ivh epel-release-6-8.noarch.rpm --force
[root@bastion-IDC ~]# yum install -y salt-ssh
2)配置使用
可以把要执行的信息,比如ip,帐号,密码,端口等都放到一个文件里面。当然文件路径是可以随便定义的,官方是指定到了/etc/salt/roster。如下:
[root@linux-node1 ~]# cat /etc/salt/roster
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
web1: host: 192.168.1.118 //前面留四个空格,冒号后空一格 user: root //前面留四个空格,冒号后空一格 password: PASSWORD //前面留四个空格,冒号后空一格 port: 22 //前面留四个空格,冒号后空一格web2: host: 192.168.1.105 user: root password: PASSWORD port: 22web3: host: 192.168.1.19 user: root password: K46u@!kB9G port: 25791 |
然后执行批量操作命令:
[第一次执行的时候,有的机器可能会提醒输入ssh初次登录询问yes/no,如果要去掉这个yes/no的询问环节,只需要修改本机的/etc/ssh/ssh_config文件中的"# StrictHostKeyChecking ask" 为 "StrictHostKeyChecking no",然后重启sshd服务即可]
[root@linux-node1 ~]# salt-ssh "*" -r 'free -m'
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
web3:----------retcode:254stderr:stdout:The host key needs to be accepted, to auto accept run salt-ssh with the -i flag:The authenticity of host '192.168.1.109 (192.168.1.109)' can't be established.RSA key fingerprint is 7d:83:12:5d:85:c4:36:c9:21:41:c2:90:89:5b:0a:f5.Are you sure you want to continue connecting (yes/no)?web2:----------retcode:0stderr:stdout:total used free shared buff/cache availableMem: 3951 52 2524 20 1374 3610Swap: 534 0 534web1:----------retcode:0stderr:stdout:total used free shared buffers cachedMem: 3832 3617 215 0 174 1930-/+ buffers/cache: 1511 2320Swap: 1535 36 1499 |
特别注意:
salt-ssh第一次执行是根据roster文件里配置的账号密码推送密码,来实现自动交互的。
执行完了后会在目标服务器里面,追加master端(即源机器)的key。
然后就可以删除roster里面的passwd密码条目了,删除roster文件里的密码条目后,不影响后批量操作的执行。
如下:
把roster文件里的password条目删除后,还是可以运行,这里就不是用sshpass推送密码了,而是直接通过key了 !!!
[root@linux-node1 ~]# cat /etc/salt/roster
|
1
2
3
4
5
6
7
8
9
10
11
12
|
web1: host: 192.168.1.118 user: root port: 22web2: host: 192.168.1.105 user: root port: 22web3: host: 192.168.1.19 user: root port: 25791 |
[root@linux-node1 ~]# salt-ssh "*" -r 'df -h'
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
web3: ---------- retcode: 0 stderr: stdout: Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 396M 21M 375M 6% /run /dev/vda1 3.9G 2.3G 1.5G 61% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda6 11G 26M 9.6G 1% /home cgmfs 100K 0 100K 0% /run/cgmanager/fs tmpfs 396M 0 396M 0% /run/user/0 web1: ---------- retcode: 0 stderr: stdout: Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 8.1G 4.8G 2.9G 63% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/vda1 190M 37M 143M 21% /boot web2: ---------- retcode: 0 stderr: stdout: Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 396M 21M 375M 6% /run /dev/vda1 3.9G 2.1G 1.7G 56% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda6 11G 26M 9.6G 1% /home cgmfs 100K 0 100K 0% /run/cgmanager/fs tmpfs 396M 0 396M 0% /run/user/0 |
如下:--roster-file参数后面跟的是配置文件,如果是官方指定的配置文件/etc/salt/roster,则可以省略。
如果是自己自定义的文件,则需要用这个参数指定
[root@linux-node1 ~]# salt-ssh "*" --roster-file /etc/salt/roster -r 'uptime'
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
web2:----------retcode:0stderr:stdout:04:41:49 up 79 days, 15:22, 1 user, load average: 0.00, 0.00, 0.00web1:----------retcode:0stderr:stdout:04:41:57 up 75 days, 17:05, 3 users, load average: 0.02, 0.16, 0.20web3:----------retcode:0stderr:stdout:04:41:42 up 79 days, 6:42, 1 user, load average: 0.00, 0.00, 0.00 |
008-saltstack之salt-ssh的更多相关文章
- saltstack通过salt.client执行命令(转)
利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令 master端想要执行类似 salt '*' cmd.run 'uptime ...
- saltstack 使用salt ‘*’ test.ping 报错Minion did not return(转)
原文地址:http://blog.51cto.com/4634721/2093019 saltstack 使用salt ‘*’ test.ping 报错Minion did not return. [ ...
- saltstack之salt event事件用法
event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...
- 4 saltstack ssh
1.salt ssh https://docs.saltstack.com/en/latest/topics/ssh/index.html 免agent的 Salt ssh 串行 执行的时候,发送给其 ...
- Saltstack 介绍、安装、配置(一)
Slatstack 介绍 官网:https://saltstack.com/ 官方源:http://repo.saltstack.com/ (介绍各操作系统安装方法) http://repo.sal ...
- 快速入门SaltStack
导读 SaltStack是基于Python开发的一套C/S架构配置管理工具(功能不仅仅是配置管理,如使用salt-cloud配置AWS EC2实例),它的底层使用ZeroMQ消息队列pub/sub方式 ...
- Saltstack自动化运维
Saltstack三大功能 1,远程执行 2,配置管理(状态) 3,云管理 四种运行方式: Local 本地 Minion/Master C/S Syndic 代理模式 Salt S ...
- 1、自动化运维之SaltStack实践
自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...
- Saltstack自动化操作记录(1)-环境部署【转】
早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用. Saltstack知多少Saltstack是一种全新的基础设施管理方式,是一个服务器基础架构集中 ...
- saltstack之自动化运维
引入 简介 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. 早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这 ...
随机推荐
- vscode + php+ftp
首先,php网站的文件都整理到一个文件夹中: 然后,用vscode的File.Open Folder打开刚才的文件夹: 3,Ctrl+Shift+P,输入SFTP:Config,会打开一个配置文件,编 ...
- Reactjs之静态路由、动态路由以及Get传值以及获取
1.新增知识点 /* react路由的配置: 1.找到官方文档 https://reacttraining.com/react-router/web/example/basic 2.安装 cnpm i ...
- Go语言引用类型
切片 1.切片定义 a) 声明一个切片 , , } , , } b) 通过make来创建切片 ) c) 通过 := 语法来定义切片 slice := []int{} slice := make([], ...
- CentOS7环境下yum方式安装MySQL5.7
这篇博文主要是从网上摘抄的,做个记录,以后如果有同样的需求,可以直接翻自己的记录.感谢两位大神: https://www.cnblogs.com/luohanguo/p/9045391.html ht ...
- Jenkins持续集成环境部署
一.下载Jenkins Jenkins下载地址:https://jenkins.io/download/ 这里我们下载的是jenkins.war 二.启动Jenkins 在Linux下启动Jenkin ...
- 百度地图POI爬取
我们研究生的课程内容,做下笔记记录一下. 使用的python环境是python3.7 用的图大部分都是老师ppt里的图,懒得自己截了-- 申请百度开发者密匙 (1)注册百度用户,注册过的话,直接登录就 ...
- Java基础面试题集(二)
Java程序员面试题集(1-50) 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象 ...
- eetCode刷题-递归篇
递归是算法学习中很基本也很常用的一种方法,但是对于初学者来说比较难以理解(PS:难点在于不断调用自身,产生多个返回值,理不清其返回值的具体顺序,以及最终的返回值到底是哪一个?).因此,本文将选择Lee ...
- logstash 写入数据到elasticsearch 索引相差8小时解决办法
问题说明 Logstash用的UTC时间, logstash在按每天输出到elasticsearch时,因为时区使用utc,造成每天8:00才创建当天索引,而8:00以前数据则输出到昨天的索引 # 使 ...
- 解决ubuntu16.04 USB鼠标键盘使用卡顿
小米游戏本,键盘突然M建不能用,去了售后换了个键盘. 小米售后真的不想吐槽……入坑 键盘鼠标卡顿由于挂起导致失灵,每次需要激活所以卡顿 解决办法如下: 编辑如下文件配置 sudo vim /etc/l ...