postfix邮件发送error

OpenSkill 回复了问题 • 2 人关注 • 1 个回复 • 1144 次浏览 • 2015-07-02 22:53 • 来自相关话题

高并发linux生产服务器内核参数优化

Ansible 发表了文章 • 0 个评论 • 763 次浏览 • 2015-07-02 16:11 • 来自相关话题

说明:本优化案例适合apache,nginx,squid多种等web应用,特殊的业务可以做调整

所谓内核优化,主要是在Linux系统中针对业务服务应用而进行的系统内核参数优化,优化并无特殊的标准,下面以常见生产环境linux的内核优化为例讲解,仅供大家参考,欢迎拍砖。

net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 400065000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120将上面的内核参数值加入/etc/sysctl.conf文件中,然后执行如下命令使之生效:sysctl  -p
参数解释参考:http://yangrong.blog.51cto.com/6945369/1321594 查看全部
说明:本优化案例适合apache,nginx,squid多种等web应用,特殊的业务可以做调整


所谓内核优化,主要是在Linux系统中针对业务服务应用而进行的系统内核参数优化,优化并无特殊的标准,下面以常见生产环境linux的内核优化为例讲解,仅供大家参考,欢迎拍砖。


net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 400065000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
将上面的内核参数值加入/etc/sysctl.conf文件中,然后执行如下命令使之生效:sysctl  -p
参数解释参考:http://yangrong.blog.51cto.com/6945369/1321594

使用ansible的copy模块报错

Ansible 回复了问题 • 2 人关注 • 1 个回复 • 1230 次浏览 • 2015-06-30 19:49 • 来自相关话题

部署使用varnish

小白菜 发表了文章 • 0 个评论 • 577 次浏览 • 2015-06-30 12:02 • 来自相关话题

节点:192.168.83.46 部署了LAMP+nagios监控系统开发80端口
节点:192.168.83.47 部署varnish做46的缓冲机制

部署varnish

[16:13:03 root:~ Slave] # useradd -s /sbin/nologin varnish

[16:13:41 root:~ Slave] # mkdir /data/varnish/cache

[16:13:41 root:~ Slave] # mkdir /data/varnish/cache

[16:14:03 root:~ Slave] # mkdir /data/varnish/log

[16:15:06 root:~ Slave] # chown -R varnish:varnish /data/varnish/cache

[16:15:39 root:~ Slave] # chown -R varnish:varnish /data/varnish/log

Varnish的官方网址为
http://varnish-cache.org
可以在这里下载最新版本的软件。在安装Varnish前需要安装PCRE库。如果没有安装该库,在Varnish2以上版本编译时,就会提示找不到PCRE库PCRE库则可以兼容正则表达式,所以必须先安装。下面介绍其安装过程。

[16:17:27 root:/opt/varnish Slave] # tar -zxvf pcre-8.00.tar.gz

[16:17:42 root:/opt/varnish Slave] # cd pcre-8.00

[16:18:58 root:/opt/varnish/pcre-8.00 Slave] # ./configure --prefix=/usr/local/pcre/

[16:19:39 root:/opt/varnish/pcre-8.00 Slave] # make && make install

安装varnish

[16:20:31 root:/opt/varnish Slave] # tar -zxvf varnish-2.0.6.tar.gz

export PKG_CONFIG_PATH=/app/soft/varnish/lib/pkgconfig/ 这一行一定要有,不然在编译的时候会报错。这行用于指定Varnish 查找PCRE库的路径,如果PCRE安装到其他路径下,在这里指定即可,
Varnish默认查找PCRE库的路径为usr/local/lib/pkgconfig。

[16:23:03 root:/opt/varnish Slave] # export PKG_CONFIG_PATH=/app/soft/varnish/lib/pkgconfig/

[16:24:24 root:/opt/varnish/varnish-2.0.6 Slave] # ./configure -prefix=/app/soft/varnish -enable-debugging-symbols -enable-developer-warnings -enable-dependency-tracking

[16:24:47 root:/opt/varnish/varnish-2.0.6 Slave] # make

[16:24:47 root:/opt/varnish/varnish-2.0.6 Slave] # make install

