一:我理解的ansible
初次了解ansible,觉得这个工具真的太方便了,为啥这么说了,因为在我现有的学习阶段来看,一次只能玩转一个虚拟机,但是试想一下,若是有多台主机需要同时进行同一种任务部署,比如说装个软件包啥的,一台一台的配置还不得累死,还好,有大神研究出了ansible这样一个自动化运维工具,这个工具就解决了这样一个问题,他可以实现批量系统配置、批量程序部署、批量运行命令等功能,只需要在主控端敲命令,被控端主机就乖乖执行。
二:关于ansible
ansible是基于python开发,模块化工作,因此它本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的.
- ansible被定义为配置管理工具,配置管理工具通常具有以下功能:
确保所依赖的软件包已经被安装
配置文件包含正确的内容和正确的权限
相关服务被正确运行
三:ansible特性 - 模块化:调用特定的模块,完成特定任务
- Paramiko(python 对 ssh 的实现),PyYAML,Jinja2(模板语言)三个关键模块
- 支持自定义模块,可使用任何编程语言写模块
- 基于 Python 语言实现
- 部署简单,基于 python 和 SSH(默认已安装),agentless,无需代理不依赖 PKI(无需 ssl),去中心化部署
- 安全,基于 OpenSSH
- 幂等性:一个任务执行 1 遍和执行 n 遍效果一样,不因重复执行带来意外情况
- 支持 playbook 编排任务,YAML 格式,编排任务,支持丰富的数据结构
- 较强大的多层解决方案 role
四:利用ansible实现管理的方式: - Ad-Hoc 即ansible命令单条命令,主要用于临时性命令
- ansible-playbook,主要用于长期使用的,提前规划好的,大型项目的场景
五:ansible的主要组成部分
- 核心:Ansible:
组合INVENTORY:ansible (控制和管理的主机清单),API(供第三方程序调用的应用程序编程接口),MODULES:(ansible 执行命令的功能模块),PLUGINS:(模块功能的补充,如连接类的插件、循环插件、过滤插件等)的核心执行工具 - Host Inventory: 记录由Ansible管理的主机信息,包括端口、密码、ip等 /etc/ansible/hosts
- Core modules:ansible执行命令的功能模块,多数为内置核心模块
- Custom Modules:当内置核心模块功能不足时,可以自定义模块
- playbooks:任务剧本(任务集),ansible任务集的配置文件,由ansible顺序依次执行,YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.类似于脚本文件
- Connection Plugins:连接插件,Ansible和Host通信使用
写在最后:
最近的博文将会围绕着ansible来写,因为是自己在自学,所以部分总结如果有什么不妥之处,希望看到的能提出来哦,谢谢~嘿嘿^ _^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^
^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^ ^ _ ^