Ansible 變量指南:聲明、優先級、作用域與最佳實踐(一)

Ansible 變量的聲明

前言

全面理解 Ansible 變量是編寫高效、可維護 Playbook 的關鍵。由于最近使用 Ansible 比較多,在變量問題上踩了不少坑,也因此對變量的聲明,優先級和作用域有了更深的理解。姑且總結一下,分享給大家,作為一個學習、避坑小指南。


在哪兒聲明 Ansible 變量?

簡單來說,變量可以放在下面這些地方,我們平時用得最多的也就這幾種。加上代碼示例后會更清晰。

  1. 命令行里直接加

    • -e--extra-vars 參數,在跑 playbook 的時候臨時指定。

    ansible-playbook my_playbook.yml -e “user=admin http_port=8080”

    
    
  2. Playbook 文件里

    • vars::直接在 Playbook 里寫。
    - name: My Playbookhosts: webserversvars:app_name: "AwesomeApp"app_version: "1.2.3"tasks:- name: Display app infodebug:msg: "Deploying {{ app_name }} version {{ app_version }}"
    
    • vars_files: 把變量單獨存到一個文件里,然后在 Playbook 里引用。
    # vars/db.yml
    db_user: "mysql_user"
    db_pass: "secret"
    
    # playbook.yml
    - name: My Playbookhosts: db_serversvars_files:- vars/db.ymltasks:- name: Configure databasedebug:msg: "Configuring DB with user {{ db_user }}"
    
    • vars_prompt: 運行時會提示你手動輸入,適合密碼這類敏感信息。
    - name: Deploy with user confirmationhosts: allvars_prompt:- name: "deploy_user"prompt: "Enter your username for deployment"private: no # 輸入時可見- name: "deploy_password"prompt: "Enter your password"private: yes # 輸入時不可見tasks:- name: Run deploymentdebug:msg: "Running as {{ deploy_user }}"
    
  3. Inventory 清單里

    • group_vars/: 這是最常用的。給某個主機組(比如 webservers)創建一個 group_vars/webservers.yml 文件,里面的變量就對這個組所有機器生效。group_vars/all.yml 里的變量對所有機器都生效。
    # 目錄結構
    inventory
    group_vars/webservers.ymlall.yml
    
    # group_vars/webservers.yml
    http_port: 80
    ntp_server: "ntp.web.example.com"
    
    • host_vars/: 如果只想給某一臺機器(比如 server1.example.com)指定變量,就創建一個 host_vars/server1.example.com.yml 文件。
    # 目錄結構
    inventory
    host_vars/server1.example.com.yml
    
    # host_vars/server1.example.com.yml
    # 這個配置會覆蓋 group_vars/webservers.yml 里的 http_port
    http_port: 8080
    
  4. Role (角色) 里

    • roles/your_role/defaults/main.yml: 角色的默認變量。注意是“默認”,意思是它的優先級最低,很容易被其他地方的同名變量覆蓋。
    # roles/my_apache_role/defaults/main.yml
    apache_port: 80
    
    • roles/your_role/vars/main.yml: 角色的“標準”變量,比 defaults 里的優先級高。
    # roles/my_apache_role/vars/main.yml
    apache_package_name: "httpd"
    
  5. 運行時動態生成

    • Facts (事實變量): Ansible 會自動收集遠程機器的信息,比如 IP 地址 (ansible_default_ipv4.address)、系統版本等。這些是它自己發現的變量。
    - name: Show OSdebug:msg: "The OS is {{ ansible_facts['distribution'] }} {{ ansible_facts['distribution_version'] }}"
    
    • register: 把一個任務的執行結果存成一個變量,給后面的任務用。
    - name: Check file existencecommand: ls /path/to/some/fileregister: file_check_resultignore_errors: yes- name: Report if file existsdebug:msg: "File exists!"when: file_check_result.rc == 0
    
    • set_fact: 在 playbook 運行過程中,手動創建一個新變量。
    - name: Set a custom factset_fact:my_custom_variable: "Hello World"- name: Use the custom factdebug:msg: "{{ my_custom_variable }}"
    

