第一章 Ansible入门

一、Ansible概述

Ansible 是一种 IT 自动化工具。它可以配置系统、部署软件并协调更高级的 IT 任务,例如持续部署或零停机滚动更新。

Ansible 的主要目标是简单易用。它还非常注重安全性和可靠性,具有最少的移动部件,使用 OpenSSH 进行传输(使用其他传输和拉模式作为替代),以及一种围绕人类可审计性设计的语言 - 即使是那些不熟悉的人该程序。

Ansible的简单性适用于各种规模的环境,为各种类型的忙碌用户设计:开发人员、系统管理员、发布工程师、IT 经理以及介于两者之间的每个人。Ansible 适用于管理所有环境,从具有少量实例的小型设置到具有数千个实例的企业环境。

Ansible 以无代理的方式管理机器。永远不存在如何升级远程守护进程或因为守护进程被卸载而无法管理系统的问题。由于 OpenSSH 是同行评审最多的开源组件之一,因此大大减少了安全风险。Ansible 是去中心化的——它依赖于您现有的操作系统凭据来控制对远程机器的访问。如果需要,Ansible 可以轻松连接 Kerberos、LDAP 和其他集中式身份验证管理系统。

二、常见自动化工具

1.puppet 学习难,安装ruby环境难,没有远程执行功能
2.ansible 轻量级,大规模环境下只通过ssh会很慢,串行的
3.saltstack 一般选择salt会使用C/S结构的模式,salt-master和salt-minion,并行的,大规模批量操作的情况下,会比Ansible速度快一些,底层使用的是zero-MQ消协队列

三、手动运维和自动运维

#手动运维
在之前,我们学习了如何安装nginx。但是我们使用的是yum安装的方式,在以前,运维需要规范,需要统一配置管理,我们只能使用源码安装方式,便于我们去管理,源码安装,如果是单台还好,一会也就装完了,如果此时,生产环境压力骤增,需要扩展100台web节点(源码安装100台nginx)我们该如何操作?

#自动运维可以做到
1.批量命令执行
2.批量安装服务
3.批量配置
4.批量任务执行
5.批量代码部署

#自动化运维优点
1.提高工作效率
2.提高工作准确性
3.降低人工成本
4.减少重复工作

四、Ansible的功能及优点

1.远程执行
批量执行远程命令,可以对多台主机进行远程操作

2.配置管理
批量配置软件服务,可以进行自动化方式配置,服务的统一配置管理,和启停

3.事件驱动
通过Ansible的模块,对服务进行不同的事件驱动
比如:
1)修改配置后重启
2)只修改配置文件,不重启
3)修改配置文件后,重新加载
4)远程启停服务管理

4.管理公有云
通过API接口的方式管理公有云,不过这方面做的不如saltstack.
saltstack本身可以通过saltcloud管理各大云厂商的云平台

5.二次开发
因为语法是Python,所以便于运维进行二次开发

6.任务编排
可以通过playbook的方式来统一管理服务,并且可以使用一条命令,实现一套架构的部署

7.跨平台,跨系统
几乎不受到平台和系统的限制,比如安装apache和启动服务

在Ubuntu上安装apache服务名字叫apache2
在CentOS上安装apache服务名字叫httpd

在CentOS6上启动服务器使用命令:/etc/init.d/nginx start
在CentOS7上启动服务器使用命令:systemctl start nginx

五、Ansible组织架构

1.连接插件connection plugins用于连接主机 用来连接被管理端
2.核心模块core modules连接主机实现操作, 它依赖于具体的模块来做具体的事情
3.自定义模块custom modules根据自己的需求编写具体的模块
4.插件plugins完成模块功能的补充
5.剧本playbookansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6.主机清单inventor定义ansible需要操作主机的范围

六、Ansible执行流程

1.Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些任务。
2.首先Ansible通过主机清单找到要执行的主机,然后调用具体的模块。
3.其次Ansible会通过连接插件连接对应的主机并推送对应的任务列表。
4.最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行。
posted @ 2020-09-17 20:48  年少纵马且长歌  阅读(235)  评论(0编辑  收藏  举报