[student@master ansible]$ ansible-galaxy collection install http://ansible.example.com/materials/community-general-6.3.0.tar.gz -p collections/##将第三方模块下载到collections下
[student@master ansible]$ ansible-galaxy collection install http://ansible.example.com/materials/ansible-posix-1.5.1.tar.gz -p collections/

Ansible 常用模块归纳总结

以下是 Ansible 常用模块的表格化归纳,包含模块核心参数(可理解为 “子命令”)及其作用说明:

模块分类模块名称核心参数及作用典型用法示例
系统管理service- name: 服务名称 - state: 服务状态(started/stopped/restarted/reloaded) - enabled: 是否开机自启(yes/no)yaml - service: name: httpd state: restarted enabled: yes
user- name: 用户名 - uid: 用户 ID - group: 主组 - groups: 附加组 - home: 家目录 - shell: 登录 shell - state: 状态(present/absent)yaml - user: name: student uid: 1000 groups: wheel state: present
group- name: 组名 - gid: 组 ID - state: 状态(present/absent) - system: 是否系统组(yes/no)yaml - group: name: webdev gid: 2000 state: present
软件包管理yum- name: 包名(支持 * 通配符) - state: 状态(present/absent/latest) - update_cache: 是否更新缓存(yes/no) - enablerepo: 临时启用的仓库yaml - yum: name: httpd state: latest enablerepo: epel
apt- name: 包名 - state: 状态(present/absent/latest) - update_cache: 是否更新缓存 - upgrade: 是否升级(yes/dist)yaml - apt: name: nginx state: present update_cache: yes
文件操作file- path: 路径 - state: 类型(file/directory/link/absent) - mode: 权限(如 ‘0755’) - owner: 所有者 - group: 所属组 - src: 链接源路径(state=link 时)yaml - file: path: /webdev state: directory mode: '0755' group: webdev
copy- src: 本地源路径 - dest: 远程目标路径 - mode: 权限 - owner: 所有者 - content: 直接指定文件内容 - backup: 是否备份原有文件yaml - copy: content: "test" dest: /tmp/file mode: '0644'
template- src: 模板文件路径 - dest: 目标路径 - vars: 模板变量 - lstrip_blocks: 去除左侧空白yaml - template: src: config.j2 dest: /etc/config vars: port: 8080
命令执行command- free_form: 要执行的命令(直接写在模块后) - creates: 若文件存在则不执行 - removes: 若文件不存在则不执行yaml - command: /usr/bin/backup.sh creates: /backup/complete
shell- 同command,但支持管道、重定向等 shell 特性 - executable: 指定 shell 解释器```yaml - shell: "ps auxgrep httpd > /tmp/httpd.log"```
存储管理parted- device: 磁盘设备路径 - number: 分区编号 - part_start: 分区起始位置 - part_end: 分区结束位置 - state: 状态(present/absent)yaml - parted: device: /dev/sdb number: 1 part_end: 1000MiB state: present
mount- path: 挂载点 - src: 设备 / UUID - fstype: 文件系统类型 - state: 状态(mounted/unmounted/present)yaml - mount: path: /data src: UUID=xxx fstype: xfs state: mounted
lvg- vg: 卷组名 - pvs: 物理卷列表 - state: 状态(present/absent) - size: 卷组大小yaml - lvg: vg: datavg pvs: /dev/sdb1 state: present
lvol- vg: 所属卷组 - lv: 逻辑卷名 - size: 大小(如 800M/10G) - state: 状态(present/absent)yaml - lvol: vg: datavg lv: datalv size: 10G
网络管理yum_repository- name: 仓库 ID - baseurl: 仓库地址 - enabled: 是否启用(yes/no) - gpgcheck: 是否校验 GPG(yes/no) - gpgkey: GPG 密钥地址yaml - yum_repository: name: epel baseurl: http://epel.mirror enabled: yes
firewalld- service: 服务名(如 http) - port: 端口(如 80/tcp) - zone: 区域 - permanent: 是否永久生效 - state: 状态(enabled/disabled)yaml - firewalld: service: http permanent: yes state: enabled
定时任务cron- name: 任务描述(唯一标识) - user: 执行用户 - minute/hour/day/month/weekday: 时间设定 - job: 要执行的命令 - state: 状态(present/absent)yaml - cron: name: "backup" user: root hour: 3 job: "/backup.sh"
其他常用debug- var: 要显示的变量 - msg: 自定义消息 - verbosity: 显示级别yaml - debug: var: hostvars[inventory_hostname]['ansible_ip_addresses']
setup- filter: 过滤 facts(如 ‘ansible_*_mb’) - gather_subset: 收集子集(如 ‘!all,!min,network’)yaml - setup: filter: ansible_distribution
文件内容操作lineinfile- path: 目标文件路径 - line: 要确保存在的行内容 - regexp: 匹配要替换的行(正则表达式) - state: 状态(present/absent) - backrefs: 是否使用反向引用(yes/no) - insertafter: 在匹配行之后插入 - insertbefore: 在匹配行之前插入yaml - lineinfile: path: /etc/httpd/conf/httpd.conf regexp: '^DocumentRoot' line: 'DocumentRoot "/www"'
replace- path: 目标文件路径 - regexp: 要匹配的正则表达式 - replace: 替换后的内容 - before: 仅处理匹配此正则的行之前的内容 - after: 仅处理匹配此正则的行之后的内容 - backup: 是否备份原文件(yes/no)yaml - replace: path: /etc/sysctl.conf regexp: '^net.ipv4.ip_forward = 0' replace: 'net.ipv4.ip_forward = 1'
文件传输fetch- src: 远程主机上的源文件路径(必须是文件,不能是目录) - dest: 本地存储路径(文件会保存到 dest/主机名/src 结构下) - flat: 是否禁用默认目录结构(yes/no,需指定完整文件名) - validate_checksum: 是否校验文件完整性yaml - fetch: src: /var/log/messages dest: ./logs/ flat: no

