完整教程:Ansible自动化运维工具及基础用法

news/2026/1/16 20:02:54/文章来源:https://www.cnblogs.com/gccbuaa/p/19493864

文章目录

  • 前言
  • 一、ansible概述
  • 二、ansible特点
  • 三、ansible工作机制
  • 四、ansible角色(roles)
  • 五、ansible部署安装(管理端操作)
    • 1、环境规划
    • 2、下载安装ansible
    • 3、配置主机清单
    • 4、配置免密登入
  • 六、ansible基础命令和操作
    • 1、命令格式
    • 2、常用模块示例
      • 2.1、command模块
      • 2.2、shell模块
      • 2.3、cron 模块
      • 2.4、user模块
      • 2.5、group模块
      • 2.6、copy模块
      • 2.7、file模块
      • 2.8、hostname
      • 2.9、ping模块
      • 2.10、yum模块
      • 2.11、service/systemd模块
      • 2.12、script模块
      • 2.13、setup模块
  • 总结


前言

Ansible作为自动化运维工具,凭借其无代理架构与声明式配置,在IT基础设施管理中扮演关键角色。本文将从概述、特性、机制到实操部署与模块应用,系统梳理Ansible的核心知识体系。


一、ansible概述

Ansible 是一款面向类 Unix 系统的自由开源配置和自动化工具,由 Python 编写。与 SaltStack、 Puppet、Chef 相似,但具有以下优势:

总结:批量管理主机(服务器、网络设备等)的自动化工具
官网下载地址:https://www.ansible.com/
在这里插入图片描述

二、ansible特点

  1. 部署简单,管理端安装即可,被控端无需操作。
  2. 默认使用 SSH 协议管理设备。
  3. 集中化管理,支持主从模式。
  4. 配置简洁、功能强大、扩展性高。
  5. 支持 API 和自定义模块,可通过 Python 扩展。
  6. Playbook 可实现复杂任务配置和状态管理。
  7. 对云计算和大数据平台支持良好。

三、ansible工作机制

Ansible 通过 SSH 将模块推送到被管理节点执行,执行完后自动删除。可结合 SVN 等工具管理自定义模块及任务编排。
Ansible 核心组成:

  1. Ansible:核心引擎
  2. Modules:内置核心模块和自定义模块
  3. Plugins:补充模块功能,如连接插件、邮件插件等
  4. Playbooks:剧本,定义多任务操作
  5. Inventory:主机清单
    在这里插入图片描述

四、ansible角色(roles)

随着数据中心环境复杂化,Playbook 会变得庞大且难以维护。角色提供了对复杂任务的模块化管理:

  • 将任务组织为独立、可复用的剧本和文件
  • 提供从外部加载任务、处理程序、变量的机制
  • 可关联静态文件和模板
  • 满足通用需求,可重复使用
  • 严格的目录结构要求

五、ansible部署安装(管理端操作)

1、环境规划

管理端:192.168.10.105
被管理端:192.168.10.106
被管理端:192.168.10.107

2、下载安装ansible

# yum 下载成功即可用
yum install -y epel-release
yum install -y ansible

ansible目录结构:
在这里插入图片描述

3、配置主机清单

设置被管理端的组别。
如:vim /etc/ansible/hosts

[webservers]
192.168.10.106
[dbservers]
192.168.10.107

4、配置免密登入

方法一:

ssh-keygen -t rsa # 生成密钥
# 先登入一次,触发完指纹验证,再进行公钥复制传输
# ssh第一次连接陌生主机会触发校验,不能直接sshpass去复制传输公钥
ssh root@192.168.10.106
ssh root@192.168.10.107
sshpass -p '123456' ssh-copy-id root@192.168.10.106
sshpass -p '123456' ssh-copy-id root@192.168.10.107

方法二:
直接跳过校验,使用密码去登入用户并复制公钥

sshpass -p "123456" ssh-copy-id -o StrictHostKeyChecking=no root@192.168.10.106
sshpass -p "123456" ssh-copy-id -o StrictHostKeyChecking=no root@192.168.10.107

六、ansible基础命令和操作

1、命令格式

absible <组名> -m <模块> -a <参数>

2、常用模块示例

2.1、command模块

远程执行命令,不支持管道和重定向。在/etc/ansible目录下

#-s 列出指定模块的描述信息和操作动作
ansible-doc -s command
#指定 ip 执行 date
ansible 192.168.10.106 -m command -a 'date'
#指定组执行 dat
ansible webservers -a 'date'
#指定组执行 date
ansible webservers -m command -a 'date'
#all 代表所有 hosts 主机
ansible all -m command -a 'date'
#如省略 -m 模块,则默认运行 command模块
ansible all -a 'ls /'

