Ansible 是一个配置管理和应用部署工具,功能相似于目前业界的配置管理工具 Chef,Puppet,Saltstack。Ansible 是经过 Python 语言开发。Ansible 平台由 Michael DeHaan 建立,他同时也是知名软件 Cobbler 与 Func 的做者。Ansible 的第一个版本发布于 2012 年 2 月,相比较其它同类产品来讲,Ansible 仍是很是年轻的,但这并不影响他的蓬勃发展与你们对他的热爱。python
Ansible 默认经过 SSH 协议管理机器,因此 Ansible 不须要安装客户端程序在服务器上。您只须要将 Ansible 安装在一台服务器,在 Ansible 安装完后,您就能够去管理控制其它服务器。不须要为它配置数据库,Ansible 不会以 daemons 方式来启动或保持运行状态。nginx
Ansible 的目标有以下:
• 自动化部署应用
• 自动化管理配置
• 自动化的持续交付
• 自动化的(AWS)云服务管理。git
根据 Ansible 官方提供的信息,当前使用 Ansible 的用户有:evernote、rackspace、NASA、Atlassian、twitter 等。github
Paste_Image.pngweb
从上图能够看出,运行ansible的先决条件是,安装ansible到管理节点,定义主机清单,并有一些playbooks定义。数据库
让咱们来看看咱们如何使用Ansible将咱们的Ubuntu虚拟机转换为Web服务器。json
您在管理节点上运行Ansible Playbook,它查看您在playbook中定义的命令参数,并通知咱们定位到网络组中的节点。 Ansible而后读取主机清单以查找分配给Web组的节点。在这一点上,Ansible已经准备好开始工做,因此它将经过ssh远程链接到定义的机器,一般你会想要经过预共享密钥创建一些类型的ssh信任,这样你就没必要在进行ssh登录的时候输入密码。而后Ansible将开始逐步执行playbook中的任务,一次一个任务,从顶部到底部的顺序遍历它们,就像你手动登陆执行任务同样。因此,它安装软件包,更新配置文件,使用git部署咱们的网站代码,最后启动咱们的Web服务。当Ansible很愉快的把一切都按预期的完成,你会获得一个执行成功的状态报告。vim
能够用动图说明下这次过程。windows
46-ansible-playbook-haproxy-nginx1.gif服务器
目前,只要机器上安装了 Python 2.6 或 Python 2.7 (windows系统不能够作控制主机),均可以运行Ansible.
主机的系统能够是 Red Hat, Debian, CentOS, OS X, BSD的各类版本,等等.
一般咱们使用 ssh 与托管节点通讯,默认使用 sftp.若是 sftp 不可用,可在 ansible.cfg 配置文件中配置成 scp 的方式. 在托管节点上也须要安装 Python 2.4 或以上的版本.若是版本低于 Python 2.5 ,还须要额外安装一个模块:
python-simplejson
选择了目前几款主流的与 Ansible 功能相似的配置管理软件 Puppet、Saltstack,这里所作的对比不针对各个软件的性能做比较,只是对各个软件的特性作个对比。
Puppet | Saltstack | Ansible | |
---|---|---|---|
开发语言 | Ruby | Python | Python |
是否有客户端 | 有 | 有 | 无 |
是否支持二次开发 | 不支持 | 支持 | 支持 |
服务器与远程机器是否相互验证 | 是 | 是 | 是 |
服务器与远程机器通讯是否加密 | 是,标准 SSL 协议 | 是,使用 AES 加密 | 是,使用 OpenSSH |
平台支持 | 支持 AIX、BSD、HP-UX、Linux、 MacOSX、Solaris、 Windows | 支持 BSD、Linux、Mac OS X、Solaris、 Windows | 支持 AIX、BSD、 HP-UX、 Linux、Mac OSX、Solaris |
是否提供 web | ui 提供 | 提供 | 提供,不过是商业版本 |
配置文件格式 | Ruby 语法格式 | YAML | YAML |
命令行执行 | 不支持,但可经过配置模块实现 | 支持 | 支持 |
官方文档: http://docs.ansible.com/
中文文档: http://www.ansible.com.cn/ http://ansible-tran.readthedocs.io/
Jinja2 中文文档: http://docs.jinkan.org/docs/jinja2/
yaml语法: http://www.yaml.org/
书籍: https://www.ansible.com/ebooks 连接:http://pan.baidu.com/s/1qYazeos 密码:28p2
ansible examples :https://github.com/ansible/ansible-examples
ansible-vim: https://github.com/pearofducks/ansible-vim (能够高亮显示,语法检查)