Ansible(1)- 简单介绍

什么是 Ansible

  • 开源部署工具,也是一个自动化运维工具
  • 开发语言:Python

 

Ansible 的特性

  • 模块化部署管理:调用特定的模块,完成特定任务
  • 三个关键模块:Paramiko(python 对 ssh 的实现),PyYAML,Jinja2(模板语言)
  • 安全:基于 OpenSSH 协议通讯
  • 跨平台:支持 Linux、Win、UNIX、物理机、虚拟机、云平台、网络 
  • 部署简单,无需编译:基于 Python 和 SSH(默认已装),agentless(免代理),无需代理不依赖 PKI(无需 SSL)
  • 支持自定义模块:支持任何编程语言编写模块(二次开发)
  • 幂等性:一个任务执行一遍和执行 n 遍的结果是一样的,不因重复执行而带来意外情况
  • 支持 playbook 编排任务,YAML 语法格式,编排任务,支持丰富的数据结构
  • 强大的多层解决方案 role
  • 支持异构 IT 架构

 

Ansible 的应用场景

  • 批量修改系统配置
  • 批量程序部署
  • 批量运行命令

 

Ansible、Cherf、Saltstack 的不同

Saltstack

  • Ruby 语言编写
  • C/S架构
  • 配置需要 Git 依赖
  • Recipe 脚本编写规范,需要 Ruby 编程经验

 

Saltstack

  • Python 语言编写
  • C/S架构
  • 模块化配置管理
  • YAML 脚本编写规范
  • 适合大规模集群部署

 

Ansible

  • Python 语言编写
  • 无 Client
  • 模块化配置管理
  • Playbook 脚本编写规范
  • 易于上手,适合中小规模快速部署

 

Ansible 最大的优势

  • 符合最近几年流行的敏捷开发流程,快速开发快速部署交付
  • 我们需要有高效、敏捷的部署工具,加快产品交付
  • 兼容主流云计算下所有用到的基础工具

 

Ansible 的架构

  • ANSIBLE PLAYBOOKS :任务剧本,编排定义 Ansible 任务集的配置文件,由 Ansible 顺序执行,通常为 json 格式的 YAML 文件
  • INBENTORY:需要 Ansible 管理主机的清单列表  /etc/anaible/hosts 
  • MODULES:Ansible 的执行命令的功能模块,多数为内置核心模块,也可以自定义
  • PLUGINS:模块功能补充,比如链接类型插件、循环插件、变量插件、过滤插件等,不常用
  • API:供第三方程序调用的应用程序编程接口
  • HOSTS:待 Ansible 管理的主机集
  • NETWORKING:网络

它们互相之间都是通过 SSH 互相调用

 

Ansible 命令执行来源

  • USERS:普通用户
  • PLAYBOOKS:任务剧本
  • CMDB:配置管理数据库,通过 API 调用
  • PUBLIC/PRIVATE CLOUD:公有云、私有云,通过 API 调用

 

Ansible 的概念

Control node

控制节点

  • 可以是任何安装了 Ansible 的计算机,但不能是 Window 系统
  • 可以从任意控制节点运行命令和 playbook,然后调用  /usr/bin/ansible 或  /usr/bin/ansible-playbook 
  • 可以将任何安装了 Python 的计算机作为控制节点,比如笔记本电脑、台式机、服务器

 

Managed nodes

受管节点

  • 受管节点不需要安装 Ansible
  • 它可以是通过 Ansible 管理的网络设备或服务器
  • 它也可以称为 hosts(主机)

 

Inventory

清单

  • 需要 Ansible 管理的主机清单
  • 它也可以称为 hostfile(主机文件)
  • 它有多种方式去管理组织主机的信息

 

Modules

模块

  • 执行代码单元
  • 在 python 中,一个模块是一个 .py 文件,这里也可以这样理解,每个模块都会有特定的功能
  • 可以通过 task 调用单个模块,也可以通过 playbook 调用多个不同的模块
  • Ansible 目前有 3000+ 个模块

 

Tasks

任务 

  • 行动单元
  • 可以使用临时命令(ad-hoc)每次执行一个任务

 

Playbooks

剧本(直译)

  • 保存任务的有序列表,方便可以按顺序重复运行这些任务(复用性)
  • playbook 可以包括变量、任务
  • 采用 YAML 语法格式

 

posted @   小菠萝测试笔记  阅读(887)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
历史上的今天:
2020-04-25 Selenium常见报错问题(2)- 解决和分析StaleElementReferenceException异常
2020-04-25 Jmeter系列(4)- Jmeter面板介绍
2020-04-25 Jmeter系列(3)- Jmeter安装目录介绍
2020-04-25 Jmeter系列(2)- Jmeter的详细介绍
点击右上角即可分享
微信分享提示