结果示例:
在这里插入图片描述
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作

# chdir=/home:执行命令前先切换到 /home 目录
ansible test1 -m command -a 'chdir=/home ls ./'
# 示例:若 /root/ab.txt 不存在,则执行 touch /root/ab.txt 创建文件
ansible test1 -m command -a 'creates=/root/ab.txt touch /root/ab.txt'
# 示例:若 /root/ab.txt 存在,则执行 rm -f /root/ab.txt 删除文件
ansible test1 -m command -a 'removes=/root/ab.txt rm -f /root/ab.txt'

在这里插入图片描述

2.2、shell模块

# 用于查看 shell 模块的精简帮助片段
ansible-doc -s shell
# 输出数值
ansible dbservers -m shell -a 'echo 123456'
# 输出ip地址 awk识别{print $2}失效,因为是shell脚本所以应该加转义符awk "NR==2 {print \$2}"
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}")'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print \$2}")'

在这里插入图片描述

2.3、cron 模块

present表示添加(可以省略),absent表示移除。
常用的参数:
minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称

ansible-doc -s cron #按 q 退出
ansible test1 -m cron -a 'minute="*/1" job="/bin/echo hello > /root/aaa.txt" name="testhello"'
ansible test1 -a 'crontab -l'
# 移除计划
ansible test1 -m cron -a 'name="testhello" state="absent"'

在这里插入图片描述

2.4、user模块

常用参数

name:用户名,必选参数
state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除
system=yes|no:是否为系统账号
uid:用户uid
group:用户基本组
shell:默认使用的shell
move_home=yse|no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes|no:当state=absent时,是否删除用户的家目录
ansible-doc -s user
#创建用户
ansible dbservers -m user -a 'name="test02"'
ansible dbservers -a 'tail /etc/passwd'
#删除用户
ansible dbservers -m user -a 'name="test02" state=absent'

在这里插入图片描述

2.5、group模块

# 用户组管理
ansible-doc -s group
ansible dbservers -m group -a 'name=sjjcxk gid=306 system=yes'
ansible dbservers -a 'tail /etc/passwd'
#system=yes 明确告诉 Ansible / 系统:这个 mysql 组是为「系统服务(如 MySQL 进程)」准备的,而非给普通用户使用;
ansible dbservers -m user -a 'name="test02" uid="1005" system="yes" group=sjjcxk'
#查看用户组
ansible dbservers -a 'id test02'

在这里插入图片描述

2.6、copy模块

常用的参数:

dest:指出复制文件的目标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限
owner:指出复制时,目标文件的属主
group:指出复制时,目标文件的属组
content:指出复制到目标主机上的内容,不能与src一起使用
ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'
ansible dbservers -a 'ls /opt'
ansible dbservers -a 'cat /opt/fstab.bak'
ansible dbservers -m copy -a 'content="123456" dest=/opt/a1.bak owner=root mode=640'
ansible dbservers -a 'cat /opt/a1.bak'

在这里插入图片描述

2.7、file模块

# 设置文件属性
ansible-doc -s file
#修改文件的属主属组权限等
ansible dbservers -m file -a 'owner=root group=mysql mode=755 path="/opt/a1.bak"'
#设置/opt/fstab.link为/opt/fstab.bak的链接文件
ansible dbservers -m file -a 'path=/opt/a1.link src=/opt/a1.bak state=link'
#创建一个文件
ansible dbservers -m file -a 'path=/opt/a1.bak state=touch'
#删除一个文件
ansible dbservers -m file -a 'path=/opt/a1.bak state=absent'

在这里插入图片描述

2.8、hostname

#管理主机名
ansible dbservers -m hostname -a "name=test02"

在这里插入图片描述

2.9、ping模块

测试主机联通性

ansible all -m ping

在这里插入图片描述

2.10、yum模块

管理软件包

# 在远程主机上安装和卸载软件包
ansible-doc -s yum
ansible webservers -m yum -a 'name=httpd'
ansible webservers -m yum -a 'name=httpd state=absent'

在这里插入图片描述

2.11、service/systemd模块

常用的参数:
name:被管理的服务名称
state=started|stopped|restarted:动作包含启动关闭或者重启
enabled=yes|no:表示是否设置该服务开机自启
runlevel:如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动

absible-doc -s service
ansible webservers -m service -a 'enabled=true name=httpd state=started'

在这里插入图片描述

2.12、script模块

实现远程批量运行本地的 shell 脚本。将控制节点的脚本放到被控制节点去运行

