Ansible入门简介
Ansible简介Ansible基于Python语言实现,由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理,流程控制,资源部署等多方面工作。ansible主要承担的工作有以下几种:配置管理服务即时开通应用部署流程编排监控告警日志记录Ansible公司负责Ansible开源软件的维护,管理。一般软件的更新时间为2个月。到现在写这篇博客为止,A
Ansible简介
Ansible基于Python语言实现,由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理,流程控制,资源部署等多方面工作。ansible主要承担的工作有以下几种:
- 配置管理
- 服务即时开通
- 应用部署
- 流程编排
- 监控告警
日志记录
Ansible公司负责Ansible开源软件的维护,管理。一般软件的更新时间为2个月。到现在写这篇博客为止,Ansible的版本已经更新到了2.3.
Ansible架构模式
Ansible维护模式通常由控制机和被管理机组成。因为Ansible的特性不像其他运维工具那样需要在被监控的目标上安装agent,所以我们的侧重点只需要放在安装了Ansible的服务器上(当然用于实验环境的话可以是一台笔记本,台式机或者仅仅只需要一台虚拟机即可)。Ansible可以通过SSH进行远程链接到对端主机上,然后执行你想要执行的playbook或者指令。所有的远程主机都可以在inventory中被定义。
以下是Ansible的基本架构:
- 核心引擎:即图中所看到的ansible
- 核心模块(core module):在模块库(module library)中分为两块,一个是核心模块另外一个就是自定义模块(custom modules)。核心模块中都是ansible自带的模块,Ansible模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态。这些核心核心模块都遵循这batteries included哲学。其实这里这个还是很有意思的,batterires included:Python has a large standard library, commonly cited as one of Python’s greatest strengths,providing tools suited to many tasks. 这就意味着Python有这巨大的库支持你完成你想完成的任务工作。
- 自定义模块(custom modules):如果在Ansible中满足不了你所需求的模块,那么Ansible也能提供添加自定义化的模块。
- 插件(plugin):这里我的理解就是完成较小型的任务。辅助协助模块来完成某个功能。
- 剧本(playbook):定义需要给远程主机执行的一系列任务。例如安装一个nginx服务,那么我们可以把这拆分为几个任务放到一个playbook中。例如:第一步需要下载nginx的安装包。第二步我可能考虑需要做的就是将我事先写好的nginx.conf的配置文件下发的目标服务器上。第三步,我们需要把服务启动起来。第四步,我们可能需要检查端口是否正常开启。那么这些步骤可以通过playbook来进行整合,然后通过inventory来下发到想要执行剧本的主机上。并且playbook也支持交互式执行playbook里面的步骤,而且如果有那一个步骤执行返回了一个错误报告,那么我们可以仅仅只单独执行这个步骤。你可以把playbook理解成为一个组策略,控制管理这个OU下所有的主机行为。
- 连接插件(connectior plugins):Ansible默认是基于SSH连接到目标机器上执行操作的。但是同样的Ansible支持不同的连接方法,要是这样的话就需要连接插件来帮助我们完成连接了。
- 主机清单(host inventory):为Ansible定义了管理主机的策略。一般小型环境下我们只需要在host文件中写入主机的IP地址即可,但是到了中大型环境我们有可能需要使用静态inventory或者动态主机清单来生成我们所需要执行的目标主机。
任务执行模式
Ansible针对Ansible服务器对执行操作服务器的操作方式,分为两种执行模式:
1.ad-hoc:这个模式支持执行单个模块,支持批量执行单条命令。
2.playbook:这个可以理解成为面向对象的编程,就像上面举例那样可以把多个你想要执行的任务放到一个playbook当中,当然多个任务在事物逻辑上最好是有上下联系的。通过这多个任务可以完成一个总体的目标,这就是playbook。
下图是参看书籍画的Ansible执行过程:
Ansible功能特性
- 应用代码自动化部署
- 系统管理配置自动化
- 支持持续交付自动化
- 支持云计算,大数据平台环境
- 轻量级,无序在客户端安装agent,更新时只需在控制机上进行更行即可
- 批量任务执行可以写成脚本,不用分发到远程就可以执行
- 支持非root用户管理操作,支持sudo
- 使用python编写,维护更简单
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)