1-Ansible 自动化介绍

Ansible 自动化介绍

手动执行任务和自动化执行任务

手动执行任务的麻烦事

  • 很容易漏掉某个步骤,或者不小心执行错步骤,而且很难验证每个步骤是不是真的按预期完成了。
  • 管理一大堆服务器时,很容易出现配置不一样的情况,维护起来特别费劲,还会让整个 IT 环境变得不稳定,容易出问题。

自动化执行任务的好处

  • 通过统一的标准,能保证所有系统都能快速、正确地完成部署和配置。
  • 日常那些重复做的固定任务可以自动执行,这样就能腾出时间去做更重要的事。
  • 应用程序能更快地交付使用。
基础架构即代码
  • 好的自动化系统能实现 “基础架构即代码” 的方法。简单说,就是用机器能读懂的自动化语言来描述 IT 基础架构应该是什么样子的。最好这种语言人也很容易看懂,这样就能轻松知道当前状态,改起来也方便。
  • 如果这种自动化语言是用简单的文本文件写的,还能放到版本控制系统里管理。这样一来,每一次修改都会被记录下来,能看到随着时间推移做过哪些改动,万一出问题,还能把系统恢复到之前的配置。这就为遵循 DevOps 理念打下了基础:开发人员可以用自动化语言定义想要的配置,运维人员能轻松查看这些改动并给出反馈,然后用这个自动化方案重复操作,确保系统状态符合开发人员的预期。
Ansible (自动化) 与 DevOps (开发和运营)

image-20250812201013160