ansible-doc -s script
# 在对应节点写入脚本
vim /opt/test.sh
#!/bin/bash
echo "hello ansible from script" > /opt/script.txt
chmod +x /opt/test.sh
ansible webservers -m script -a '/opt/test.sh'
ansible webservers -a 'cat /opt/script.txt'

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

2.13、setup模块

facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息

ansible-doc -s setup
ansible webservers -m setup #获取mysql组主机的facts信息
ansible dbservers -m setup -a 'filter=*ipv4' #使用filter可以筛选指定的facts信息

在这里插入图片描述


总结

本文系统介绍了Ansible的核心概念、工作机制及部署流程,通过常用模块示例展示了自动化配置管理能力。掌握Ansible可极大提升运维效率,实现基础设施即代码的现代化运维转型。

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

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

相关文章

热销榜单揭晓,2026年可靠的玻璃挡烟垂壁公司TOP10推荐 - 睿易优选

在2026年,选择可靠的玻璃挡烟垂壁供货商显得尤为重要。众多厂家在技术和品质上都作出了显著努力,以确保满足市场需求。这些公司不仅强调防火安全,还关注设计美观和环保材料的使用。例如,许多企业推出的弧形挡烟垂壁…

必学收藏!vLLM-Omni全模态模型高效推理引擎:从入门到实践

vLLM-Omni是专为全模态模型设计的高效推理引擎&#xff0c;支持文本、图像、音频、视频等多种模态输入输出。它超越传统自回归架构&#xff0c;采用异构模型流水线和Stage拆分技术&#xff0c;实现高吞吐性能。文章详细介绍了其架构特点、支持的模型类型&#xff0c;以及Qwen2.…

在职人员提升首选!同等学力申硕的这些优势太香了

对于想提升学历又不想耽误工作的在职人员来说&#xff0c;同等学力申硕堪称理想选择&#xff0c;其诸多优势精准契合职场人的需求。 它通过率高&#xff0c;不用担心理想落空&#xff1b;学习时间灵活&#xff0c;能轻松平衡工作与学习&#xff0c;再也不用为挤时间上课发愁…

内容创作者一定要学会在飞书多维表上用Sora大模型!功能太强大了

现在在飞书上就可以直接配置Sora2字段捷径了&#xff0c;直接在表格里就能够批量生成产品视频了&#xff0c;支持文本指令生成视频&#xff0c;也支持根据图片参考图生成视频&#xff1b; 最关键的是Sora2还具备轻量化集成与批量自动化的生产力适配优势&#xff0c;支持插件化…

大学生都在用的降AI工具TOP5,比话凭什么排第一?

大学生都在用的降AI工具TOP5&#xff0c;比话凭什么排第一&#xff1f; TL;DR 实测5款大学生常用的降AI工具后&#xff0c;比话降AI凭借知网专项适配、99%达标率和不达标全额退款的保障稳居第一。如果你用知网检测&#xff0c;比话是最稳的选择&#xff0c;我亲测AI率从39%降…

学员追访 | 秋招5份 Offer,15w+ 年薪上岸 FPGA开发

本文记录了一名电子信息背景学员转向 FPGA 开发的学习与求职经历。从前期自学摸索&#xff0c;到系统化训练&#xff0c;再到项目实践与秋招面试&#xff0c;总结了学习路径、踩坑经验以及一些个人体会。我本科就读于电子信息相关专业&#xff0c;平时课程和比赛更多集中在嵌入…

生成式AI全攻略:从文字到视频,全面掌握AI创作技能

本文全面介绍生成式AI的基本概念及应用场景&#xff0c;涵盖文本、代码、图像、视频和声音生成。详细讲解AI文字创作的5W1H提问公式、多模态AI应用技巧、创意图片设计方法、视频和PPT制作流程&#xff0c;以及智能体(Agent)概念。文章旨在帮助读者正确看待AI时代&#xff0c;提…

大学生必看!省钱又好用的降AI工具TOP3推荐

大学生必看&#xff01;省钱又好用的降AI工具TOP3推荐 TL;DR&#xff1a;大学生预算有限&#xff0c;选降AI工具要看性价比。本文推荐3款&#xff1a;嘎嘎降AI&#xff08;4.8元/千字&#xff0c;效果最好&#xff09;、SpeedAI&#xff08;1.2元/千字&#xff0c;最便宜&#…

【趣闻】AMBA协议移除原先Master/Slave提法,改称Manager/Subordinate

起因是最近回顾一些Arm AMBA系列协议的文档&#xff0c;发现以前提法都是Master/Slave&#xff0c;现在看不到了&#xff0c;都换成了Manager/Subordinate。然后在文档中看到如下内容&#xff1a;看上去是某人读文档时看到Master/Slave的字眼感到哈气了&#xff0c;给arm官方提…

