Ansible的自动化运维有哪些优势?
1 Ansible的自动化运维优势
Ansible是一种无客户端运维自动化工具,它使运维人员可以在很短的时间内更快、更有效地完成复杂的运维任务。虽然Ansible并不是唯一一种自动化运维工具,但它带来的优势也是多种多样的。
1.1 成本效益
Ansible可以实现跨平台的自动化管理,运维人员无须专门学习和安装其他管理软件,操作简单、易懂,快速上手,人员投入即可获得高质量的管理和运营结果,同时减少了运维成本。
1.2 安全可靠
Ansible在远程服务器之间建立非常安全的连接,也可以通过 SSH 密钥来建立连接,借助静默安装可保证大量服务器的静默安装进行升级和部署,起到安全、可靠的自动管理作用。
1.3 提高系统效率
Ansible的模块化设计,可用于快速将任务脚本和代码功能集成到自动化工作流中,简化大量应用运维任务,提高核心任务的安装、配置、测试和部署的效率。
1.4 可扩展性
Ansible的自动化运维工具具有可扩展性,可以通过模块扩展Ansible的功能,或是将脚本转换成Ansible模块,以达到拓展Ansible功能、实现定制化自动化运维需求的目的。
2 Ansible运用于自动化运维实践
2.1 搭建LNMP环境
LNMP(Linux + Nginx + MySQL + PHP)架构,是Web app开发非常常用的环境,周期性交付迭代新功能时,需要快速搭建。 使用Ansible可以很快的安装所需环境,前提条件是要先安装Ansible,这有两种方法,一种是源码安装ansible,另一种是使用yum一键安装Ansible,然后编写playbook文件,playbook中需要提供安装web服务器的文件(比如Nginx),安装数据库(比如MySQL)和语言(比如PHP)模块,以及要指定的配置文件,可以让Ansible自动完成搭建LNMP环境的整个过程。
2.2 部署服务
Ansible也可以用来管理和部署Web应用,比如部署Tomcat,可以在playbook中指定Tomcat安装源码文件地址,以及设置端口号等等,例如可以设置的属性如下: 使用HTTP和HTTPS的端口号 分配的内存大小 JVM内存设置 修改Tomcat配置文件内容 部署项目文件,比如war包文件,etc
使用ansible部署tomcat有很多优势:无须额外安装客户端,只要在控制机上安装Ansible即可;无须做大量手动配置,ansible可以根据你编写的配置文件自动完成配置;可以在批量服务器上自动部署tomcat,提高部署效率;还可以定期升级tomcat版本,避免服务器运行过程中受到攻击的风险。
3 操作步骤
3.1 安装Ansible
要使用Ansible进行自动化部署,必须先对Ansible进行安装。Ansible可以通过源码安装,也可以使用yum一键安装简化安装步骤。
假设我们用Yum方式安装Ansible,如下操作: (1)在Ansible控制机上新建/etc/yum.repos.d/dag.repo文件,写入以下内容: [dag] name=DAG packages for Red Hat Enterprise Linux baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=1
(2)执行Yum安装: yum install ansible -y
3.2 Ansible Playbook编写
接下来,我们需要用来编写.yml文件,这段Playbook文件中配置的内容就是Ansible将要运行的任务,包含如何安装客户端的步骤、配置文件和模块,以及要操作的目标服务器等信息。
例如,编写一个Playbook,完成LNMP环境的搭建,具体如下: ――
- hosts: all
tasks:
- name: install nginx yum: name=nginx state=present
- name: install MySQL yum: name=mysql state=present
- name: install PHP yum: name=php state=present
3.3 通过Ansible执行部署
最后就是运行脚本完成在远程控制机上的操作,在终端窗口输入以下命令运行Playbook文件,就可以开始自动部署LNMP环境了。
ansible-playbook build_LNMP.yml -i hosts
此外,还可以使用Ansible命令行参数,来实现应用部署,直接指定模块,参数,运行命令来完成工作,具体如下:
ansible target -m yum -a “name=nginx state=present” ansible target -m yum -a “name=mysql state=present” ansible target -m yum -a “name=php state=present”
这样,Ansible就可以根据我们指定的任务自动地在控制机上完成LNMP环境的搭建,并且以一种高效的方式在远程服务器上进行应用部署,实现自动化运维,从而提升运维效率。