APP下载

基于Ansible的自动化部署与运维

2020-10-29刘佳高琪琪刘飘梁栋茂

河南科技 2020年26期
关键词:云计算

刘佳 高琪琪 刘飘 梁栋茂

摘 要:随着云计算的不断发展,越来越多的互联网公司需要对企业服务器进行自动化部署与运维,最终实现配置管理、服务及时开通、应用部署和流程编排等目的。Ansible便由此产生。

关键词:云计算;流程编排;Ansible

中图分类号:TP393.09文献标识码:A文章编号:1003-5168(2020)26-0014-03

Abstract: With the continuous development of cloud computing, more and more Internet companies need to automate deployment and operation and maintenance of enterprise servers, and ultimately achieve configuration management, timely service activation, application deployment and process orchestration. So Ansible was born.

Keywords: cloud computing;process orchestration;Ansible

Ansible是基于Python開发的一种自动化运维工具[1-2]。基于Ansible自动化的服务器部署与运维在配置管理领域已经涌现出多种工具,配置管理的目标就是确保被管理的主机尽可能快速、按照正确方式达到配置文件中描述的状态,这对管理IT环境至关重要;服务即时开通主要针对数据中心、虚拟化环境、云计算中快速开通的新主机。几乎所有云计算的服务商都有相应的API接口,这些自动化工具通过API接口能够迅速地创建主机实例。对于基于Linux或最近快速发展的容器技术,应用部署主要关注如何尽量实现零停机部署应用。很多公司采用滚动式部署或者金丝雀部署,Ansible支持这两种方式。流水线式部署也是很常见的,常见的工具包括ThoughtWorks Go、Atlassian Bamboo、大量插件支持;流程编排主要是进场部署时如何保证基础架构中的各种组件协调一致。这类工具有Ansible、Mcollective、Salt、Chef等。基于Ansible自动化的服务器部署与运维帮助了企业实现IT工作的自动化,降低人为操作失误,提高业务自动化率和运维工作效率[3-5]。

1 项目研究目标及主要内容

1.1 项目研究目标

项目研究目标如下:实现Ansible母机对主机清单内批量化从属机的控制以及彼此的网络互通;实现通过Ansible母机对每一台从属机内的用户、组、权限的管理,并实现基本的文件创建、删除、内容修改等基础运维;实现特定从属机上硬件报告的生成、应用软件的安装以及小型网页主页的显示;实现服务器数据文件的加密与解密,保证企业内部工程的安全性与可靠性。

1.2 主要内容

主要研究内容是通过自动化运维技术模拟中大型企业批量化服务器的部署与运维。首先要明确用户对服务器的真正需求,在此基础上对整体服务进行构架,然后自顶向下,逐步细化,进行模块化的具体功能设计。其次,要研究Ansible的基础yml语言的组成与使用、Ansible的核心playbook剧本的编写与应用、相关软硬件报告的生成、数据文件加密技术、部署与运维过程中使用的其他技术。

2 项目创新特色概述

2.1 成本优势

使用虚拟化技术进行Ansible自动化的服务器部署与运维,一方面减小了公司对服务器这类高成本硬件的需求,另一方面降低了分台手动部署所形成的时间和人力成本。Ansible自动化的服务器部署与运维有着廉价的分配过程,需要时才分配,分配过程很廉价,为企业或学校服务器部署与运维提供了一种经济高效的解决方案。

2.2 管理优势

Ansible采用Python语言开发,采用ssh通信,不需要安装代理,没有数据库,同时没有后台驻留程序。但一切的前提是用户安装的是一个正常无精简的Linux操作系统,因为它仍然需要远端机器上有sftp或scp,同时至少安装了Python2.4版本,而且Python2.5及以下版本需要安装Python的插件python-simplejson,才能使用更全面的功能。

3 项目研究技术路线

项目研究技术路线如图1所示。

4 设计与制作的技术难点

4.1 技术原理

