Ansible 常用模塊歸納總結

[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;使得看圖、找圖變得更加輕松便捷。該插…