后續會再寫一篇介紹 Ansible 變量的優先級和作用域。

參考資料

  • Ansible 官方文檔:使用變量 (Using Variables)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90874.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90874.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[極客大挑戰 2019]FinalSQL--布爾盲注

直接看題可以看到題目給了提示盲注!那么接下來就是尋找注入點了!那么不能發現注入點就是id了!注入類型為數值型注入!這里直接嘗試盲注。但是這里and被過濾了&&也不行。問了幾個師傅說用or,但是空格被過濾了&am…

再談fpga開發(狀態機的應用)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】前面說過,fpga上面最基礎的部分是寄存器,而所有寄存器存在每一個clock下,都有被翻轉的可能性。至于這些寄存器是…

TCP如何解決網絡切換問題

一、傳統TCP的網絡切換問題核心問題:TCP 連接基于四元組(源IP、源端口、目的IP、目的端口),IP 變化導致連接失效二、改進方案與技術演進1. MPTCP(多路徑TCP) - 主流解決方案核心機制:單連接多路…

【Linux】常用命令(一)

【Linux】常用命令 一1. ls1.1 ls -a 顯示所有文件及其目錄1.2 ls -A 不顯示當前目錄和父目錄1.3 ls -d 顯示目錄本身,而不是顯示其內部內容1.4 ls -i 顯示文件的inode屬性信息1.4.1 實際用途場景1.5 ls -l 顯示文件的詳細屬性信息1.6 ls -R 遞歸顯示所有子文件1.7 …

Window 部署 coze-stdio(coze 開發平臺)

參考鏈接 https://github.com/coze-dev/coze-studio/wiki/2.-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B https://github.com/coze-dev/coze-studio/wiki/3.-%E6%A8%A1%E5%9E%8B%E9%85%8D%E7%BD%AE 環境說明 Docker:28.3.2 系統:Window 11 配置要求 CP…

【Git】Git LFS的使用

