什么是Ansible
1 |
Ansible是一个自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。 |
自动化工具
1 2 3 |
1.puppet 学习难,安装ruby环境难,没有远程执行功能 2.ansible 轻量级,大规模环境下只通过ssh会很慢,串行的 3.saltstack 一般选择salt会使用C/S结构的模式,salt-master和salt-minion,并行的,大规模批量操作的情况下,会比Ansible速度快一些,底层使用的是zero-MQ消协队列 |
手动运维和自动运维
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#手动运维 在之前,我们学习了如何安装nginx。但是我们使用的是yum安装的方式,在以前,运维需要规范,需要统一配置管理,我们只能使用源码安装方式,便于我们去管理,源码安装,如果是单台还好,一会也就装完了,如果此时,生产环境压力骤增,需要扩展100台web节点(源码安装100台nginx)我们该如何操作? #自动运维可以做到 1.批量命令执行 2.批量安装服务 3.批量配置 4.批量任务执行 5.批量代码部署 #自动化运维优点 1.提高工作效率 2.提高工作准确性 3.降低人工成本 4.减少重复工作 |
Ansible的功能及优点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
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.组成结构
1 2 3 4 5 6 |
1.连接插件connection plugins用于连接主机 用来连接被管理端 2.核心模块core modules连接主机实现操作, 它依赖于具体的模块来做具体的事情 3.自定义模块custom modules根据自己的需求编写具体的模块 4.插件plugins完成模块功能的补充 5.剧本playbookansible的配置文件,将多个任务定义在剧本中,由ansible自动执行 6.主机清单inventor定义ansible需要操作主机的范围 |
2.Ansible执行流程
1 2 3 4 |
1.Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些任务。 2.首先Ansible通过主机清单找到要执行的主机,然后调用具体的模块。 3.其次Ansible会通过连接插件连接对应的主机并推送对应的任务列表。 4.最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行。 |