Ansible 提供了丰富的模块来完成各种管理任务,以下是常用模块的分类总结,涵盖系统管理、软件包管理、文件操作等多个方面。

一、系统管理模块

1. service 模块

用于管理系统服务的启动、停止、重启和启用状态。

- name: 确保 httpd 服务启动并设置开机自启service:name: httpdstate: startedenabled: yes

2. systemd 模块

专门用于管理 systemd 服务,功能更强大。

- name: 重启并启用 docker 服务systemd:name: dockerstate: restartedenabled: yesdaemon_reload: yes  # 重新加载 systemd 配置

3. user 模块

管理系统用户账号。

- name: 创建名为 student 的用户user:name: studentuid: 1000group: usershome: /home/studentshell: /bin/bashstate: present

4. group 模块

管理系统用户组。

- name: 创建 webdev 组group:name: webdevgid: 2000state: present

二、软件包管理模块

1. yum 模块 (RHEL/CentOS)

用于管理 RPM 系 Linux 发行版的软件包。

- name: 安装 httpd 并确保是最新版本yum:name: httpdstate: latest

2. apt 模块 (Debian/Ubuntu)

用于管理 Debian 系 Linux 发行版的软件包。

- name: 安装 nginx 并确保已安装apt:name: nginxstate: presentupdate_cache: yes  # 相当于 apt update

3. package 模块 (通用)

通用的软件包管理模块,会根据系统自动选择合适的包管理器。

- name: 安装 python3package:name: python3state: present

三、文件操作模块

1. file 模块

用于管理文件、目录和符号链接。

- name: 创建 /webdev 目录并设置权限file:path: /webdevstate: directorymode: '0755'owner: rootgroup: webdev- name: 创建符号链接file:src: /webdevdest: /var/www/html/webdevstate: link

2. copy 模块

将本地文件复制到远程主机。