百度百科:DevOps 是 Development(开发)和 Operations(运维)的组合词,指的是一系列流程、方法和系统的集合,目的是促进开发(应用程序 / 软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与融合。它是一种重视 “软件开发人员(Dev)” 和 “IT 运维技术人员(Ops)” 之间沟通合作的文化、运动或惯例。通过自动化 “软件交付” 和 “架构变更” 的流程,让构建、测试、发布软件变得更快捷、更频繁、更可靠。

DevOps 的核心就是 “沟通”。

Ansible 是第一款能在整个 IT 领域被大家读懂和编写的自动化语言,也是唯一一个能从头到尾自动化应用生命周期和持续交付流程的自动化引擎。

什么是 ANSIBLE?

Ansible 是一种简单的自动化语言,通过 Playbooks(剧本)来描述和配置 IT 基础架构。

Ansible 能处理各种复杂的自动化任务,适合不同的生产环境。而且,新手也能很快学会并用到实际生产中。

常见用途:

  • 搭建和维护 OpenStack
  • 搭建和维护 OpenShift
  • 搭建和维护 ceph
Ansible 特点
  • 简单易学:Ansible Playbooks 是文本文件,特别容易查看、理解和修改,用户不用懂复杂的编程技能。
  • 功能强大:能用 Ansible 部署应用,比如做配置管理、工作流自动化、网络自动化,还能编排整个应用的生命周期。
  • 无代理架构:Ansible 不需要在被管理的主机上装代理,它通过OpenSSH或者 WinRM 连接到这些主机,然后把一些小程序(Ansible 模块)推送到主机上。这些小程序用来把系统设置成我们想要的状态。任务完成后,推送的模块会被自动删除。正因为被管理的主机上不用装特殊代理,Ansible 用起来更高效、更安全。
  • 跨平台支持:能管理 Linux、UNIX、Windows 系统和各种网络设备。
  • 精准描述应用:Ansible Playbook 用 YAML 格式来描述生产环境的状态。
  • 支持版本控制:Ansible Playbooks 和项目都是纯文本格式,可以像源代码一样存到版本控制系统里。
  • 易于集成:能和 HP SA、Puppet、Jenkins、红帽卫星服务器等其他系统轻松集成。
Ansible 概念和架构

image-20250812201051059

  • 节点(NODES)

    :Ansible 架构里有两种计算机:

    • 控制节点:装了 ansible 软件的节点。
    • 受管节点:被 ansible 管理的 Linux 系统、Windows 系统、网络设备等。
  • 清单(INVENTORY):记录所有被管理主机的列表。

  • 剧本(PLAYBOOK)

    :用户只需要写好 Playbook,Ansible 就会确保主机达到预期状态。

    • 每个 playbook 里可以包含多个 “剧本片段(play)”。
    • 每个 play 会在一组主机上按顺序执行一系列 “任务(task)”。
    • 每个 task 都要执行一个 “模块(module)”。模块是一小段代码(可能是 Python、PowerShell 或其他语言写的)。Ansible 自带几百个模块,能执行各种自动化任务,比如操作系统文件、安装软件、调用 API 等。Tasks、plays 和 Playbooks 具有 “幂等性”—— 在同一台主机上多次安全执行 Playbooks,最终主机都会处于正确状态。如果主机已经是预期状态,Playbook 就不会做任何改动。
  • 插件(PLUGINS):添加到 Ansible 里的代码片段,用来扩展 Ansible 的功能。

Ansible 理念
  • 复杂会降低效率:越简单越好。Ansible 的设计原则就是让工具好用、自动化脚本好写好懂,所以创建自动化时要尽量简单。
  • 优先保证可读性:Ansible 自动化语言围绕简单易懂的声明性文本文件构建。写得好的 Ansible Playbook 能清晰记录工作流的自动化过程。
  • 用声明式思维:Ansible 是一种 “目标状态引擎”。它解决 IT 部署自动化的思路是:你只需要说明希望系统处于什么状态,Ansible 会通过只做必要的改动,让系统达到这个状态。
Ansible 用例
  • 配置管理:集中管理和部署配置文件是 Ansible 的常见用法,很多高级用户都是从这里开始了解 Ansible 自动化平台的。
  • 应用部署:用 Ansible 定义应用,再结合红帽 Ansible Tower 管理部署,各个团队能更高效地管理从开发到生产的整个应用生命周期。
  • 工作流管理:Ansible 和红帽 Ansible Tower 能简化系统配置流程,不管是通过 PXE 引导和 kickstart 安装裸机恢复服务器、虚拟机,还是从模板创建虚拟机或云实例,都能轻松搞定。
  • 持续交付:创建 CI/CD 流水线需要多个团队配合。如果没有一个团队里所有人都能用的简单自动化平台,这很难实现。Ansible Playbook 能确保应用在整个生命周期内都被正确部署和管理。
  • 安全与合规:在 Ansible Playbook 里定义安全策略后,还能把扫描和修复安全策略的操作集成到其他自动化流程中。安全应该是所有部署中必不可少的部分,而不是事后才考虑的事情。
  • 编排:只配置单个部分不足以定义整个环境,还需要明确多个配置之间如何交互,确保各种分散的资源能被整体管理。

Ansible 部署

准备实验环境

实验环境的 /etc/hosts 配置

10.1.8.10 controller.bq.cloud controller
10.1.8.11 node1.bq.cloud node1
10.1.8.12 node2.bq.cloud node2
10.1.8.13 node3.bq.cloud node3
10.1.8.14 node4.bq.cloud node4

需要配置控制节点的 bq 用户能免密码登录所有节点,并且不用输入密码就能通过 sudo 获取权限执行任何命令。

# 所有节点都配置/etc/hosts
[root@all-node ~]# cat >> /etc/hosts <<EOF################# ansible #################
10.1.8.10 controller.bq.cloud controller
10.1.8.11 node1.bq.cloud node1
10.1.8.12 node2.bq.cloud node2
10.1.8.13 node3.bq.cloud node3
10.1.8.14 node4.bq.cloud node4
EOF# 所有节点添加用户
[root@all-node ~]# useradd bq
[root@all-node ~]# echo redhat | passwd --stdin bq# 所有节点配置免密提权
[root@all-node ~]# echo 'bq ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/bq# 创建密钥对
[bq@centos7 ~]$ [ -d ~/.ssh ] || mkdir -m 700 .ssh
[bq@centos7 ~]$ ssh-keygen -t rsa -f .ssh/id_rsa -N ''# 推送公钥到目标主机
[bq@centos7 ~]$ sudo yum install -y sshpass
[bq@centos7 ~]$ for host in controller node{1..4}
do sshpass -p redhat ssh-copy-id bq@$host
done# 验证免密登录
[bq@centos7 ~]$ for host in controller node{1..4}
do sshpass -p bq@$host hostname
done
控制节点

控制节点就是安装了 Ansible 软件的主机。可以有一个或多个控制节点,被 Ansible 管理的主机不需要安装 Ansible。

注意:控制节点必须是 Linux 或 UNIX 系统,不支持 Windows 作为控制节点。

安装 ansible:

[bq@centos7 ~]$ sudo yum install -y ansible
[bq@centos7 ~]$ ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/home/bq/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /bin/ansiblepython version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
受管节点
Linux

受管节点需要满足的条件,取决于控制节点连接它们的方式以及要运行的模块:

  • Python 版本:Linux 和 UNIX 受管节点需要安装 Python,才能运行大部分模块。
  • 有些模块不需要 Python:比如 raw 模块,它的参数直接通过配置的远程 shell 运行,可以在没有 Python 环境的设备上使用。不过,raw 模块很难用安全的幂等方式操作。
Windows

Ansible 自带很多专门为 Microsoft Windows 系统设计的模块,这些模块可以在 Ansible 模块索引的Windows Modules部分查到。

大部分专门为 Microsoft Windows 受管节点设计的模块,要求受管节点上:

  • 安装 PowerShell 3.0 或更高版本。
  • 配置 PowerShell 远程连接。
  • 安装.NET Framework 4.0 或更高版本。

本课程的示例用的是基于 Linux 的受管节点,不会详细讲管理 Microsoft Windows 受管节点的具体区别和必要设置。想了解更多可以去Ansible 官网查看。

网络设备

也可以用 Ansible 来自动化配置受管网络设备,比如路由器和交换机。Ansible 包含很多专门为此设计的模块,支持 Cisco IOS、IOSXR、NX-OS,Juniper Junos,Arista EOS,以及基于 VyOS 的网络设备等。

由于大多数网络设备不能运行 Python,所以 Ansible 的网络模块是在控制节点上运行的,而不是在受管节点上。和网络设备通信会用特殊的连接方式,通常是通过 SSH 上的 CLI、SSH 上的 XML 或者 HTTP (S) 上的 API。
isco IOS、IOSXR、NX-OS,Juniper Junos,Arista EOS,以及基于 VyOS 的网络设备等。

由于大多数网络设备不能运行 Python,所以 Ansible 的网络模块是在控制节点上运行的,而不是在受管节点上。和网络设备通信会用特殊的连接方式,通常是通过 SSH 上的 CLI、SSH 上的 XML 或者 HTTP (S) 上的 API。

如涉及版权问题,请联系作者处理!!!!!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92892.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92892.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92892.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年云手机场景适配的行业观察

2025年的市场中&#xff0c;云手机品牌百花齐放&#xff0c;不同品牌在性能、功能和场景适配性上的差异日益显著。随着云计算技术的快速发展&#xff0c;云手机已从 尝鲜工具 演变为游戏、办公、企业运营等场景的刚需工具。现市面上也有着更多的云手机品牌&#xff0c;结合实测…

Date/Calendar/DateFormat/LocalDate

作用说明Date用于定义时间&#xff0c;提供date对象间的比较方法Calendar(日历类),提供对时间的运算方法DateFormat是接口&#xff0c;它的实现类SimpleDateFormat用来规范时间输出形式LocalDate&#xff0c;在JDK1.8之后引入&#xff0c;方便了对时间的运算方法介绍Date常用方…

在Python 3.8环境中安装Python 3.6兼容包的方法

在Python 3.8环境中安装Python 3.6兼容包的方法 用户的需求是&#xff1a;在Python 3.8环境中重新安装原本为Python 3.6设计的包。这通常涉及兼容性问题&#xff0c;因为Python 3.8可能引入了一些语法或API变更&#xff0c;导致旧包无法直接运行。以下是逐步解决方案&#xff…

三种DuckDB电子表格插件的union all查询性能对比

我选取了最稳定、兼容性最好的三种&#xff1a;官方excel对应函数read_xlsx()、官方spatial对应函数st_read()、rusty_sheet对应函数read_sheet。 1.建立两个包含前50万和后54万的xlsx文件&#xff0c;用于比较。利用官方excel的copy()to进行。 D copy (from v1 order by l_ord…

Python 中使用多进程编程的“三两”问题

文章目录一、简介二、选择合适的启动方式三、手动终止所有的进程小结一、简介 这里简单介绍在Python中使用多进程编程的时候容易遇到的情况和解决办法&#xff0c;有助于排查和规避某类问题&#xff0c;但是具体问题还是需要具体分析&#xff0c;后续会补充更多的内容。 二、…

Ansible部署应用

目录Ansible概述1&#xff1a;什么是Ansible2&#xff1a;Ansible的架构组成3&#xff1a;Ansible与SaltStack的对比安装部署Ansible服务1&#xff1a;系统环境设置2&#xff1a;安装Ansible&#xff08;第一台&#xff09;2&#xff1a;配置主机清单3&#xff1a;修改Ansible配…

疏老师-python训练营-Day44预训练模型

浙大疏锦行 知识点回顾&#xff1a; 预训练的概念常见的分类预训练模型图像预训练模型的发展史预训练的策略预训练代码实战&#xff1a;resnet18 作业&#xff1a; 尝试在cifar10对比如下其他的预训练模型&#xff0c;观察差异&#xff0c;尽可能和他人选择的不同尝试通过ctrl进…

AI入门学习--如何写好prompt?

写好Prompt&#xff08;提示词&#xff09;是驾驭AI模型的核心技能。以下是结合测试工程师需求的 结构化方法论 和 黄金模板一、prompt设计金字塔终极心法&#xff1a; Prompt 对AI的测试需求文档&#xff0c;需像设计测试用例一样&#xff1a;可执行&#xff1a;明确输入输出…

Linux编程 IO(标准io,文件io,目录io)

标准IO C语言标准IO概述标准IO&#xff08;Standard Input/Output&#xff09;是C语言中用于处理文件和数据流的一组函数库&#xff0c;定义在<stdio.h>头文件中。与低级IO&#xff08;如read/write&#xff09;相比&#xff0c;标准IO提供了缓冲机制&#xff0c;提高了数…

C# WPF本地Deepseek部署

模型下载地址 using LLama; using LLama.Common; using System; using System.IO; using System.Threading.Tasks; using System.Windows; using System.Windows.Input;namespace YF_Talk {public partial class MainWindow : Window{private LLamaWeights _model;private LLa…

【Abp.VNext】Abp.Vnext框架模块学习

1、Abp.Vnext-集成 Volo.Abp.Core2、Abp.vNext-Web模块 Volo.Abp.AspNetCore.MVC框架&#xff08;framework文件夹&#xff09; 七、Abp.vNext-应用模块-Identity身份认证 业务模块&#xff08;modules文件夹->identity&#xff09; 1、添加领域模型 Volo.Abp.Identity.Doma…

【完整源码+数据集+部署教程】火柴实例分割系统源码和数据集:改进yolo11-rmt

背景意义 研究背景与意义 在计算机视觉领域&#xff0c;实例分割技术作为一种重要的图像处理方法&#xff0c;近年来得到了广泛的关注和应用。实例分割不仅能够识别图像中的物体类别&#xff0c;还能精确地分割出每个物体的轮廓&#xff0c;提供更为细致的视觉信息。这一技术在…

飞算JavaAI云原生实践:基于Docker与K8s的自动化部署架构解析

一、飞算JavaAI详细介绍 1.1 飞算JavaAI飞算JavaAI是飞算云智推出的一款革命性Java开发辅助工具&#xff0c;它通过人工智能技术深度赋能传统软件开发流程&#xff0c;特别为大学生课程设计、毕业设计等实践教学环节提供了强有力的技术支持。在当前高校计算机相关专业教学中&am…

小程序打通美团核销:解锁到店综合业态私域密码,赋能6000+门店破局增长

数字化浪潮奔涌而来&#xff0c;棋牌室、台球厅、亲子乐园等线下综合业态面临经营转型的关键节点。小程序与美团核销功能的深度耦合&#xff0c;正成为撬动私域流量的核心杠杆&#xff0c;为超6000家门店打通了一条低成本、高转化的经营快车道。过往经营模式中&#xff0c;线上…

Linux Shell:Nano 编辑器备忘

打开文件 sudo nano /etc/apt/sources.list选中多行&#xff0c;然后删除 用方向键将光标定位到要删除的起始位置按下 Alt A 设置锚点用方向键选择要删除的区域 (以上 3 步是为了选中文本)用 Ctrl K(剪切) 或 Alt D(直接删除) 全选并删除 按下 Alt \ 将光标移动到文件开头…

常见的设计模式(2)单例模式

目录 一、版本一&#xff1a;禁用构造与拷贝 二、版本二&#xff1a;注册析构函数/嵌套垃圾回收 &#xff08;1&#xff09;使用atexit注册程序结束时的函数 &#xff08;2&#xff09;使用对象嵌套垃圾回收 三、版本三&#xff1a;线程安全 四、版本四&#xff1a;编译器…

JAiRouter 0.2.1 更新啦:内存优化 + 配置合并 + IP 限流增强,运维体验再升级

JAiRouter 0.2.1 更新啦&#xff1a;内存优化 配置合并 IP 限流增强&#xff0c;运维体验再升级 如果你已经在 0.2.0 生产环境中稳定运行&#xff0c;那么这篇更新会让你无痛升级&#xff0c;直接“更轻、更稳、更省心”。 &#x1f4ce; 官方仓库 & issue 直达 https://…

学习嵌入式第二十六天

文章目录IO(续上)1.标准IO1.标准IO的接口2.流的定位2.文件IO1.概念&#xff1a;2.系统调用和库函数3.文件IO函数接口习题IO(续上) 1.标准IO 1.标准IO的接口 fwrite 原型&#xff1a;size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream); 功能&#xff1…

GDB 程序启动参数设置深度指南

GDB 程序启动参数设置深度指南 1. 概述 在程序调试过程中&#xff0c;正确设置启动参数对于验证程序行为、重现特定场景至关重要。GDB提供多种灵活的方式设置启动参数&#xff0c;特别是当您需要调试命令行参数处理逻辑或配置敏感型应用时。 2. 参数设置的核心方法 2.1 启动GDB…

Autudl华为昇腾系列NPU简介和部署推理yolo11 yolov8 yolov5分割模型

0.配置Autudl 下面图片是我所租的昇腾卡和具体环境版本&#xff0c;太具体的就不说了&#xff0c;有需要的话我单独出一期Autudl租显卡的教程&#xff0c;主要是为了学习昇腾环境如何运行Yolo系列模型。 0.1华为昇腾芯片&#xff08;Ascend&#xff09;简介 1.Ascend 310&…