Ansible配置文件ansible.cfg詳解

Ansible是一個系列文章,我會盡量以通俗易懂、詼諧幽默的總結方式給大家呈現這些枯燥的知識點,讓學習變的有趣一些。
Ansible系列博文直達鏈接:Ansible入門系列

前言

此時外面小雨淅淅瀝瀝的下着,週末,慵懶的週末,無聊到極點纔打開電腦,回頭一看,都有小半個月沒有看技術書籍了,頹廢就像洪水一樣,氾濫到無可收拾。技術人,一天不看技術,都會感到空虛,但是最近生活的打擊一個接一個,讓人措手不及,防不勝防;工作中的忙碌,讓自己就像無頭蒼蠅一樣,到處亂撞。

繼續自己的博客之路,近期準備將Ansible相關的內容整理一下,和大家分享。

優先級說明

熟悉Linux運維的同學,對於這個就非常有經驗了。在Linux中,基本上99%的軟件都有一個配置文件,而這些配置文件中配置了這些軟件的運行方式等一些屬性。同時,根據存放位置的不同,同一個軟件,同樣的配置文件的使用優先級也是不一樣的。在Ansible中,它的配置文件是一個名爲ansible.cfg的配置文件,ansible.cfg配置文件是以ini格式存儲配置數據的。但是ansible.cfg配置文件可以存放在不同的目錄,但只有一個可用,在運行Ansible命令時,Ansible將會按照預先設定的順序查找配置文件,檢查到哪個就用哪個。Ansible預先設定的優先級順序如下:

  • ANSIBLE_CFG:首先,Ansible命令會先檢查環境變量,及這個環境變量將指向的配置文件;
  • ./ansible.cfg:其次,將會檢查當前目錄下的ansible.cfg配置文件;
  • ~/.ansible.cfg:再次,將會檢查當前用戶home目錄下的.ansible.cfg配置文件;
  • /etc/ansible/ansible.cfg:最後,將會檢查在安裝Ansible時自動生產的配置文件。

幾乎所有的配置項都可以通過Ansible的playbook或環境變量來重新賦值,所以當你怎麼都不知道這個變量在哪裏定義的時候,不妨去看看環境變量裏看看。根據我這麼多年的運維經驗來說,我建議使用~/.ansible.cfg作爲配置文件使用,這樣就可以實現每個用戶都有自己獨自的配置文件,不污染其它用戶正常使用Ansible,同時也方便進行選項配置。

由於Ansible本身沒有服務的概念,所以只要配置修改後配置將馬上生效。

配置選項詳解

到目前爲止,我還沒有見到一個配置項超級少,配置超級簡單的配置文件;同樣的,Ansible的配置文件也不簡單,配置項超級多;但是,二八法則同樣也適用於這些配置文件,20%的配置項決定了80%的功能,只有那20%的配置項是我們需要去關心的。所以,大家不要害怕,下面我們就將這20%常用的選項進行一一說明和總結。

  • defaults配置

    配置項 說明 默認值
    inventory ansible inventory文件路徑 /etc/ansible/hosts
    library ansible模塊文件路徑 /usr/share/my_modules/
    remote_tmp ansible遠程主機腳本臨時存放目錄 ~/.ansible/tmp
    local_tmp ansible管理節點腳本臨時存放目錄 ~/.ansible/tmp
    forks ansible執行併發數 5
    poll_interval ansible異步任務查詢間隔 15
    sudo_user ansible sudo用戶 root
    ask_sudo_pass 運行ansible是否提示輸入sudo密碼 True
    ask_pass 運行ansible是否提示輸入密碼 True
    transport ansible遠程傳輸模式 smart
    remote_port 遠程主機SSH端口 22
    module_lang ansible模塊運行默認語言環境 C
    gathering facts信息收集開關定義 smart
    roles_path ansible role存放路徑 /etc/ansible/roles
    timeout ansible SSH連接超時時間 10
    remote_user ansible遠程認證用戶 root
    log_path ansible日誌記錄文件 /var/log/ansible.log
    module_name ansible默認執行模塊 command
    executable ansible命令執行shell /bin/sh
    hash_behaviour ansible主機變量重複處理方式 replace
    private_role_vars 默認情況下,角色中的變量將在全局變量範圍中可見。 爲了防止這種情況,可以啓用以下選項,只有tasks的任務和handlers得任務可以看到角色變量 yes
    vault_password_file 指定vault密碼文件路徑
    ansible_managed 定義的一個Jinja2變量,可以插入到Ansible配置模版系統生成的文件中 Ansible managed
    display_skipped_hosts 開啓顯示跳過的主機 True
    error_on_undefined_vars 開啓錯誤,或者沒有定義的變量 False
    action_plugins ansible action插件路徑
    cache_plugins ansible cache插件路徑
    callback_plugins ansible callback插件路徑
    connection_plugins ansible connection插件路徑
    lookup_plugins ansible lookup插件路徑
    inventory_plugins ansible inventory插件路徑
    vars_plugins ansible vars插件路徑
    filter_plugins ansible filter插件路徑
    terminal_plugins ansible terminal插件路徑
    strategy_plugins ansible strategy插件路徑
    fact_caching 定義ansible facts緩存方式 memory
    fact_caching_connection 定義ansible facts緩存路徑
  • privilege_escalation配置

    配置項 說明 默認值
    become 是否開啓become模式 True
    become_method 定義become方式 sudo
    become_user 定義become方式 root
    become_ask_pass 是否定義become提示密碼 False

總結

通過一個軟件的配置文件,我們大體能知道這個軟件支持的功能,就像我們在閱讀源碼一樣,熟悉了目錄結構後,就是開始閱讀配置文件。這篇文章對Ansible的功能配置文件ansible.cfg進行了一個整體的總結,同時也對一些常用的配置選項進行了重點說明。這裏說的配置項雖然都是一些簡單的內容點,但是卻是後續學習的基礎和根本,希望大家對這裏的配置選項有一個整體的記憶和印象,在後續的學習中,可以快速的回憶起這些內容。最後,如果覺的還不錯,可以點擊下方的“打賞”哦。

2019年6月15日,於內蒙古呼和浩特。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章