《微服务架构实战》读书笔记 9-1 自动化部署

私有仓库搭建

私服:假设在局域网的一种特殊的远程仓库,用于***远程仓库及部署第三方构件。使用私服后,当maven想要下载构建时,会先尝试在私服上下载,私服上有的话从私服下载。如果私服上没有再请求外部服务器先下载到私服上,在提供给本地仓库下载。

9.1 Nexus

Nexus为Maven仓库管理器,提供强大的仓库管功能和构建搜索功能,占用较少内存。一套“开箱即用”的系统,基于文件系统而不是数据库,通过文件系统+ lucene来组织数据。

Nexus使用ExtJS开发界面,使用Reslet提供完整的REST APIs,通过m2eclipse与Eclipse集成使用,支持WebDAV与LDAP安全身认证。

私有仓库使用如下图所示。

public为仓库组,包含central、第三方库、release和snapshots。Central为***仓库(通过***仓库访问***仓库)。第三方库为宿主仓库,用于存放第三方的构建;release和snapshots为宿主仓库,用于存放项目的构建。

更详细的讲(引自Nexus私有仓库简介

Releases: 这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到Nexus的Releases本地仓库. 关于符合发布后面会有介绍.

Snapshots: 这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.

3rd Party:顾名思义, 第三方库, 你可能会问不是有***仓库来管理第三方库嘛,没错, 这里的是指可以让你添加自己的第三方库, 比如有些构件在***仓库是不存在的. 比如你在***仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rdparty仓库。

开发过程中,通过public下载开发过程中所需的构建,发布项目版本时,直接将构建部署到项目仓库中。第三方库的构建通过管理员在nexus控制台手工部署。

私服的好处:如果没有私服,那么项目开发过程中所有开发人员都要将所需要的构建需要通过maven的***仓库和第三方的maven仓库下载到本地,即加大了本地仓库的负载又浪费了外网的带宽,如果网速慢,还会影响项目进程。而且很多时候开发是在内网进行的,无法连接到外网maven仓库。使用maven私服,既节省网络带宽,又加速项目搭建进程。

1)加速构建; 
2)节省带宽; 
3)节省***maven仓库的带宽; 
4)稳定(应付一旦***服务器出问题的情况); 
5)控制和审计; 
6)能够部署第三方构件; 
7)可以建立本地内部仓库; 
8)可以建立公共仓库
9.2 Ansible

Ansible,一种自动化运维工具,基于Python开发,集合众多运维工具的优点,实现批量系统配置、批量程序部署、批量运行命令等功能。

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

Ansible框架如图所示(图片取自网络):
image

Ansible核心组件:

  • Ansible:Ansible的核心程序
  • Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载
  • Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.
  • Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。
  • Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。
  • Connection Plugins:连接插件,Ansible和Host通信使用

ansible命令集:

  • ansible: 核心指令,用于执行 AD-Hoc命令,即单条命令。后跟主机及选项部分,默认模块是command模块

  • ansible-doc:用于查看模块信息

    • -l参数列出已安装的模块,
    • -s参数查看具体某模块的用法
  • ansible-galaxy: 类似CentOs下的yum,用于从galaxy站点下载第三方扩展模块。 下载/上传优秀代码或Roles模块的官网平台,基于网络的

  • ansible-init:对playbook进行语法检查的工具

  • ansible-playbook: 使用最多的文件,通过读取playbook文件,执行相应的动作。Ansible 定制自动化的任务集编排工具

  • ansible-pull:nsible远程执行命令的工具(使用较少,海量机器时使用,对运维的架构能力要求较高)。 Ansible pull模式,同push模式相反

  • ansible-vault: 用于配置文件中含有敏感信息,又不希望被别人看见的额场景。vault可以加密/解密配置文件。

看书看的比较乱,讲的比较浅,参见网上博客

Ansible 是什么 
Ansible 简单的说是一个配置管理系统(configuration management system)。你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。你可以将代码部署到任意数量的服务器上!
Ansible能做什么 
ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
  • 比如:同时在100台服务器上安装nginx服务,并在安装后启动它们。
  • 比如:将某个文件一次性拷贝到100台服务器上。
  • 比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。 这些场景中我们都可以使用到ansible。
#笔记##读书笔记#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务