[16:25:27 root:/opt/varnish/varnish-2.0.6 Slave] # cp redhat/varnish.initrc /etc/init.d/varnish

[16:25:38 root:/opt/varnish/varnish-2.0.6 Slave] # cp redhat/varnish.sysconfig /etc/sysconfig/varnish

进入varnish配置文件进行配置修改

[16:31:49 root:/app/soft/varnish/etc/varnish Slave] # cd /app/soft/varnish/etc/varnish

[16:32:21 root:/app/soft/varnish/etc/varnish Slave] # vim default.vcl



[16:25:57 root:/opt/varnish/varnish-2.0.6 Slave] # /app/soft/varnish/sbin/varnishd -f /app/soft/varnish/etc/varnish/default.vcl -s malloc,2G -T 127.0.0.1:2000 -a 0.0.0.0:8080

[16:26:37 root:/opt/varnish/varnish-2.0.6 Slave] # ps -ef |grep varnishd

Varnish 启动运行信息

[16:27:24 root:/app/soft/varnish/bin Slave] # cd /app/soft/varnish/bin

[16:28:06 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishlog

[16:28:17 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishstat

杀掉varnish

[16:28:49 root:/app/soft/varnish/bin Slave] # killall varnishd

[16:29:11 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/sbin/varnishd -f /app/soft/varnish/etc/varnish/default.vcl -s malloc,2G -T 127.0.0.1:2000 -a 0.0.0.0:8080 -f /app/soft/varnish/etc/varnish/default.vcl


[16:29:45 root:/app/soft/varnish/bin Slave] # ps -ef |grep varnishd

查看日志

[16:30:37 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishlog

查看运行状态

[16:30:37 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishstat 查看全部
节点:192.168.83.46   部署了LAMP+nagios监控系统开发80端口
节点:192.168.83.47 部署varnish做46的缓冲机制

部署varnish

[16:13:03 root:~ Slave] # useradd -s /sbin/nologin varnish

[16:13:41 root:~ Slave] # mkdir /data/varnish/cache

[16:13:41 root:~ Slave] # mkdir /data/varnish/cache

[16:14:03 root:~ Slave] # mkdir /data/varnish/log

[16:15:06 root:~ Slave] # chown -R varnish:varnish /data/varnish/cache

[16:15:39 root:~ Slave] # chown -R varnish:varnish /data/varnish/log

Varnish的官方网址为
http://varnish-cache.org

可以在这里下载最新版本的软件。在安装Varnish前需要安装PCRE库。如果没有安装该库,在Varnish2以上版本编译时,就会提示找不到PCRE库PCRE库则可以兼容正则表达式,所以必须先安装。下面介绍其安装过程。

[16:17:27 root:/opt/varnish Slave] # tar -zxvf pcre-8.00.tar.gz

[16:17:42 root:/opt/varnish Slave] # cd pcre-8.00

[16:18:58 root:/opt/varnish/pcre-8.00 Slave] # ./configure --prefix=/usr/local/pcre/

[16:19:39 root:/opt/varnish/pcre-8.00 Slave] # make && make install

安装varnish

[16:20:31 root:/opt/varnish Slave] # tar -zxvf varnish-2.0.6.tar.gz

export PKG_CONFIG_PATH=/app/soft/varnish/lib/pkgconfig/ 这一行一定要有,不然在编译的时候会报错。这行用于指定Varnish 查找PCRE库的路径,如果PCRE安装到其他路径下,在这里指定即可,
Varnish默认查找PCRE库的路径为usr/local/lib/pkgconfig。

[16:23:03 root:/opt/varnish Slave] # export PKG_CONFIG_PATH=/app/soft/varnish/lib/pkgconfig/

[16:24:24 root:/opt/varnish/varnish-2.0.6 Slave] # ./configure -prefix=/app/soft/varnish -enable-debugging-symbols -enable-developer-warnings -enable-dependency-tracking

[16:24:47 root:/opt/varnish/varnish-2.0.6 Slave] # make

[16:24:47 root:/opt/varnish/varnish-2.0.6 Slave] # make install

[16:25:27 root:/opt/varnish/varnish-2.0.6 Slave] # cp redhat/varnish.initrc /etc/init.d/varnish

[16:25:38 root:/opt/varnish/varnish-2.0.6 Slave] # cp redhat/varnish.sysconfig /etc/sysconfig/varnish

进入varnish配置文件进行配置修改

[16:31:49 root:/app/soft/varnish/etc/varnish Slave] # cd /app/soft/varnish/etc/varnish

[16:32:21 root:/app/soft/varnish/etc/varnish Slave] # vim default.vcl

lip_image001.png
[16:25:57 root:/opt/varnish/varnish-2.0.6 Slave] # /app/soft/varnish/sbin/varnishd -f /app/soft/varnish/etc/varnish/default.vcl -s malloc,2G -T 127.0.0.1:2000 -a 0.0.0.0:8080

[16:26:37 root:/opt/varnish/varnish-2.0.6 Slave] # ps -ef |grep varnishd

Varnish 启动运行信息

[16:27:24 root:/app/soft/varnish/bin Slave] # cd /app/soft/varnish/bin

[16:28:06 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishlog

[16:28:17 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishstat

杀掉varnish

[16:28:49 root:/app/soft/varnish/bin Slave] # killall varnishd

[16:29:11 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/sbin/varnishd -f /app/soft/varnish/etc/varnish/default.vcl -s malloc,2G -T 127.0.0.1:2000 -a 0.0.0.0:8080 -f /app/soft/varnish/etc/varnish/default.vcl


[16:29:45 root:/app/soft/varnish/bin Slave] # ps -ef |grep varnishd

查看日志

[16:30:37 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishlog

查看运行状态

[16:30:37 root:/app/soft/varnish/bin Slave] # /app/soft/varnish/bin/varnishstat

隐藏nginx/tengine、apache、php版本号

OpenSkill 发表了文章 • 0 个评论 • 1129 次浏览 • 2015-06-29 23:47 • 来自相关话题

一.隐藏nginx|tengine版本号
Nginx和tengine默认情况下是显示版本号的,如下所示





如上图所示可以看出服务器是tegine 2.0.0版本,有时候会暴露哪个Tengine或Nginx版本的漏洞,就是说有些版本有漏洞,而有些版本没有。这样暴露出来的版本号就容易变成攻击者可利用的信息。所以,从安全的角度来说,隐藏版本号会安全很多。
 
下面我们就来看看怎么设置,可以隐藏Tengine/Ngine的版本号:1.进入到你Tengine/Nginx的安装目录,然后编辑主配置文件
# vim nginx.conf
在http {......}里加上server_tokens off;如:
http {
.....省略
sendfile on;
tcp_nopush on;
gzip on;
proxy_redirect off;
server_tokens off;
.....省略
}


2.如果后端接了php-fpm,则编辑配置文件fastcgi.conf或fcgi.conf (这个配置文件名也可以自定义的,根据具体文件名修改):
找到:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改为:
fastcgi_param SERVER_SOFTWARE nginx;3、重新加载tengine/nginx配置:
# /etc/init.d/tengine restart

这样就完全对外隐藏了nginx版本号了,就是出现404、501等页面也不会显示nginx版本。

最后验证结果:





如果想把Tengine也隐藏点,需要编辑Tengine源码中的src/core/nginx.h头文件





也可修改成你想要的显示信息,然后重新编译安装。





 
二.隐藏Apache版本号
一般情况下,软件的漏洞信息和特定版本是相关的,因此,软件的版本号对攻击者来说是很有价值的。

在默认情况下,系统会把Apache版本模块都显示出来(http返回头信息)。如果列举目录的话,会显示域名信息(文件列表正文),如:




 
隐藏方法:
1、隐藏Apache版本号的方法是修改Apache的配置文件,如Centos系统Linux默认是:# vim /etc/httpd/conf/httpd.conf分别搜索关键字ServerTokens和ServerSignature,修改:ServerTokens OS 修改为 ServerTokens ProductOnly

ServerSignature On 修改为 ServerSignature Off2、重启或重新加载Apache就可以了# /etc/init.d/httpd restart验证:





版本号与操作系统信息已经隐藏了
 
3、上面的方法是默认情况下安装的Apache,如果是编译安装的,还可以用修改源码编译的方法:

进入Apache的源码目录下的include目录,然后编辑ap_release.h这个文件,你会看到有如下变量:

#define AP_SERVER_BASEVENDOR “Apache Software Foundation”
#define AP_SERVER_BASEPROJECT “Apache HTTP Server”
#define AP_SERVER_BASEPRODUCT “Apache”

#define AP_SERVER_MAJORVERSION_NUMBER 2
#define AP_SERVER_MINORVERSION_NUMBER 2
#define AP_SERVER_PATCHLEVEL_NUMBER 15
#define AP_SERVER_DEVBUILD_BOOLEAN 0可以根据自己喜好,修改或隐藏版本号与名字
 
三、隐藏php版本号

为了安全起见,最好还是将PHP版本隐藏,以避免一些因PHP版本漏洞而引起的攻击。

1、隐藏PHP版本就是隐藏 “X-Powered-By: PHP/5.4.42″ 这个信息:

编辑php.ini配置文件,修改或加入: expose_php = Off 保存后重新启动Nginx或Apache等相应的Web服务器即可

验证:




2、其它几个PHP的基本安全设置:disable_functions = phpinfo,system,exec,shell_exec,passthru,popen,dl,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
#该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。

display_errors = Off
#是否将错误信息作为输出的一部分显示。在最终发布的web站点上,强烈建议你关掉这个特性,并使用错误日志代替。打开这个特性可能暴露一些安全信息,例如你的web服务上的文件路径、数据库规划或别的信息。

allow_url_fopen = Off
#是否允许打开远程文件,建议关闭,如果网站需要采集功能就打开。

safe_mode = On
#是否启用安全模式。打开时,PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许操作,不同则拒绝操作。开启安全模式的前提是你的目录文件权限已完全分配正确。

open_basedir = /var/www/html/devopsh:/var/www/html/zhouuupc
#目录权限控制,devopsh目录中的php程序就无法访问zhouuupc目录中的内容。反过来也不行。在Linux/UNIX系统中用冒号分隔目录,Windows中用分号分隔目录。 查看全部
一.隐藏nginx|tengine版本号
Nginx和tengine默认情况下是显示版本号的,如下所示

tn.png

如上图所示可以看出服务器是tegine 2.0.0版本,有时候会暴露哪个Tengine或Nginx版本的漏洞,就是说有些版本有漏洞,而有些版本没有。这样暴露出来的版本号就容易变成攻击者可利用的信息。所以,从安全的角度来说,隐藏版本号会安全很多。
 
下面我们就来看看怎么设置,可以隐藏Tengine/Ngine的版本号:
1.进入到你Tengine/Nginx的安装目录,然后编辑主配置文件
# vim nginx.conf
在http {......}里加上server_tokens off;如:
http {
.....省略
sendfile on;
tcp_nopush on;
gzip on;
proxy_redirect off;
server_tokens off;
.....省略
}
td.png
2.如果后端接了php-fpm,则编辑配置文件fastcgi.conf或fcgi.conf (这个配置文件名也可以自定义的,根据具体文件名修改):
找到:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改为:
fastcgi_param SERVER_SOFTWARE nginx;
3、重新加载tengine/nginx配置:
# /etc/init.d/tengine restart


这样就完全对外隐藏了nginx版本号了,就是出现404、501等页面也不会显示nginx版本。


最后验证结果:

tw.png

如果想把Tengine也隐藏点,需要编辑Tengine源码中的src/core/nginx.h头文件

tk.png

也可修改成你想要的显示信息,然后重新编译安装。

ab.png

 
二.隐藏Apache版本号
一般情况下,软件的漏洞信息和特定版本是相关的,因此,软件的版本号对攻击者来说是很有价值的。


在默认情况下,系统会把Apache版本模块都显示出来(http返回头信息)。如果列举目录的话,会显示域名信息(文件列表正文),如:


av.png
 
隐藏方法:
1、隐藏Apache版本号的方法是修改Apache的配置文件,如Centos系统Linux默认是:
# vim /etc/httpd/conf/httpd.conf
分别搜索关键字ServerTokens和ServerSignature,修改:
ServerTokens OS 修改为 ServerTokens ProductOnly

ServerSignature On 修改为 ServerSignature Off
2、重启或重新加载Apache就可以了
# /etc/init.d/httpd restart
验证:

ay.png

版本号与操作系统信息已经隐藏了
 
3、上面的方法是默认情况下安装的Apache,如果是编译安装的,还可以用修改源码编译的方法:


进入Apache的源码目录下的include目录,然后编辑ap_release.h这个文件,你会看到有如下变量:


#define AP_SERVER_BASEVENDOR “Apache Software Foundation”
#define AP_SERVER_BASEPROJECT “Apache HTTP Server”
#define AP_SERVER_BASEPRODUCT “Apache”

#define AP_SERVER_MAJORVERSION_NUMBER 2
#define AP_SERVER_MINORVERSION_NUMBER 2
#define AP_SERVER_PATCHLEVEL_NUMBER 15
#define AP_SERVER_DEVBUILD_BOOLEAN 0
可以根据自己喜好,修改或隐藏版本号与名字
 
三、隐藏php版本号


为了安全起见,最好还是将PHP版本隐藏,以避免一些因PHP版本漏洞而引起的攻击。


1、隐藏PHP版本就是隐藏 “X-Powered-By: PHP/5.4.42″ 这个信息:


编辑php.ini配置文件,修改或加入: expose_php = Off 保存后重新启动Nginx或Apache等相应的Web服务器即可


验证:
ww.png

2、其它几个PHP的基本安全设置:
disable_functions = phpinfo,system,exec,shell_exec,passthru,popen,dl,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
#该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。

display_errors = Off
#是否将错误信息作为输出的一部分显示。在最终发布的web站点上,强烈建议你关掉这个特性,并使用错误日志代替。打开这个特性可能暴露一些安全信息,例如你的web服务上的文件路径、数据库规划或别的信息。

allow_url_fopen = Off
#是否允许打开远程文件,建议关闭,如果网站需要采集功能就打开。

safe_mode = On
#是否启用安全模式。打开时,PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许操作,不同则拒绝操作。开启安全模式的前提是你的目录文件权限已完全分配正确。

open_basedir = /var/www/html/devopsh:/var/www/html/zhouuupc
#目录权限控制,devopsh目录中的php程序就无法访问zhouuupc目录中的内容。反过来也不行。在Linux/UNIX系统中用冒号分隔目录,Windows中用分号分隔目录。

ansible安装过程中常遇到的错误

采菊篱下 发表了文章 • 0 个评论 • 2369 次浏览 • 2015-06-29 11:03 • 来自相关话题

1.安装完成后允许命令报错
Traceback (most recent call last):
File "/usr/bin/ansible", line 197, in <module>
(runner, results) = cli.run(options, args)
File "/usr/bin/ansible", line 163, in run
extra_vars=extra_vars,
File "/usr/lib/python2.6/site-packages/ansible/runner/__init__.py", line 233, in __init__
cmd = subprocess.Popen(['ssh','-o','ControlPersist'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "/usr/lib64/python2.6/subprocess.py", line 639, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory解决方法:
# yum install openssh-clients2.出现Error: ansible requires a json module, none found!
SSH password:
10.0.1.110 | FAILED >> {
"failed": true,
"msg": "Error: ansible requires a json module, nonefound!",
"parsed": false
}解决方法:
python版本过低,要不升级python要不就升级安装python-simplejson。3.安装完成后连接客户端服务器报错
FAILED => Using a SSH password insteadof a key is not possible because Host Key checking is enabled and sshpass doesnot support this. Please add this host'sfingerprint to your known_hosts file to manage this host.解决方法:
在ansible 服务器上使用ssh 登陆下/etc/ansible/hosts 里面配置的服务器。然后再次使用ansible 去管理就不会报上面的错误了!但这样大批量登陆就麻烦来。因为默认ansible是使用key验证的,如果使用密码登陆的服务器,使用ansible的话,要不修改ansible.cfg配置文件的ask_pass = True给取消注释,要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False即可4.如果客户端不在know_hosts里将会报错
paramiko: The authenticity of host '192.168.24.15'can't be established.
The ssh-rsa key fingerprint is397c139fd4b0d763fcffaee346a4bf6b.
Are you sure you want to continueconnecting (yes/no)?
解决方法:
需要修改ansible.cfg的#host_key_checking= False取消注释5.出现FAILED => FAILED: not a valid DSA private key file
解决方法:
需要你在最后添加参数-k6.openssh升级后无法登录报错
PAM unable todlopen(/lib64/security/pam_stack.so): /lib64/security/pam_stack.so: cannot openshared object
file: No such file or directory解决方法:
sshrpm 升级后会修改/etc/pam.d/sshd 文件。需要升级前备份此文件最后还原即可登录。7.第一次系统初始化运行生成本机ansible用户key时报错
failed: [127.0.0.1] =>{"checksum": "f5f2f20fc0774be961fffb951a50023e31abe920","failed": true}
msg: Aborting, target uses selinux but pythonbindings (libselinux-python) aren't installed!
FATAL: all hosts have already failed –aborting解决方法:
# yum install libselinux-python -y 查看全部
1.安装完成后允许命令报错
Traceback (most recent call last):
File "/usr/bin/ansible", line 197, in <module>
(runner, results) = cli.run(options, args)
File "/usr/bin/ansible", line 163, in run
extra_vars=extra_vars,
File "/usr/lib/python2.6/site-packages/ansible/runner/__init__.py", line 233, in __init__
cmd = subprocess.Popen(['ssh','-o','ControlPersist'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "/usr/lib64/python2.6/subprocess.py", line 639, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1228, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
解决方法:
# yum install openssh-clients
2.出现Error: ansible requires a json module, none found!
SSH password:
10.0.1.110 | FAILED >> {
"failed": true,
"msg": "Error: ansible requires a json module, nonefound!",
"parsed": false
}
解决方法:
python版本过低,要不升级python要不就升级安装python-simplejson。
3.安装完成后连接客户端服务器报错
FAILED => Using a SSH password insteadof a key is not possible because Host Key checking is enabled and sshpass doesnot support this.  Please add this host'sfingerprint to your known_hosts file to manage this host.
解决方法:
在ansible 服务器上使用ssh 登陆下/etc/ansible/hosts 里面配置的服务器。然后再次使用ansible 去管理就不会报上面的错误了!但这样大批量登陆就麻烦来。因为默认ansible是使用key验证的,如果使用密码登陆的服务器,使用ansible的话,要不修改ansible.cfg配置文件的ask_pass = True给取消注释,要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False即可
4.如果客户端不在know_hosts里将会报错
paramiko: The authenticity of host '192.168.24.15'can't be established.
The ssh-rsa key fingerprint is397c139fd4b0d763fcffaee346a4bf6b.
Are you sure you want to continueconnecting (yes/no)?

解决方法:
需要修改ansible.cfg的#host_key_checking= False取消注释
5.出现FAILED => FAILED: not a valid DSA private key file
解决方法:
需要你在最后添加参数-k
6.openssh升级后无法登录报错
PAM unable todlopen(/lib64/security/pam_stack.so): /lib64/security/pam_stack.so: cannot openshared object
file: No such file or directory
解决方法:
sshrpm 升级后会修改/etc/pam.d/sshd 文件。需要升级前备份此文件最后还原即可登录。
7.第一次系统初始化运行生成本机ansible用户key时报错
failed: [127.0.0.1] =>{"checksum": "f5f2f20fc0774be961fffb951a50023e31abe920","failed": true}
msg: Aborting, target uses selinux but pythonbindings (libselinux-python) aren't installed!
FATAL: all hosts have already failed –aborting
解决方法:
# yum install libselinux-python -y

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

采菊篱下 回复了问题 • 2 人关注 • 1 个回复 • 1006 次浏览 • 2015-06-29 10:23 • 来自相关话题

Mcrypt PHP extension required.

OpenSkill 回复了问题 • 2 人关注 • 1 个回复 • 901 次浏览 • 2015-06-28 23:07 • 来自相关话题

rsync: Failed to exec ssh: No such file or directory (2)

OpenSkill 回复了问题 • 2 人关注 • 1 个回复 • 1815 次浏览 • 2015-06-28 16:55 • 来自相关话题

vnc viewer连接闪退

采菊篱下 回复了问题 • 1 人关注 • 1 个回复 • 931 次浏览 • 2015-06-17 13:26 • 来自相关话题