1.Ansible介绍
1).Ansible的优点
Ansible是一个简单的自动化引擎,可完成配置管理、引用部署、服务编排以及其他各种IT需求
Ansible是Python开发并实现的开源软件,其依赖Jinja2,paramiko和PyYAML这几个Python库
安装部署简单
基于SSH进行配置管理
Ansible不需要守护进程
日志集中存储
Ansible简单易用
Ansible功能强大
Ansible设计优秀
Ansible对云计算和大数据平台都有很好的支持
2).Ansible与Fabric之间比较
Fabric像是一个工具箱,提供了很多好用的工具用于在远程服务器执行命令
Ansible提供了一套简单的流程,只需要按照它的流程来做就能轻松完成任务
Fabric是库,Ansible是框架
Fabric简单,Ansible复杂
Fabric通过SSH执行简单的命令,Ansible将模块拷贝到远程服务器后执行,执行完以后删除模块
Fabric需要Python编程背景,Ansible不需要
Fabric需要写代码,Ansible只需要编写YAML格式的配置文件来描述要做的事情
Fabric提供了基本的接口,业务逻辑需要用户自己实现,Ansible提供了大量模块,用户只需要学习模块的用法即可
3).Ansible与SaltStack之间比较
Ansible安装部署简单,SaltStack需要安装客户端接收服务端发过来的命令
SaltStack相应速度更快,Ansible使用标准SSH连接,而SaltStack使用ZeroMQ进行通信和传输
Ansible更安全,Ansible使用标准SSH连接传输数据,不需要在远程主机上启动守护进程
SaltStack对Windows支持比较友好
Ansible自身运维比较简单,SaltStack需要在Master和Minion主机启动一个守护进程
2.Ansible使用入门
1).安装Ansible
pip install ansible
2).Ansible的架构
Ansible的编排引擎由Inventory、API、Modules(模块)和Plugins组成
工程师将需要在远程服务器执行的操作写在Ansible Playbook中,然后使用Ansible执行Playbook中的操作
3).Ansible的运行环境
Ansible会默认读取/etc/ansible/hosts文件中配置的远程服务器列表 # mkdir /etc/ansible # cat /etc/ansible/hosts [test] 192.168.1.101 192.168.1.102 192.168.1.103 # ansible test -m ping 192.168.1.101 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.102 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.103 | SUCCESS => { "changed": false, "ping": "pong" }
4).Ansible的ad-hoc模式
Ansible的ad-hoc模式,通过ansible命令执行操作的方式,称为ad-hoc # ansible test -m command -a "hostname" # ansible test -m command -a "whoami" 将本地文件拷贝到服务器中: # ansible test -m copy -a "src=/etc/ansible/hosts dest=/tmp/hosts" 修改文件的所有者和权限: # ansible all -m file -a "dest=/tmp/hosts mode=500 owner=mysql group=mysql" -become -become参数类似于Linux命令下的sudo 在远程服务器中安装软件: # ansible test -m yum -a "name=git state=present" -become
5).使用playbook控制服务器
在实际的生产环境中,我们一般将远程服务器需要做的事情写在一个YAML配置文件中 YAML文件称为Ansible Playbook # cat test_playbook.yaml --- - hosts : test become : yes become_method : sudo tasks : - name : copy file copy : src=/etc/ansible/hosts dest=/tmp/data.txt - name : change mode file : dest=/tmp/data.txt mode=500 owner=mysql group=mysql - name : ensure packages installed yum : pkg="{{ item }}" state=present with_items : - git # ansible-playbook test_playbook.yaml
3.Inventory管理
4.YAML语法
5.Ansible模块
6.Playbook
7.role的定义与使用
8.Ansible的配置文件