根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的。
早期习惯于在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 env
env.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: 22
web3:
    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:
254
stderr:
 
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:
0
stderr:
 
stdout:
total used free shared buff/cache available
Mem: 3951 52 2524 20 1374 3610
Swap: 534 0 534
 
web1:
----------
retcode:
0
stderr:
 
stdout:
total used free shared buffers cached
Mem: 3832 3617 215 0 174 1930
-/+ buffers/cache: 1511 2320
Swap: 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: 22
web2:
    host: 192.168.1.105
    user: root
    port: 22
web3:
    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:
0
stderr:
 
stdout:
04:41:49 up 79 days, 15:22, 1 user, load average: 0.00, 0.00, 0.00
 
web1:
----------
retcode:
0
stderr:
 
stdout:
04:41:57 up 75 days, 17:05, 3 users, load average: 0.02, 0.16, 0.20
 
web3:
----------
retcode:
0
stderr:
 
stdout:
04:41:42 up 79 days, 6:42, 1 user, load average: 0.00, 0.00, 0.00

008-saltstack之salt-ssh的更多相关文章

  1. saltstack通过salt.client执行命令(转)

    利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令 master端想要执行类似 salt '*' cmd.run 'uptime ...

  2. saltstack 使用salt ‘*’ test.ping 报错Minion did not return(转)

    原文地址:http://blog.51cto.com/4634721/2093019 saltstack 使用salt ‘*’ test.ping 报错Minion did not return. [ ...

  3. saltstack之salt event事件用法

    event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...

  4. 4 saltstack ssh

    1.salt ssh https://docs.saltstack.com/en/latest/topics/ssh/index.html 免agent的 Salt ssh 串行 执行的时候,发送给其 ...

  5. Saltstack 介绍、安装、配置(一)

    Slatstack 介绍 官网:https://saltstack.com/ 官方源:http://repo.saltstack.com/  (介绍各操作系统安装方法) http://repo.sal ...

  6. 快速入门SaltStack

    导读 SaltStack是基于Python开发的一套C/S架构配置管理工具(功能不仅仅是配置管理,如使用salt-cloud配置AWS EC2实例),它的底层使用ZeroMQ消息队列pub/sub方式 ...

  7. Saltstack自动化运维

    Saltstack三大功能 1,远程执行 2,配置管理(状态) 3,云管理 四种运行方式: Local         本地 Minion/Master C/S Syndic  代理模式 Salt S ...

  8. 1、自动化运维之SaltStack实践

    自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...

  9. Saltstack自动化操作记录(1)-环境部署【转】

    早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用. Saltstack知多少Saltstack是一种全新的基础设施管理方式,是一个服务器基础架构集中 ...

  10. saltstack之自动化运维

    引入 简介 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. 早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这 ...

随机推荐

  1. Selenium 2自动化测试实战7(定位元素)

    一.xpath定位 1. 绝对定位 举例用百度输入框和搜索按钮 eg:find_element_by_xpath("/html/body/div/div[2]/div/div/div/fro ...

  2. 机器学习之K近邻算法

    K 近邻 (K-nearest neighbor, KNN) 算法直接作用于带标记的样本,属于有监督的算法.它的核心思想基本上就是 近朱者赤,近墨者黑. 它与其他分类算法最大的不同是,它是一种&quo ...

  3. Delphi实现带有格式的Excel导出功能

    功能预览 运行预览 模板样式 存储返参 导出的Excel 2. 代码实现 //执行sql的函数 procedure TForm1.GetReportData(astrsql:string); var ...

  4. 使用pthread下的mutex与cond_var模拟windows下的event几个接口

    两个版本的链接: https://github.com/neosmart/pevents https://github.com/moya-lang/Event 第一个版本能够模拟等待多个事件中的一个触 ...

  5. git clone 指定分支操作

    服务器迁移,而且原来本地开发是在同一个目录中切换不同的分支,感觉有点挫,于是打算一个文件目录对应一个分支,这样不会有太大的文件差异. 记录下来本次操作,可能以后还会用到. git初始化一般是这样. g ...

  6. SQLALchemy如何查询mysql某个区间内的数据

    查了下,找到3种方式: 方法一注意时间格式:xxxx-xx-xx 方法二没有‘day’ 方法三的时间格式同方法一 1.result = Jobs.query.filter(Jobs.create_ti ...

  7. Pandas中关于 loc \ iloc 用法的理解

    转载至:https://blog.csdn.net/w_weiying/article/details/81411257 loc函数:通过行索引 "Index" 中的具体值来取行数 ...

  8. 应用安全 - 工具 - 浏览器 - 火狐(FireFox) - 漏洞汇总

    CVE-2010-3131   Date Aug 类型 Mozilla Firefox - 'dwmapi.dll' DLL Hijacking 影响范围 Firefox <= CVE-2010 ...

  9. 简述Object(ActiveX)控件遮挡Dialog、select下拉框的解决办法

    1.背景 最近在做项目的过程中,我们使用了Object控件,但是同时在上面写了一个select下拉框,因此每次点击下拉框的时候我们会发现,下拉框的部分内容被Object控件给遮挡了,调查研究后发现,我 ...

  10. ucloud自动创建instance

    用terrform for ucloud: https://www.terraform.io/docs/providers/ucloud/index.html https://docs.ucloud. ...