??Ansible介绍

news/2024/9/18 22:37:03/ 标签: ansible, 运维, 架构

文章目录

    • 一、Ansible基本概述
      • 1、什么是以及特性
        • 1)是什么:
        • 2)功能
      • 2、架构下充当的角色:
      • 3、同软件对比
        • Ansible与SaltStack
          • *YAML的基本语法
        • Ansible与其他同类软件对比
      • 4、Ansible的架构组成
      • 5、Ansible的执行流程
    • 二、简单测试Ansible
      • 1、m01安装ansible
        • *1)ansible默认信息:
        • 2)Ansible配置文件内容:
        • 3)ansible的一些选项:
      • 2、m01配置主机清单
        • 0)主机清单有什么:
        • 1)主机清单配置文件语法????
        • 2)使用密钥连接方式来配置:
          • 前提条件:
          • 测试:

一、Ansible基本概述

1、什么是以及特性

1)是什么:

自动化统一配置管理工具,集成了丰富模块及功能组件,可通过一个命令完成一系列操作

2)功能
  • 远程执行
  • 事件驱动,对服务进行不同的事件驱动
  • 管理公有云,不如saltstack
  • 便于二次开发(基于Python,便于运维二次开发)
  • 任务编排(通过playbook)
  • 跨平台系统

2、架构下充当的角色:

作为管理机(m01)给下面的多种业务的服务器进行批量下发执行任务
<a class=架构" />

3、同软件对比

Ansible与SaltStack
  • Ansible是串行执行的(一个接一个的代码执行),只通过SSH,大规模环境下执行速度慢,但它是有Python开发的,便于运维人员进行二次开发

  • Saltstack是并行的

SaltStack 和 Ansible 都是流行的配置管理和自动化工具,它们在自动化 IT
任务方面各有优势。以下是它们之间的一些关键对比点,以及为什么培训机构可能更倾向于培训 Ansible 而不是 SaltStack。

  1. 架构和设计
  • SaltStack

    • 采用了主从架构,其中 Salt Master 控制多个 Salt Minion(代理)。
    • 支持实时的命令执行,适合大规模的环境。
    • 使用 ZeroMQ 作为通信协议,提供快速、异步的执行方式。
  • Ansible

    • 采用无代理(agentless)的架构,使用 SSH 协议与远程主机通信。
    • 适合中小型环境,或希望减少维护代理的需求。
    • 配置和任务执行更为简单直观。
  1. 易用性和学习曲线
  • SaltStack

    • 由于其复杂的架构和多样的功能,学习曲线相对较陡。
    • 配置文件和管理命令可能对新手来说较为复杂。
  • Ansible

    • 使用 YAML 作为配置语言,相对易于理解和编写。
    • 无需在目标机器上安装额外的代理,减少了复杂性。
    • 更适合快速上手和初学者。
  1. 社区和支持
  • SaltStack

    • 虽然有强大的社区,但相对于 Ansible,其社区的规模和活跃度可能较低。
    • 商业支持(如 SaltStack Enterprise)也可用,但需要额外费用。
  • Ansible

    • 拥有非常活跃和广泛的社区支持,用户可以容易地找到资源和帮助。
    • Red Hat 对 Ansible 提供了企业级支持,这进一步增强了其在商业环境中的吸引力。
  1. 功能和扩展性
  • SaltStack

    • 提供强大的实时执行功能和扩展性。
    • 更适合需要高实时性和复杂配置管理的环境。
  • Ansible

    • 提供了强大的模块和插件系统,适合多种环境。
    • 对于配置管理和任务自动化,功能也相当全面,但在实时性方面可能不如 SaltStack。

