目录
1.什么是Ansible?
1.1 Ansible
的定义
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自定义模块; (4)、借助于插件完成记录日志邮件等功能; (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
1.2 Ansible
的工作原理
-
Inventory
被管理节点的列表 , 主机清单。它将主机分组存储记录在这个清单文件中。Ansible运行playbook时的受管主机只能是这个清单文件里面的主机。 -
PlayBook
剧本,类似于 Shell 脚本 , 通过一系列命令执行自动化操作。里面定义了要在哪些主机上运行脚本,以及要在各主机上执行的任务tasks。 -
Module
模块,通过运行模块真正实现批量部署。
在 Ansible 管理体系中 , 存在 管理节点 和 被管理节点 两种角色
被管理节点通常被称为资产
在管理节点上 :
Ansible首先读取
ansible.cfg
中的配置, 根据规则获取Inventory
中的管理主机列表将 AdHoc 或 PlayBook 转换为 python脚本 , 并通过 SSH 传输到被管理节点上
并行的在被管理节点上依次执行 Python 脚本
最后等待执行返回的结果。
2.什么是Docker?
2.1 Docker的定义
Docker是一个开源的容器化平台,用于开发、交付和运行应用程序。它能够在Windows,macOS,Linux计算机上运行,并将某一应用程序及其依赖项打包至一个容器中,这些容器可以在任何支持Docker的环境中运行。容器彼此隔离,但可以通过特定的通道相互传递信息。
Docker提供了一个轻量级的虚拟化解决方案。由于运行在同一计算机上的所有容器共享同一个操作系统内核,避免了启动与维护虚拟机的开销。因此相比于传统的虚拟机,Docker容器更加轻便、快速、容易部署。使用Docker,开发者可以避免在两台计算机上运行效果不一致的问题,容器提供了一致的行为,进而使得应用程序在不同环境的计算机上有相同的运行效果。
2.2Docker与传统虚拟机相比的优势
Docker相比虚拟机的主要优势包括轻量级、快速启动、环境一致性、持续交付和部署、易于迁移、灵活的资源分配以及更好的隔离性。
轻量级:Docker基于操作系统层面的虚拟化技术,每个容器共享主机的操作系统内核,只包含应用程序及其运行所需的依赖项,因此更加轻量级。这种轻量级的虚拟化方式使得容器的启动和停止速度非常快,相比传统虚拟机技术,相同配置的主机上可以运行更多数量的应用。
快速启动:由于Docker直接运行于宿主内核,无需启动完整的操作系统,因此可以实现秒级甚至毫秒级的启动时间,大大节约了开发、测试、部署的时间。
环境一致性:Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境的一致性,避免了因环境不一致导致的开发、测试和生产环境中的问题。
持续交付和部署:使用Docker可以通过定制应用镜像实现持续集成和持续部署,开发人员和运维人员可以更高效地协作,加快应用开发和上线速度。
易于迁移:Docker确保了执行环境的一致性,使得应用的迁移更加容易。可以在不同的操作系统和云平台上运行,实现了应用程序的跨平台部署和迁移。
灵活的资源分配:Docker可以动态地分配和调整系统资源,如CPU、内存和磁盘空间等,使得容器在不同环境中运行时具有更好的适应性和灵活性。
更好的隔离性:虽然Docker容器共享同一个操作系统和资源,但通过隔离网络和存储卷等方式可以实现更好的隔离性,适合在多用户环境中使用。
这些优势使得Docker在现代化应用开发和部署中成为了一种非常受欢迎的技术,特别是在微服务和容器化应用方面