- name: 复制配置文件到远程主机copy:src: ./local_config.confdest: /etc/app/config.confmode: '0644'owner: rootgroup: root

3. template 模块

使用 Jinja2 模板生成文件并传输到远程主机(支持变量替换)。

- name: 使用模板生成 nginx 配置文件template:src: ./nginx.conf.j2dest: /etc/nginx/nginx.confmode: '0644'vars:server_port: 8080

四、命令执行模块

1. command 模块

在远程主机执行命令(不通过 shell 解释器,不支持管道和环境变量)。

- name: 查看系统版本command: cat /etc/redhat-releaseregister: os_version  # 将输出结果保存到变量- name: 显示系统版本debug:var: os_version.stdout

2. shell 模块

在远程主机通过 shell 解释器执行命令(支持管道、重定向等 shell 特性)。

- name: 查找 /var/log 下 24 小时内修改的日志文件shell: find /var/log -type f -mtime -1 -name "*.log"register: recent_logs

3. script 模块

在远程主机执行本地脚本。

- name: 在远程主机执行本地脚本script: ./cleanup.sh

五、存储管理模块

1. parted 模块

用于磁盘分区管理。

- name: 创建 1000MiB 的分区parted:device: /dev/sdbnumber: 1part_end: 1000MiBstate: present

2. filesystem 模块

用于格式化文件系统。

- name: 将分区格式化为 ext4filesystem:fstype: ext4dev: /dev/sdb1

3. mount 模块

用于管理文件系统挂载。

- name: 挂载分区到 /testdirmount:path: /testdirsrc: /dev/sdb1fstype: ext4state: mounted  # 确保挂载并写入 fstab

4. LVM 相关模块

  • lvg:管理卷组
  • lvol:管理逻辑卷
- name: 创建卷组 datastoragelvg:vg: datastoragepvs: /dev/sdbstate: present- name: 创建 800M 的逻辑卷 databaselvol:vg: datastoragelv: databasesize: 800M

六、网络模块

1. yum_repository 模块

管理 yum 仓库配置。

- name: 添加 EPEL 仓库yum_repository:name: epeldescription: EPEL Repositorybaseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/gpgcheck: yesenabled: yes

2. firewalld 模块

管理 firewalld 防火墙规则。

- name: 允许 http 服务通过防火墙firewalld:service: httppermanent: yesimmediate: yes  # 立即生效state: enabled

七、定时任务模块

cron 模块

管理系统定时任务(crontab)。

- name: 添加每 5 分钟执行的任务cron:name: "echo hello"user: studentminute: "*/5"job: 'echo "hello tarena"'

八、其他常用模块

1. debug 模块

用于调试输出变量信息。

- name: 输出变量信息debug:var: some_variablemsg: "当前主机是 {{ inventory_hostname }}"

2. setup 模块

收集远程主机的 facts 信息(系统信息)。

- name: 收集主机信息setup:register: host_facts- name: 显示主机 IP 地址debug:var: host_facts.ansible_facts.ansible_default_ipv4.address

模块使用技巧

  1. 查看模块文档:使用 ansible-doc 模块名 命令查看详细文档,例如 ansible-doc yum
  2. 模块参数:大多数模块都有 state 参数,常用值包括 present(存在)、absent(不存在)、started(启动)等
  3. 条件执行:结合 when 条件判断,实现根据不同情况执行不同任务
- name: 只在 CentOS 系统上执行yum:name: httpdstate: presentwhen: ansible_facts['distribution'] == 'CentOS'

_facts.ansible_facts.ansible_default_ipv4.address