为什么培训机构更倾向于培训 Ansible?

  1. 易用性:Ansible 的无代理架构和简单的 YAML 配置语言使其更容易学习和使用,降低了入门难度。

  2. 广泛应用:Ansible 的流行程度高,许多公司使用 Ansible 进行自动化操作,因此掌握 Ansible 对求职者更有利。

  3. 社区支持:Ansible 拥有广泛的社区支持和丰富的在线资源,学习者可以更容易找到解决方案和帮助。

  4. 企业支持:Red Hat 对 Ansible 的支持提升了其在企业环境中的可信度,企业对 Ansible 的需求也促使培训机构优先考虑 Ansible。

综上所述,Ansible 的易用性、广泛的社区支持以及企业级支持使其成为培训机构更倾向于培训的工具。而 SaltStack
的强大功能和复杂性可能需要更多的专门培训和资源,这对于许多培训机构来说可能是一个挑战。

*YAML的基本语法

YAML(YAML Ain’t Markup
Language)是一种简洁的标记语言,用于数据序列化,常用于配置文件和数据交换。其语法设计简洁易读,下面是 YAML
的基本语法规则和一些示例:

一. 基础语法

  • 缩进:YAML 使用缩进来表示层级关系,通常使用两个空格作为缩进(不推荐使用制表符)。
  • 键值对:键和值之间用冒号和空格分隔,例如:key: value
  • 列表:用连字符(-)表示列表项,例如:
- item1
- item2

二. 基本示例

键值对

name: John Doe
age: 30
is_student: false

列表

fruits:- Apple- Orange- Banana

字典

person:name: Jane Doeage: 25address:street: 123 Elm Stcity: Anytown

