本節書摘來自華章出版社《ansible權威指南》一書中的第2章,第2.2節,作者 李松濤 魏 巍 甘 捷 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
2.2 ansible配置檔案解析
inventory用于定義ansible的主機清單配置,ansible的自身配置檔案隻有一個,即ansible.cfg,ansible安裝好後它預設存放于etcansible目錄下。ansible.cfg配置檔案可以存在于多個地方,ansible讀取配置檔案的順序依次是目前指令執行目錄→使用者家目錄下的.ansible.cfg→etcansible.cfg,先找到哪個就使用哪個的配置。其ansible.cfg配置的所有内容均可在指令行通過參數的形式傳遞或定義在playbooks中。
配置檔案ansible.cfg約有350行語句,大多數為注釋行預設配置項。該檔案遵循ini格式,分為如下幾類配置。
(1)[defaults]
該類配置下定義正常的連接配接類配置,如inventory、library、remote_tmp、local_tmp、forks、poll_interval、sudo_user、ask_sudo_pass、ask_pass、transport、remote_port等。
[defaults]
# inventory =
etcansiblehosts # 定義inventory
# library =
usrsharemy_modules # 自定義lib庫存放目錄
# remote_tmp =
$home.ansibletmp # 臨時檔案遠端主機存放目錄
# local_tmp =
$home.ansibletmp # 臨時檔案本地存放目錄
# forks = 5 # 預設開啟的并發數
# poll_interval
= 15 # 預設輪詢時間間隔
# sudo_user = root #
預設sudo使用者
# ask_sudo_pass
= true # 是否需要sudo密碼
# ask_pass = true #
是否需要密碼
# roles_path =
etcansibleroles # 預設下載下傳的roles存放的目錄
#
host_key_checking = false # 首次連接配接是否需要檢查key認證,建議設為false
# timeout = 10 # 預設逾時時間
# timeout = 10 # 如沒有指定使用者,預設使用的遠端連接配接使用者
# log_path = varlogansible.log # 執行日志存放目錄
# module_name =
command # 預設執行的子產品
# action_plugins
= usrshareansiblepluginsaction # action插件的存放目錄
callback_plugins = usrshareansiblepluginscallback # callback插件的存放目錄
connection_plugins = usrshareansiblepluginsconnection # connection插件的
#
存放目錄
# lookup_plugins
= usrshareansiblepluginslookup # lookup插件的存放目錄
# vars_plugins =
usrshareansiblepluginsvars # vars插件的存放目錄
# filter_plugins
= usrshareansiblepluginsfilter # filter插件的存放目錄
# test_plugins =
usrshareansiblepluginstest # test插件的存放目錄
strategy_plugins = usrshareansiblepluginsstrategy # strategy插件的存放目錄
# fact_caching =
memory # getfact緩存的主機資訊存放方式
retry_files_enabled = false
retry_files_save_path = ~.ansible-retry #
錯誤重新開機檔案存放目錄
…
上述是日常可能用到的配置,這些多數保持預設即可。
(2)[privilege_escalation]
出于安全角度考慮,部分公司不希望直接以root的進階管理者權限直接部署應用,往往會開放普通使用者權限并給予sudo的權限,該部配置設定置主要針對sudo使用者提權的配置。
[privilege_escalation]
# become=true # 是否sudo
become_method=sudo # sudo方式
become_user=root # sudo後變為root使用者
become_ask_pass=false # sudo後是否驗證密碼
(3)[paramiko_connection]
定義paramiko_connection配置,該部分功能不常用,了解即可。
[paramiko_connection] # 該配置不常用到
record_host_keys=false # 不記錄新主機的key以提升效率
# pty=false # 禁用sudo功能
(4)[ssh_connection]
ansible預設使用ssh協定連接配接對端主機,該部署是主要是ssh連接配接的一些配置,但配置項較少,多數預設即可。
[ssh_connection]
# pipelining =
false # 管道加速功能,需配合requiretty使用方可生效
(5)[accelerate]
ansible連接配接加速相關配置。因為有部分使用者不滿意ansible的執行速度,是以ansible在連接配接和執行速度方面也在不斷地進行優化,該配置項在提升ansibile連接配接速度時會涉及,多數保持預設即可。
[accelerate]
accelerate_port = 5099 # 加速連接配接端口
accelerate_timeout = 30 # 指令執行逾時時間,機關秒
accelerate_connect_timeout = 5.0 # 連接配接逾時時間,機關秒
accelerate_daemon_timeout = 30 # 上一個活動連接配接的時間,機關分鐘
accelerate_multi_key = yes
(6)[selinux]
關于selinux的相關配置幾乎不會涉及,保持預設配置即可。
[selinux]
libvirt_lxc_noseclabel = yes
(7)[colors]
ansible對于輸出結果的顔色也進行了詳盡的定義且可配置,該選項對日常功能應用影響不大,幾乎不用修改,保持預設即可。
[colors]
# highlight =
white
# verbose = blue
# warn = bright
purple
# error = red
# debug = dark
gray
# deprecate =
# skip = cyan
# unreachable =
red
# ok = green
# changed =
yellow
# diff_add =
green
# diff_remove =
# diff_lines =
cyan
上面盡可能全地介紹了運維工作中可能需要修改的配置選項,除了在關閉首次連接配接提示(host_key_checking = false)或提速調整([accelerate]區域塊配置調整)時可能會稍做調整,其中絕大多數選項預設即可,ansible安裝好後無需任何改動即可使用。