ansible部署使用小结

ansible官方介绍定义为简单、免代理、强大的开源IT自动化工具。本人理解强大在于可实现批量系统配置、批量程序部署、批量命令运行等功能,而说简单则是仅仅需要在管理机上安装,只需要能够ssh被管理主机即可轻松实现管理,而且入门使用也是非常快捷方便。

官方文档地址:http://docs.ansible.com/
1 ansible源码安装
系统环境:ubuntu 14.04
ansible是基于python的框架,如果是使用源码包安装需要先安装好依赖包。
1、 python2.7

2、setuptools模块安装
如果没有wget,先apt-get install wget

3、pycrypto模块安装

4、PyYAML模块安装
PyYAML是python下的YAML解析器,先安装YAML

5、Jinja2模块安装
首先安装MarkupSafe(是实现统一编码字符串的python库)

若没有安装pip,请先更新系统,再安装pip

6、安装paramiko

7、安装simplejson

8、安装ansible

9、安装ansible源码包

apt-get安装
在ubuntu及其衍生版中,可以通过增加ppa源进行apt-get安装,具体如下:

2 SSH免密钥登录设置
在管理机生成公钥/私钥

3 测试
配置被管理主机,修改主机文件/etc/ansible/hosts

ansible基本命令

4 使用中一些问题
4.1 在使用copy模块时遇到编解码问题

在写入磁盘文件或通过套接字发送前,通常需要将Unicode数据转换为特定的编码;从磁盘文件读取或从套接字接收的字节序列,应转换为Unicode数据后再处理。
这些工作可以手工完成。例如:使用内置的open()方法打开文件后,将read()读取的str数据,按照文件编码格式进行decode();write()写入前,将Unicode数据按照文件编码格式进行encode(),或将其他编码格式的str数据先按该str的编码decode()转换为Unicode数据,再按照文件编码格式encode()。若直接将Unicode数据传入write()方法,Python将按照源代码文件声明的字符编码进行encode()后再写入。
解决方法:
可以先打包成压缩包然后再解压的方式规避。
4.2 文件权限问题

解决方法:修改ansible主机的ansible.cfg配置文件,如下:
[root@361way.com ~]# vim /etc/ansible/ansible.cfg
找到如下行:

修改为

4.3 执行.sh文件是出错
/bin/bash: /tmp/env.sh: /bin/bash^M: bad interpreter: No such file or directory
这是由于在windows下编辑的脚本,文本的默认格式是doc,需要转换为unix的格式。
解决方法:在vi编辑器中使用:set ff=unix,然后再使用:set ff查看。
或者直接使用doc2unix工具进行文件格式转换,ubuntu默认是没有安装这个工具的。
(1)安装tofrodos

实际上它安装了两个工具:todos(相当于unix2dos),和fromdos(相当于dos2unix)
安装完即可,现在你已经可以进行文本格式的转换啦。
比如:
todos Hello.txt (即unix2dos Hello.txt)
fromdos Hello.txt (即dos2unix Hello.txt)
(2)做一些优化
由于习惯了unix2dos和dos2unix的命令,可以把上面安装的两个工具链接成unix2dos 和dos2unix,或者仅仅是起个别名,并放在启动脚本里。
步骤:

或者在 ~/.bashrc里起个别名
vi ~/.bashrc
添加

发表评论