三. 多行字符串

  • 折叠式(>:将多行文本折叠成单行,换行符会被转换为空格。
description: >This is a long descriptionthat spans multiple lines.

结果为:"This is a long description that spans multiple lines."

  • 保留式(|:保留换行符,将多行文本保留原样。
description: |This is a long descriptionthat spans multiple lines.

结果为:

This is a long description
that spans multiple lines.

四. 复杂数据结构

嵌套列表和字典

employees:- name: Aliceposition: Engineerskills:- Python- Docker- name: Bobposition: Designerskills:- Photoshop- Illustrator

五. 注释

YAML 使用 # 来添加注释,注释可以放在行尾或单独占用一行。

name: John Doe  # This is a comment
age: 30

六. 数据类型

  • 整数age: 30
  • 浮点数height: 1.75
  • 布尔值is_student: true
  • 空值middle_name: null

七. 锚点和别名

  • 锚点(&:定义一个锚点,后续可以引用。
defaults: &defaultscolor: bluesize: medium
  • 别名(*:引用锚点。
item1:<<: *defaultstype: T-shirt

八. 复杂结构

引用

defaults: &defaultscolor: bluesize: mediumitem1:<<: *defaultstype: T-shirt

组合

store:name: Example Storeitems:- name: Widgetprice: 19.99- name: Gizmoprice: 25.00

YAML 的语法简洁明了,易于阅读和编写。了解这些基本语法规则和示例,可以帮助你有效地使用 YAML 来编写配置文件和进行数据序列化。

Ansible与其他同类软件对比

Ansible 是一种流行的自动化工具,用于配置管理、应用部署和任务自动化。与 Ansible 类似的其他工具也提供了类似的功能,但它们在设计理念、使用方式和特性上有所不同。下面是对 Ansible 和几种同类软件的比较:

一. Ansible

  • 特点

    • 声明式配置:通过 YAML 文件定义“期望的状态”。
    • 无代理架构:直接通过 SSH 与目标主机通信,无需在目标主机上安装代理。
    • 简易上手:语法简单明了,适合快速上手。
    • 强大的社区支持:拥有丰富的模块和插件,适用于各种操作系统和应用。
  • 适用场景

    • 配置管理
    • 应用部署
    • 多机协作

二. Chef

  • 特点

    • 声明式与命令式:使用 Ruby 语言编写的“食谱”定义期望状态和操作步骤。
    • 客户端-服务器架构:需要在目标主机上安装 Chef 客户端,并与 Chef 服务器通信。
    • 灵活性强:支持复杂的配置逻辑,但学习曲线较陡。
  • 适用场景

    • 配置管理
    • 自动化基础设施管理

三. Puppet

  • 特点

    • 声明式配置:使用 Puppet DSL(声明式语言)编写配置。
    • 客户端-服务器架构:在目标主机上安装 Puppet 客户端,与 Puppet 服务器通信。
    • 强大的功能:适合大型环境和复杂的配置管理,但配置文件语法较复杂。
  • 适用场景

    • 配置管理
    • 服务器管理
    • 自动化任务

四. SaltStack

  • 特点

    • 声明式与命令式:使用 YAML 文件和 Python 代码定义状态。
    • 客户端-服务器架构与无代理架构:支持通过 SSH 或 Salt Minions 进行通信。
    • 高性能:高效的并发执行,适合大规模环境。
  • 适用场景

    • 配置管理
    • 实时系统监控
    • 自动化任务

五. Terraform

  • 特点

    • 声明式配置:使用 HashiCorp Configuration Language (HCL) 定义基础设施。
    • 基础设施即代码:专注于基础设施的创建、更新和管理。
    • 无状态:不直接处理配置管理,但通过提供 Terraform Provider 实现资源管理。
  • 适用场景

    • 云基础设施管理
    • 基础设施自动化
    • 跨平台资源管理

六. CFML (CloudFormation)

  • 特点

    • 声明式配置:使用 JSON 或 YAML 描述 AWS 资源和配置。
    • AWS 专属:专门用于管理和自动化 AWS 资源。
    • 集成度高:与 AWS 服务紧密集成。
  • 适用场景

    • AWS 资源管理
    • 云基础设施自动化

七、比较总结

  • 语言和语法

    • Ansible:YAML(易于阅读和编写)
    • Chef:Ruby(功能强大但学习曲线陡)
    • Puppet:Puppet DSL(功能强大,但语法较复杂)
    • SaltStack:YAML 和 Python(灵活性高)
    • Terraform:HCL(专注于基础设施管理)
    • CFML:JSON 或 YAML(AWS 专用)
  • 架构

    • 无代理:Ansible、SaltStack(支持无代理或代理)
    • 客户端-服务器:Chef、Puppet
    • 基础设施管理:Terraform、CFML(主要用于资源创建与管理)
  • 适用场景

    • 配置管理和应用部署:Ansible、Chef、Puppet、SaltStack
    • 基础设施管理:Terraform、CFML

选择合适的工具取决于你的需求,例如环境规模、所需功能、学习曲线以及现有的技术栈。

4、Ansible的架构组成

在这里插入图片描述
在这里插入图片描述

5、Ansible的执行流程

在这里插入图片描述

二、简单测试Ansible

在这里插入图片描述

ansible_340">1、m01安装ansible

yum install ansible
ansible_345">*1)ansible默认信息:
  • 使用/etc/ansible/hosts作为主机清单,如果需要指定,那么使用-i选项
    在这里插入图片描述
ansible -i /etc/myansible/hosts
  • 使用commad模块,如果需要指定,那么使用-m 模块名选项
2)Ansible配置文件内容:

??????/etc/ansilbe/???.cfg

ansible_356">3)ansible的一些选项:

????

2、m01配置主机清单

0)主机清单有什么:

包含被管理的机器的认证信息

1)主机清单配置文件语法????
2)使用密钥连接方式来配置:
ansible">[web_group]
web01 ansible_ssh_root=172.16.1.7
web02 ansible_ssh_root=172.16.1.8
前提条件:
  • 配置Ansible的机器(管理机m01)与主机清单里的机器需要实现建立密钥免密连接
  • 上面的“web01”、“web02”这些名字值得指的是主机名,需要在配置Ansible的机器(管理机m01)的DNS域名解析文件中写上才能识别