Rocky Linux 10.1 64位安装Firebird3.0

1、下载Firebird3.0安装包到Linux系统文件下&#xff0c;并解压该文件&#xff0c;进入解压后的文件夹执行 ./install2、会遇到报错Please install required library ‘libtommath’ before firebird, after it repeat firebird install&#xff0c;根据提示需要先安装依赖libt…

嘎嘎降AI降重避坑指南:这些错误操作会让你的论文越改越糟

嘎嘎降AI降重避坑指南&#xff1a;这些错误操作会让你的论文越改越糟 TL;DR 降AI不是简单地「处理一下」就完事&#xff0c;错误的操作方法可能让效果大打折扣甚至适得其反。本文总结5个常见的降AI误区和对应的正确做法&#xff0c;帮你避开这些坑。 降AI也有「正确姿势」 说…

【图形学】抗锯齿

通常提到抗锯齿我们会想到各种AA算法&#xff0c;SSAA&#xff0c;MSAA&#xff0c;FXAA等。通常来说这些抗锯齿都在渲染管线的光栅化阶段或者光栅化阶段之前(光栅化之前的 “采样计算”&#xff08;比如 MSAA 的多重采样&#xff09;)就做好了&#xff08;将三角形等图元转换为…

2026年最好用的5款AI降重神器推荐,嘎嘎降让我直接封神!

2026年最好用的5款AI降重神器推荐&#xff0c;嘎嘎降让我直接封神&#xff01; TL;DR&#xff1a;论文AI率太高&#xff1f;本文实测对比5款主流降AI率工具&#xff0c;重点推荐嘎嘎降AI&#xff08;达标率99.26%&#xff0c;能把AI率从99%降到3%&#xff09;和比话降AI&#x…

小红书Java面试被问:ThreadLocal 内存泄漏挑战及解决强大的方案

小红书Java面试被问:ThreadLocal 内存泄漏挑战及解决强大的方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

团队管理:AI编码工具盛行下,如何防范设计能力退化与知识浅薄化?

随着人工智能技术的迅速发展&#xff0c;AI工具在软件开发中的应用越来越普遍&#xff0c;尤其是GitHub Copilot等AI助手的出现&#xff0c;使得开发人员在编写代码时享受到前所未有的便利。然而&#xff0c;随着对这些工具的过度依赖&#xff0c;开发团队的核心能力是否正在面…

DeepSeek写的论文怎么降AI率?2026年最好用的3个方案

DeepSeek写的论文怎么降AI率&#xff1f;2026年最好用的3个方案 TL;DR DeepSeek写论文效率高但AI率容易爆表&#xff0c;单靠Prompt调教效果有限。实测最有效的方案是&#xff1a;先用DeepSeek写初稿&#xff0c;再用比话降AI做深度处理&#xff0c;可以把AI率从90%直接降到1…

论文AI率100%怎么办?亲测这款降AI神器3分钟搞定!

论文AI率100%怎么办&#xff1f;亲测这款降AI神器3分钟搞定&#xff01; TL;DR&#xff1a;论文AI率飙到100%别慌&#xff01;本文分享我从100%降到10%以下的真实经历&#xff0c;核心方法就是用嘎嘎降AI处理&#xff0c;3分钟出结果&#xff0c;达标率99.26%。文末附避坑指南和…

针对大语言模型文本审核逻辑鲁棒性与精细化规则编排的深度研究报告

在大语言模型&#xff08;LLM&#xff09;的快速演进中&#xff0c;文本审核作为确保人工智能系统安全与合规的关键技术&#xff0c;正面临着从简单的模式识别向复杂逻辑推演的范式转移。传统的审核系统通常依赖于关键词过滤或浅层的统计分类器&#xff0c;但在处理具有深层语境…

大模型的MCP和function calling的使用方式有什么区别

MCP&#xff08;Model Context Protocol&#xff09;和 Function Calling&#xff08;函数调用&#xff09; 都是让“大模型能用外部能力”的机制&#xff0c;但设计目标、使用方式、抽象层级都有明显区别。下面从「是什么」「怎么用」「适合什么场景」三个层面给出一个工程向对…

供应KEYSIGHT E5071C矢量网络分析仪

供应KEYSIGHT E5071C矢量网络分析仪E5071C网络分析仪具有广泛的频率范围和众多功能&#xff0c;在同类产品中具有高的射频性能和快的测试速度。它是制造工程师和研发工程师测量9 kHz至8.5 GHz射频元器件和电路的工具新款 20 GHz 选件可将 E5071C ENA 系列网络分析仪的频率范围扩…