Ansible使用ssh连接到服务器运行配置好的任务,无须安装其他软件,所有工作交给客户端的Ansible负责。在管理工作站上安装Ansible程序配置被管控主机的IP信息,被管控的主机无客户端。Ansible自动化部署需要进行编排、自动验证,自动资源配置以实现业务系统的自动化部署管理。Ansible自动化部署功能的实现涉及编排策略定义与识别、虚拟计算和网络资源识别与控制等多项关键技术。本项目需要结合虚拟化平台,以平台上的API接口实现Ansible母机对每一台从属机内的用户、组、权限的管理,实现基本的文件创建、删除、内容修改等基础运维,实现服务器数据文件的加密与解密,保证企业内部工程的安全性与可靠性。

4.2 Ansible工作原理图

Ansible工作原理如图2所示。用户输入的指令通过Ansible的任务剧本playbook进行编排定义,并通过Ansible的核心执行工具进行一系列处理,达到访问主机和网络的目的。

5 研究实施

Ansible有两种任务执行模式,即ad-hoc模式(点对点模式)以及playbook模式(剧本模式)。

Ansible执行时,首先会读取ansible.cfg配置文件,通过规则过滤inventory中定义的主机列表,使其加载任务对应的模块文件,然后通过ansible core将模块或命令打包成Python脚本文件,将临时脚本文件传输到远程服务器,对应执行用户的家目录‘.ansible/tmp/xxx/xxx.py文件,再给文件加载执行权限,最后执行Python文件并返回结果。项目实施步骤如下。

1.安装并配置Absible

yum install ansible

安装完后修改配置文件:

# vim ansible.cfg /etc/ansible/ansible.cfg -o

[defaults]

inventory = /home/devops/ansible/inventory

remote_user = devops

ask_pass = False

roles_path =/home/devops/ansible/roles

[privilege_escalation]

become= Ture

become_method = sudo

become_user = root

become_ask_pass = False

2.使用公钥认证

3.配置Linux主机ssh无密码访问

4.测试主机连通性:

[devops@workstation ansible]$ ansible -m ping liu

serverc | SUCCESS => {

“changed”:false,

“ping”: “pong”

}

servera | SUCCESS => {

“changed”:false,

“ping”: “pong”

}

serverb | SUCCESS => {

“changed”:false,

“ping”: “pong”

}

5.搭建ad-hoc建软件仓库

6.安装软件包

7.使用rhel-system-role

8.使用galaxy创建roles角色

9.创建并使用roles

10.配置Ansible剧本,剧本配置如下:

---

- hosts: all

tasks:

- name: Install Nginx Package

yum: name=nginx state=present

- name: Copy Nginx.conf

template: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf

owner=root group=root mode=0644 vaildate='nginx -t -c %s'

notify:

- ReStart Nginx Service

handlers:

- name: ReStart Nginx Service

service: name=nginx state=restarted

11.使用galxay角色

12.创建并使用磁盘分区

13.生成hosts文件

14.创建网站内容目录

6 结语

研究表明,Ansible母机可以实现对主机清单内批量化从属机的控制和网络互通;实现对每一台从属机内的用户、组、权限的管理,实现基本的文件创建、删除、内容修改等基础运维;实现特定从属机上硬件报告的生成、应用软件的安装以及小型網页主页的显示;实现服务器数据文件的加密与解密,保证企业内部工程的安全性与可靠性。

参考文献:

[1]金窗,沈灿.Ansible自动化运维:技术与最佳实践[M].北京:机械工业出版社,2016.

[2]北京马哥教育科技有限公司.Ansible中文权威指南[EB/OL].(2020-07-20)[2020-07-28].http://www.ansible.com.cn/index.html.

[3]w3cschool.Ansible自动化运维教程[EB/OL].(2020-07-19)[2020-07-28].https://www.w3cschool.cn/automate_with_ansible.

[4]松涛,魏巍,甘捷.Ansible权威指南[M].北京:机械工业出版社,2016.

[5]workming.自动化运维工具Ansible详细部署[EB/OL].(2014-11-20)[2020-07-28].https://blog.51cto.com/sofar/1579894.

猜你喜欢

云计算
云计算虚拟化技术在电信领域的应用研究
基于云计算的医院信息系统数据安全技术的应用探讨
谈云计算与信息资源共享管理
志愿服务与“互联网+”结合模式探究
云计算与虚拟化
基于云计算的移动学习平台的设计
基于云计算环境下的ERP教学改革分析
基于MapReduce的故障诊断方法
实验云:理论教学与实验教学深度融合的助推器
云计算中的存储虚拟化技术应用