因为公司想对项目逐步转向为自动化部署,所以安排我和一位大佬做起了运维。目前是想先用ansible实现从git上获取code,在ansible主机上编译,配置,打包,发布。所以就有了这篇文章。
0x00 安装
Ubuntu 16.04
Pip安装
pip是Python的包管理工具,先装好pip,再安装ansible。目前建议Python版本:2.7,pip版本:9
源码编译安装
CentOS安装
- 强烈建议使用CentOS安装。且安装ansible用户最好能保证拥有其他需要使用软件的权限,如Maven,Java,Python,Mysql等
否则ansible使用到这些软件时,容易出现权限不足,或者找不到环境变量等问题- Windows server 和OS X最好放在虚拟机里学习ansible,因为这是运维专用的,最好运行在Linux系统上,有实战意义。
检测安装成功:
0x01 配置
安装之后是需要做一些配置,如果你是从源码make install
安装的,可能没有配置文件。可以直接从example文件夹中,复制一份到/etc/ansible/
下就可以了。
如果没有这个文件夹,创建一下就行,保证ansible的操作用户有这个文件夹的操作权限。
如果是其他方式安装的,执行
可以看到配置文件的位置,找不到就去github上看看,example文件夹里有
这两个文件,很重要!
- ansible.cfg:是ansible 全局的配置
- hosts:是ansible管理的主机列表,和部分参数。
anbile配置文件是有优先级的
下面是ansible1.5只后版本查找ansible.cfg的优先级。
- ANSIBLE_CONFIG (an environment variable)
- ansible.cfg (in the current directory)
- .ansible.cfg (in the home directory)
- /etc/ansible/ansible.cfg
下面是配置参数大全,参考用。
刚开始使用的时候,主要配置hosts文件位置
0x02 host文件
hosts文件是ansible管理主机的Inventory文件,里面存放的是主机组和部分参数
例如
port:ssh到目标主机的端口
user:目标主机将会以这个身份登录
pass:目标主机该用户的密码
中括号内是主机的分组名
- 下面的是主机地址,可以是ip,可以是域名。ip(域名)之后跟的是链接参数。
- 如果啥都不写,安装咱们之前写的ansible.cfg中定义的默认配置来进行ssh链接
- 其中如果两台主机进行了ssh 互信。那么ansible_ssh_pass参数可以不写。
http://ansible-tran.readthedocs.io/en/latest/docs/intro_inventory.html
在上面有详细讲解hosts文件定义的规范和技巧。
遇到几个坑:
错误:用户没有ssh的权限。首先保证user能被ssh连上。
错误:密码不对
错误:主机没有sshpass模块,这个想办法自己装上。
0x03 爱因斯坦的小板凳 hello world
接下来介绍使用ansible在目标主机上打印出:hello world
先不管命令的含义