#CentOS7中的
vim /etc/hosts# 编辑/etc/hosts:.....172.16.1.7	web01172.16.1.8	web02.....
测试:
# e.g1
ansible web_group -m ping
# e.g2
ansible web01 -m ping
# e.g3
ansible  172.16.1.8 -m ping

http://www.ppmy.cn/news/1526259.html

相关文章

IP池对数据爬取工作的帮助

在数据爬取的过程中&#xff0c;IP池&#xff08;也称为代理IP池&#xff09;是一个极为重要的工具&#xff0c;它为数据抓取工作提供了多方面的支持和便利。本文将详细探讨IP池在数据爬取工作中的具体作用&#xff0c;以及它如何帮助提升数据抓取的效率、稳定性和合规性。 一…

[产品管理-21]:NPDP新产品开发 - 19 - 产品设计与开发工具 - 详细设计与规格定义

目录 前言&#xff1a; 一、详细设计与规格定义概述 1、产品详细设计 2、规格定义 3、详细设计与规格定义的关系 4、实际应用中的注意事项 二、详细设计与规格定义主要工具 2.1 质量功能展开QFD - 需求跟踪矩阵 1、QFD的基本原理 2、QFD的实施步骤 3、QFD的优势与应…

3. Python计算水仙花数

Python计算水仙花数 一、什么是水仙花数&#xff1f; 百度答案 二、怎样使用Python计算水仙花数&#xff1f; 这里需要for循环&#xff0c;if判断&#xff0c;需要range()函数&#xff0c;需要知道怎么求个位数&#xff0c;十位数&#xff0c;百位数… 1. For循环 语句结…

网络穿透:TCP 打洞、UDP 打洞与 UPnP

在现代网络中&#xff0c;很多设备都处于 NAT&#xff08;网络地址转换&#xff09;或防火墙后面&#xff0c;这使得直接访问这些设备变得困难。在这种情况下&#xff0c;网络穿透技术就显得非常重要。本文将介绍三种常用的网络穿透技术&#xff1a;TCP 打洞、UDP 打洞和 UPnP。…

【Elasticsearch系列五】Java API

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C++系列-函数对象/仿函数

函数对象/仿函数 &#x1f4a2;什么是仿函数&#x1f4a2;仿函数的使用&#x1f4a2;&#x1f4a2;像普通函数一样使用&#x1f4a2;&#x1f4a2;可以有自己的状态&#x1f4a2;&#x1f4a2;可以作为函数的参数&#x1f4a2;&#x1f4a2;可以作为模板参数&#x1f4a2;&…

ElementUI 快速入门:使用 Vue 脚手架搭建项目

文章目录 一 . ElementUI 的基本安装1.1 通过 Vue 脚手架创建项目1.2 在 vue 脚手架中安装 ElementUI1.3 编写页面 ElementUI 是 Vue.js 的强大 UI 框架&#xff0c;让前端界面开发变得简单高效。本教程将带你从安装到实战&#xff0c;快速掌握 ElementUI 的核心技巧。 核心内容…

手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决

展讯ResearchDownload工具 展讯芯片的刷机工具--ResearchDownload下载工具"是一款专为用户设计的高效、便捷的下载管理软件&#xff0c;它能够帮助用户快速、稳定地从互联网上获取各种文件。这款工具以其强大的功能和良好的用户体验&#xff0c;在众多展讯芯片下载工具中脱…

【大数据方案】智慧大数据平台总体建设方案书(word原件)

第1章 总体说明 1.1 建设背景 1.2 建设目标 1.3 项目建设主要内容 1.4 设计原则 第2章 对项目的理解 2.1 现状分析 2.2 业务需求分析 2.3 功能需求分析 第3章 大数据平台建设方案 3.1 大数据平台总体设计 3.2 大数据平台功能设计 3.3 平台应用 第4章 政策标准保障体系 4.1 政策…

校园水电费管理|基于java的校园水电费管理小程序系统 (源码+数据库+文档)