一、簡介 Git LFS(Git Large File Storage)是由 GitHub 開發的一款 Git 擴展工具,旨在幫助開發者更高效地管理倉庫中的大文件。傳統 Git 會將文件的每個版本完整存儲在倉庫歷史中,導致大文件(如音頻、視頻、數據集、二…

不坑盒子:Word里1秒制作“花括號”題目,多音字組詞、形近字組詞……

1. 30秒看懂它能干啥 用“不坑盒子”插件,在 Word 里輸入: 樂,l(快樂),yu(音樂);長,chng(長短),zhǎng(長大)點一下【總分關系】,瞬間出現左邊是“樂”右邊并列兩行拼音括號的花括號結構;再點【并列關系】,又能做出只…

Gateway網關層灰度方案—xx互聯網醫院系統灰度發布設計與思路詳解

通過之前技術的積累,終于開始了本文的編寫,如果對灰度、負載均衡、上下文傳遞、網關不太理解,可以先學習博主的以下博客內容。共勉: 企業級 Java 應用灰度發布設計方案與實踐全解析《Spring 中上下文傳遞的那些事兒》 Part 1&…

學習游戲制作記錄(改進投擲劍的行為)7.27

1.實現劍跟隨飛行方向旋轉修改劍的預制體使劍的朝向對準右x軸Sword_Skill_Contorl腳本:private void Update(){transform.right rb.velocity;//時刻更新位置}2.實現劍插入地面或者敵人修改預制體為觸發器Sword_Skill_Contorl腳本:private bool canRotat…

嵌入式軟件面試八股文

目錄 一、指針函數和函數指針 二、指針的大小 三、sizeof 和 strlen 區別 四、數組指針和指針數組 五、C語言里面內存分配的方式 六、struct結構體和union聯合體的區別 八、數組和鏈表的區別 九、寫一個宏這個紅返回輸入參數比較小的一個 十&#xff0c;使用#include<…

Gradle#Plugin

查看任務來自那個插件 /gradlew tasks --all <taskName>Java Plugin Java Library Plugin

滲透高級-----測試復現(第三次作業)

文章目錄測試復現一&#xff0c;環境搭建二&#xff0c;通過VS Code連接cacti三&#xff0c;測試測試復現 一&#xff0c;環境搭建 1&#xff0c;在ubuntu虛擬機上安裝MySql數據庫&#xff1a; apt-get upgrade # 更新apt-get upgrade apt-get update # 更新apt-ge…

LINUX727 磁盤管理回顧1;配置文件回顧

邏輯卷快照 快照為什么這么小RAID 磁盤陣列 raid 0 raid 1 raid5 raid10raid0 raid1 raid5 raid6 raid10 rank;create raid0 mdadm -c /dev/md0 -l 0 -n 2 /dev/sdb3 /dev/sdb4 raid1 mdadm -c /dev/md1 -l 1 -n 2 /dev/sdb5 /dev/sdb6 raid5 mdadm -c /dev/md5 -l 5 -n 3 -x …

【筆記】Einstein關系式 D = ukBT 的推導與應用研究

文章目錄從漲落理論和能量均分定理的數學推導基于平衡統計力學的推導1. 漂移流的來源&#xff1a;Jdrift?μρ?UJ_{drift} -μρ?UJdrift??μρ?U物理機制粒子流的形成2. 擴散流的來源&#xff1a;Jdiffusion?D?ρJ_{diffusion} -D?ρJdiffusion??D?ρ3. 熱平衡要…

AJAX 原理_第一節_XHR 對象

文章目錄1.AJAX原理1.1 初識XML1.2 查詢參數1.3 案例-地區查詢1.4 案例-注冊-設置請求頭1.AJAX原理 1.1 初識XML AJAX原理是什么? XMLHttpRequest對象 XHR對象定義: 通過XMLHttpRequest可以在不刷新頁面的情況下請求特定URL,獲取數據.這允許頁面在不影響用戶操作的情況下,更…

BeautifulSoup 使用詳解與實戰示例

BeautifulSoup 是一個用于解析HTML和XML文檔的Python庫&#xff0c;它能夠將復雜的HTML文檔轉換成一個復雜的樹形結構&#xff0c;使得我們可以輕松地查找和提取所需的內容。下面我將詳細介紹BeautifulSoup的使用流程&#xff0c;并結合實際示例進行說明。一、安裝與基礎使用1.…

LangChain實戰——實現多輪對話 + Function Calling

隨著大語言模型&#xff08;LLMs&#xff09;的迅猛發展&#xff0c;“Function Calling”&#xff08;函數調用&#xff09;逐漸成為一個重要的能力&#xff0c;它使得模型不僅能聊天&#xff0c;還能像“中控大腦”一樣調用外部函數完成具體任務&#xff0c;比如查天氣、調用…

湖南(源點咨詢)市場調研 如何在行業研究中快速有效介入 起頭篇

行業研究從業人員經常需要在承接研究案子后快速的摸清委托方所在行業。而俗話說&#xff0c;隔行如隔山&#xff0c;快速了解行業&#xff0c;主要用于行業分析報告及為市場細分準入進行前期鋪墊&#xff0c;要想摸清一個行業&#xff0c;需要長期持續的跟蹤。了解一個行業&…

【c++】從 “勉強能用” 到 “真正好用”:中文問答系統的 200 行關鍵優化——關于我用AI編寫了一個聊天機器人……(16)

先看核心結論&#xff1a;兩段代碼的本質區別如果用一句話總結兩段代碼的差異&#xff1a;前者是 “帶中文支持的問答系統”&#xff0c;后者是 “真正適配中文的問答系統”。具體來說&#xff0c;兩段代碼的核心功能都是 “加載問答數據→接收用戶輸入→匹配答案”&#xff0c…

VR 技術在污水處理領域的創新性應用探索?

在廣州&#xff0c;VR 污水處理技術的應用可謂是多點開花。首先&#xff0c;在污水處理流程模擬方面&#xff0c;工程師們利用 VR 技術創建了高度逼真的污水處理廠三維模型&#xff0c;將污水處理的整個流程&#xff0c;從預處理去除大顆粒雜質和懸浮物&#xff0c;到初級處理通…