ANSIBLE自动部署实践

Posted 平台云课堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ANSIBLE自动部署实践相关的知识,希望对你有一定的参考价值。

ANSIBLE自动部署实践



Ansible是什么


 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多老牌运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。


Ansible特性


下面介绍下Ansible的主要特性:

1.模块化:调用特定的模块,完成特定任务

2.支持自定义模块

3.基于Python语言实现

4.部署简单,基于python和SSH(默认已安装),agentless

5.安全,基于OpenSSH

6.支持playbook编排任务

7.幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

8.可使用任何编程语言写模块

9.YAML格式,编排任务,支持丰富的数据结构

10.较强大的多层解决方案


Ansible架构



先来看看这张架构图,看起来是不是很简单,先就各个组成部分做一个简单的说明。

1.核心引擎:即图中所看到的Ansible。

2.核心模块(Core Module):和大多数运维工具一样,将系统和应用提供的能力模块化,一个模块有点像编程中一个功能接口,要使用的时候调用接口并传参就可以了。比如Ansible的service模块,你要保证名为nginx的service处于启动状态,只需要调用service模块,并配置参数name: nginx,state: started即可。

3.自定义模块(Custom Modules):显而易见,如果Ansible的核心模块满足不了你的需求,你可以添加自定义化的模块。

4.插件(Plugins):模块功能的补充,如循环插件、变量插件、过滤插件等,也和模块一样支持自定义,这个功能不常用。

5.剧本(playbooks):说到这个,先说说Ansible完成任务的两种方式,一种是Ad-Hoc,就是ansible命令,另一种就是Ansible-playbook,也就是ansible-playbook命令。他们的区别就像是Command命令行和Shell Scripts,比如,要在远程主机上安装nginx或许一条命令ansible apps -m yum -a “name=nginx state=present”,但是要进行一个完整的nginx安装配置启动的固化流程性质的操作,最好写成一个playbooks(可以看作是任务的合集)。

6.连接插件(connectior plugins):Ansible默认是基于SSH连接到目标机器上执行操作的。但是同样的Ansible支持不同的连接方法,要是这样的话就需要连接插件来帮助我们完成连接了。

结合图中的Cloud元素提一提Ansible的host inventory和SSH,Ansible默认是基于SSH连接到目标机器上执行操作,这样就需要目标主机上有一个用户用来执行Task中定义的操作,在cloud环境中可以在镜像内置用户和公钥,然后通过调用云主机供应商提供的脚本动态生成host inventory。这样对主机的管理提供了很大的方便。


Ansible工作流程


ANSIBLE自动部署实践


简单理解就是Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行地在这些主机中执行配置的任务,最后等待执行返回的结果。


Ansible实践


接下来给大家介绍一下Ansible部署微服务应用的具体案例:

01.基本配置

安装Ansible:

    # yum install epel-release.noarch -y

    # yum install ansible pyOpenSSH –y

Ansible修改配置:

    修改Ansible的hosts文件添加机器及ssh相关配置

    # vi /etc/ansible/hosts

    10.15.15.88

    ansible_ssh_port=2849

    ansible_ssh_user=deploy

    ansible_ssh_private_key_file=/opt/ansible-deploy.pem

验证连接:

    返回如下信息则配置通过

    # ansible all -m ping

    20.5.193.201 | SUCCESS => {

    "changed": false,

    "ping": "pong"

    }

02.微服务应用部署实践

剧本概述:


ANSIBLE自动部署实践

site.yml定义了我们要连接的服务器、我们希望执行的角色。将各类事项列在这里,Ansible将通过此文件中设置的顺序来执行角色。

deploy.inventory定义了一些变量,方便执行脚本中时使用:

    Jdk角色:用来提供java运行的基础环境

    Nginx角色:用来安装nginx的基础环境

    Nginxweb角色:前端应用的安装部署

    Springboot角色:后端应用的安装部署

Jdk的yml示例:


ANSIBLE自动部署实践

剧本执行:

    ansible-playbook –i  deploy.inventory site.yml


ANSIBLE自动部署实践


Ansiber创建了与目标主机的连接,并开始执行各种角色与任务。

由此可见,jdk、nginx等按照剧本完成执行安装。安装完成效果如下:


ANSIBLE自动部署实践


至此我们完成了基于Ansible部署微服务应用的前后端应用的部署,让大家对ansible也有了基本的认知,欢迎大家对ansible进行更深入的学习。


——//////////——

平台云课堂

为  科技人带来有价值有温度的阅读






以上是关于ANSIBLE自动部署实践的主要内容,如果未能解决你的问题,请参考以下文章

自动化运维Ansible实践

自动化运维Ansible实践

项目部署与ansible自动化部署

如何使用Ansible自动化部署Docker镜像

Ansible自动化部署与实际项目应用介绍

Ansible自动化部署K8S集群