校园水电费管理 目录 基于java的校园水电费管理小程序系统 一、前言 二、系统设计 三、系统功能设计 小程序端 后台功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕…

Spring Boot-API版本控制问题

在现代软件开发中&#xff0c;API&#xff08;应用程序接口&#xff09;版本控制是一项至关重要的技术。随着应用的不断迭代&#xff0c;API 的改动不可避免&#xff0c;如何在引入新版本的同时保证向后兼容&#xff0c;避免对现有用户的影响&#xff0c;是每个开发者需要考虑的…

掌握MATLAB中的图形用户界面布局管理器

在MATLAB中&#xff0c;图形用户界面&#xff08;GUI&#xff09;的设计对于创建专业且用户友好的应用至关重要。布局管理器在GUI设计中扮演着核心角色&#xff0c;它们负责在窗口中自动管理和调整控件的位置和大小。本文将详细介绍MATLAB中的布局管理器&#xff0c;包括它们的…

[PICO VR眼镜]眼动追踪串流Unity开发与使用方法,眼动追踪打包报错问题解决(Eye Tracking)

前言 最近在做一个工作需要用到PICO4 Enterprise VR头盔里的眼动追踪功能&#xff0c;但是遇到了如下问题&#xff1a; 在Unity里面没法串流调试眼动追踪功能&#xff0c;根本获取不到Device&#xff0c;只能将整个场景build成APK&#xff0c;安装到头盔里&#xff0c;才能在…

Oracle 11gR2打PSU补丁详细教程

1 说明 Oracle的PSU&#xff08;Patch Set Update&#xff09;补丁是Oracle公司为了其数据库产品定期发布的更新包&#xff0c;通常每季度发布一次。PSU包含了该季度内收集的一系列安全更新&#xff08;CPU&#xff1a;Critical Patch Update&#xff09;以及一些重要的错误修…

6芯7芯可旋转电连接器航空插头

概述 可旋转电航空插头是一种能够在旋转或相对运动的部件间稳定传输电气信号或电源的装置&#xff0c;广泛应用于航空航天、自动化设备、医疗设备等多个领域。它的核心在于精密的接触系统&#xff0c;由旋转端和固定端两部分组成&#xff0c;通过金属触点或导电环实现电气连接。…

Unity 粒子系统参数说明

一、Particle System 1. Duration&#xff08;持续时间&#xff09; 粒子系统运行一次所需的时间。它决定粒子系统持续播放的时间长度。 2. Looping&#xff08;循环播放&#xff09; 如果启用&#xff0c;粒子系统将在播放完一次后自动重新开始播放&#xff0c;直到你停止它…

SpringBoot框架Web开发

1. 控制器开发 (1) JSON的支持 Spring Boot默认支持JSON格式的数据交换&#xff0c;主要通过以下方式实现&#xff1a; 依赖&#xff1a;spring-boot-starter-web 依赖包已经包括了 Jackson&#xff0c;用于将Java对象序列化为JSON&#xff0c;以及将JSON反序列化为Java对象…

Protubuf入门

⼀、初识 ProtoBuf 1. 序列化概念 序列化和反序列化 序列化&#xff1a;把对象转换为字节序列的过程 称为对象的序列化。 反序列化&#xff1a;把字节序列恢复为对象的过程 称为对象的反序列化。 什么情况下需要序列化 存储数据&#xff1a;当你想把的内存中的对象状态…

Java零基础-replace(CharSequence target, CharSequence replacement)详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云/阿里云/华为云/51CTO&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互…

2024年某大厂HW蓝队面试题分享

&#x1f91f; 基于入门网络安全/黑客打造的资源包无偿分享中&#xff1a; &#x1f449;黑客&网络安全入门&进阶学习资源包 应急响应流程 1&#xff09;首先判断服务器资产、影响范围以及严重程度&#xff0c;确认有没有必要将服务器下线隔离&#xff0c;然后根据服务…