## 模块使用技巧1. **查看模块文档**:使用 `ansible-doc 模块名` 命令查看详细文档,例如 `ansible-doc yum`
2. **模块参数**:大多数模块都有 `state` 参数,常用值包括 `present`(存在)、`absent`(不存在)、`started`(启动)等
3. **条件执行**:结合 `when` 条件判断,实现根据不同情况执行不同任务```yaml
- name: 只在 CentOS 系统上执行yum:name: httpdstate: presentwhen: ansible_facts['distribution'] == 'CentOS'

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

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

相关文章

计算机网络:概述层---TCP/IP参考模型

🌐 TCP/IP四层模型详解:互联网的核心协议架构深度剖析 📅 更新时间:2025年9月3日 🏷️ 标签:TCP/IP模型 | 互联网协议 | 四层模型 | 计算机网络 | 协议栈 | 网络通信 | 王道考研 摘要: 本文将深入浅出地解析…

打工人日报#20250902

打工人日报#20250902 今天晚上去了玄武湖,来南京三次了,终于来了一次知识点 不确定度 “不确定度” 是测量领域的核心概念,用于量化测量结果的可靠性与分散程度—— 简单来说,它回答了 “这个测量值有多可信?真实值可能…

告别手动复制粘贴:C# 实现 Excel 与 TXT 文本文件高效互转

在日常办公和数据处理工作中,Excel 和 TXT文本文件是两种常见的数据存储格式。Excel文件适合进行复杂的数据分析、公式运算和图表生成,而 TXT文件则更适合用于存储和传输纯文本数据,如日志、配置文件或简单的数据列表。很多时候,我…

elasticsearch学习(二)插件安装

目录上一篇文章查看插件安装分词器analysis-icu重启实例重新查看插件上一篇文章 elasticsearch学习(一) 下载、安装和初次部署 查看插件 ➜ bin elasticsearch-plugin list warning: ignoring JAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.8.0_…

(原创)SAP ATP可用量检查 OPJJ功能配置说明(900+字!)

前言:经常在ATP遇到问题,每次上网找都没有相关资料,一气之下直接在官网找资料收集,已整理相关字段与大家分享,避免大家走弯路附上我个人很久之前的的测试结果:具体字段控制说明检查不考虑补货提前期关联字段…

Unity资源管理——操作一览(编辑器下 运行时)

本文由 NRatel 历史笔记整理而来,如有错误欢迎指正。 资源管理是Unity游戏开发中的重头工作之一。 以下按【编辑器下】和 【运行时】,共十多个步骤,一览总体流程(内容巨大,不细展开)。 一、资源导入Unity【…

Sentinel vs Resilience4j vs Bucket4j:分布式限流方案对比与实战

Sentinel vs Resilience4j vs Bucket4j:分布式限流方案对比与实战 在高并发微服务架构中,合理的限流策略是保护系统稳定性与可用性的关键。本文将从问题背景入手,对 Sentinel、Resilience4j 和 Bucket4j 三种常见的分布式限流方案进行对比&am…

Spring Boot 3.5.3 集成 Log4j2 日志系统

在 Spring Boot 3.5.3 中&#xff0c;要将默认的 Logback 替换为 Log4j2&#xff0c;需要以下步骤&#xff1a;1. 添加 Log4j2 依赖在 pom.xml中排除默认的 Logback 依赖并添加 Log4j2 依赖&#xff1a;<dependencies><!-- 排除默认的 Logback --><dependency&g…

ADB图片上传轮播

可以通过ADB在机器中进行上传照片&#xff0c;进行其他图片播放 当前系统架构分析 1. 现有组件结构 ImageCarouselActivity: 主要的轮播Activity&#xff0c;继承自BaseBindingActivity 实现全屏显示和沉浸式体验使用ViewPager2进行图片轮播支持自动轮播&#xff08;5秒间隔&…

异常处理小妙招——2.代码的韧性:如何实现操作的原子性回滚

一、核心思想&#xff1a;什么叫“失败原子性”&#xff1f; 想象一下你在玩一个闯关游戏&#xff0c;有一关需要你连续跳过三个平台。 不具有原子性&#xff1a;你跳过了第一个和第二个平台&#xff0c;但在跳第三个时失败了、掉下去了。结果你不仅没过关&#xff0c;连之前跳…

Crawl4AI:为LLM而生的下一代网页爬虫框架

在当今AI驱动的信息处理时代&#xff0c;从网页中高效提取高质量、结构化的数据已成为连接互联网与大语言模型&#xff08;LLM&#xff09;的关键桥梁。Crawl4AI作为一款开源的LLM友好型网页爬虫与刮板工具&#xff0c;正迅速成为开发者处理这一任务的首选解决方案。本文将深入…

输出一个爱心

输出效果&#xff1a;代码实现&#xff1a;#include<iostream> #include<iomanip> #include<algorithm> using namespace std; int main() {int n;cin>>n;char a[8] {I,L,O,V,E,Y,O,U};int j 1;int k n*21;int o n*2-2;int aa 0; for(int i 0;i&…

深度集成Dify API:企业级RAG知识库管理平台解决方案

&#x1f3af; 需求和概述 当前基于Dify实现企业级的智能问答系统需求日益增长&#xff0c;Dify的低代码开发框架和功能完整、灵活适应各种需求的特色得到广大大模型和RAG开发着的欢迎。但是Dify在落地企业级应用时候&#xff0c;也面临不少的问题&#xff0c;最突出的就是Dif…

C++循环越界问题

for (int i 0; i < historyTableList.size() - 1; i) {historyList2.push_back(historyTableList[i]); } historyList.size()0时&#xff0c;为什么会异常historyTableList.size() 返回的是 size_t 类型&#xff08;无符号整数&#xff09;当 size() 0 时&#xff0c;size…

MongoDB 从零到入门:实用指南

什么是 MongoDB&#xff1f; MongoDB 是一个流行的非关系型数据库&#xff08;NoSQL&#xff09;&#xff0c;它使用类似 JSON 的文档来存储数据&#xff0c;而不是传统的表格形式。这使得 MongoDB 非常灵活&#xff0c;特别适合处理半结构化数据和快速迭代的开发场景。 核心概…

WebRTC音频QoS方法五(音频变速算法之Expand算法实现)

一、概述介绍在WebRTC中&#xff0c;存在两种扩展算法&#xff1a;PreemptiveExpand和Expand。尽管这两种算法的目标都是扩展音频信号&#xff0c;但它们的实现原理和应用场景却有所不同。PreemptiveExpand&#xff08;预防性扩张&#xff09;主动扩展策略&#xff0c;旨在防止…

【Python - 基础 - 工具】解决pycharm“No Python interpreter configured for the project”问题

解决pycharm“No Python interpreter configured for the project”问题 当你在 PyCharm 中遇到“No Python interpreter configured for the project”错误时&#xff0c;意味着你的项目没有配置 Python 解释器。以下是解决该问题的步骤。 示例 # 尝试运行代码时出现错误 prin…

Elasticsearch创建索引分片和副本大小建议

在Elasticsearch中&#xff0c;‌分片(shard)和副本(replica)‌ 的设置直接影响集群性能、容错能力和扩展性。以下是最佳实践指南&#xff1a;核心概念‌类型‌‌描述‌‌是否可修改‌‌主分片(Primary Shard)‌数据的最小存储单元&#xff0c;每个索引被拆分成多个主分片❌ 索…

“人工智能+虚拟仿真”开启新学期智慧学习之旅

在教育领域掀起数字化革新浪潮的今天&#xff0c;新学期的开启不仅意味着知识探索新征程的起步&#xff0c;更蕴含着教育模式深度变革的无限可能。虚拟仿真技术作为教育现代化的关键驱动力&#xff0c;正重塑学习体验&#xff0c;引领教育范式转移。人工智能与虚拟仿真技术的结…

Photoshop用户必看:让你的PSD像JPG一样可预览

软件介绍 Photoshop缩略图补丁插件3.8.0.96是一款实用的工具&#xff0c;它能够将PSD格式的文件&#xff08;Photoshop的专用格式&#xff09;以缩略图的形式显示出来。这一功能极大地提升了用户在管理和查找图像文件时的效率&#xff0c;使得看图、找图变得更加轻松便捷。该插…