Ansible的一些的設置能夠經過配置文件完成.在大多數場景下默認的配置就能知足大多數用戶的需求,在一些特殊場景下,用戶仍是須要自行修改這些配置文件html
用戶能夠修改一下配置文件來修改設置,他們的被讀取的順序以下:python
ANSIBLE_CONFIG (一個環境變量)
ansible.cfg (位於當前目錄中)
.ansible.cfg (位於家目錄中)
/etc/ansible/ansible.cfg
版本1.5以前的讀取順序以下:linux
ansible.cfg (位於當前目錄)
ANSIBLE_CONFIG (一個環境變量)
.ansible.cfg (位於家目錄下)
/etc/ansible/ansible.cfg
Ansible 將會按以上順序逐個查詢這些文件,直到找到一個爲止,而且使用第一個尋找到個配置文件的配置,這些配置將不會被疊加.git
若是使用程序包管理器安裝ansible,最新的 ansible.cfg 配置文件有可能出如今 /etc/ansible 下而且命名爲 」.rpmnew」, 也可能根據不一樣的更新命名爲其它名稱github
若是你是經過 pip 或者其餘方式安裝,則可能須要自行建立這個文件,以避免原配置文件被覆蓋.Ansible 的默認設置將會將其覆蓋shell
配置文件的詳細參數以及取值範圍請查看`ansible.cfg <https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg>`_express
Ansible 經過環境變量的形式來進行配置.這些設置後的環境變量將會覆蓋掉全部配置文件讀取的配置.爲了節省篇幅,這些變量沒有被列在這裏,詳情請見源代碼目錄中的 ‘constants.py’. 相對於配置文件它門會比看成遺產系統(legacy system) 來被使用,可是仍然有效數組
配置文件被切割成了不一樣段.多數配置選項位於「general」段, 也有一些屬於特定的連接類型(connection type)bash
在 [defaults] 段中,一下選項是能夠調節的:網絡
「行爲」是 ansible中的一段代碼,用來激活一些事件,例如執行一個模塊,一個模版,等等
這是一個以開發者爲中心的特性,使得一些底層模塊能夠從外部不一樣地方加載:
action_plugins = ~/.ansible/plugins/action_plugins/:/usr/share/ansible_plugins/action_plugins
大多數用戶都會使用這一特性.
Ansible-managed 是一個字符串.能夠插入到Ansible配置模版系統生成的文件中.若是你使用如下的自字符:
{{ ansible_managed }}
默認設置能夠哪一個用戶修改和修改時間:
ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}
這個設置能夠告知用戶,Ansible修改了一個文件,而且手動寫入的內容可能已經被覆蓋.
須要注意的是,若是使用這一特性,這個字符串中將包含一個日期註釋,若是日期更新,模版系統將會在每一次報告文件修改.
ask_pass=True
若是使用SSH 密鑰匙作身份認證.可能須要修改這一參數
相似 ask_pass,用來控制Ansible playbook 在執行sudo以前是否詢問sudo密碼.默認爲no:
ask_sudo_pass=True
若是用戶使用的系統平臺開啓了sudo 密碼的話,應該開綠這一參數
New in version 1.8.
用來控制callback插件是否在運行 /usr/bin/ansible 的時候被加載. 這個模塊將用於命令行的日誌系統,發出通知等特性. Callback插件若是存在將會永久性的被 /usr/bin/ansible-playbook 加載,不能被禁用:
bin_ansible_callbacks=False
1.8 版本以前,callbacks 插件不能夠被 /usr/bin/ansible加載. .. _callback_plugins:
Callbacks 在ansible中是一段代碼,在特殊事件時將被調用.而且容許出發通知. 這是一個以開發者爲中心的特性,能夠實現對Ansible的底層拓展,而且拓展模塊能夠位於任何位置:
callback_plugins = ~/.ansible/plugins/callback_plugins/:/usr/share/ansible_plugins/callback_plugins
大多數的用戶將會用到這一特性.
New in version 1.8.
從Ansible 1.8 開始,當shell和命令行模塊被默認模塊簡化的時,Ansible 將默認發出警告. 這個包含提醒使用’git’但不是經過命令行執行.使用模塊調用比冒然使用命令行調用可使playbook工做更具備一致性也更加可靠同時也更加便於維護:
command_warnings = False
咱們能夠經過在命令行末尾添加 warn=yes 或者 warn=no選項來控制是否開啓警告提示:
- name: usage of git that could be replaced with the git module
shell: git update foo warn=yes
鏈接插件容許拓展ansible拓展通信信道,用來傳輸命令或者文件. 這是一個開發者中心特性,拓展插件能夠從任何不一樣地方加載:
connection_plugins = ~/.ansible/plugins/connection_plugins/:/usr/share/ansible_plugins/connection_plugins
大多數用戶會用到這一特性, 詳見:Developing Plugins .. _deprecation_warnings:
New in version 1.3.
容許在ansible-playbook輸出結果中禁用「不建議使用」警告:
deprecation_warnings = True
「不建議警告」指的是使用一些在新版本中可能會被淘汰的遺留特性.
display_skipped_hosts=True
注意Ansible 老是會顯示任何任務的頭文件, 無論這個任務被跳過與否.
error_on_undefined_vars=True
If set to False, any ‘{{ template_expression }}’ that contains undefined variables will be rendered in a template or ansible action line exactly as written.
executable = /bin/bash
過濾器是一種特殊的函數,用來拓展模版系統 .
這是一個開發者核心的特性,容許Ansible從任何地方載入底層拓展模塊:
filter_plugins = ~/.ansible/plugins/filter_plugins/:/usr/share/ansible_plugins/filter_plugins
Most users will not need to use this feature. See Developing Plugins for more details 大部分用戶不會用到這個特性,詳見:doc:developing_plugins.
force_color = 1
New in version 1.9.1.
即使這個用戶崩潰,這個選項仍能夠繼續運行這個用戶
force_handlers = True
The default is False, meaning that handlers will not run if a failure has occurred on a host. This can also be set per play or on the command line. See _handlers_and_failure for more details. 若是這個選項是False. 若是一個主機崩潰了,handlers將不會再運行這個主機.這個選項也能夠經過命令行臨時使用.詳見:doc:_handlers_and_failure.
這個選項設置在與主機通訊時的默認並行進程數.從Ansible 1.3開始,fork數量默認自動設置爲主機數量或者潛在的主機數量, 這將直接控制有多少網絡資源活着cpu能夠被使用.不少用戶把這個設置爲50,有些設置爲500或者更多.若是你有不少的主機, 高數值將會使得跨主機行爲變快.默認值比較保守:
_forks=5
1.6版本中的新特性,這個設置控制默認facts收集(遠程系統變量). 默認值爲’implicit’, 每一次play,facts都會被手機,除非設置’gather_facts: False’. 選項‘explicit’正好相反,facts不會被收集,直到play中須要. ‘smart’選項意思是,沒有facts的新hosts將不會被掃描, 可是若是一樣一個主機,在不一樣的plays裏面被記錄地址,在playbook運行中將不會通訊.這個選項當有需求節省fact收集時比較有用.
Ansible 默認將會以一種特定的優先級覆蓋變量,詳見:doc:playbooks_variables.擁有更高優先級的參數將會覆蓋掉其餘參數
有些用戶但願被hashed的參數(python 中的數據結構’dictionaries’)被合併. 這個設置叫作‘merge’.這不是一個默認設置,並且不影響數組類型的數組.我不建議使用這個設置除非你以爲必定須要這個設置.官方實例中不使用這個選項:
hash_behaviour=replace
合法的值爲’replace’(默認值)或者‘merge’.
在1.9版本中,這不是一個合法設置.詳見:ref:inventory.
這個特性詳見:doc:intro_getting_started,在Ansible 1.3或更新版本中將會檢測主機密鑰. 若是你瞭解怎麼使用而且但願禁用這個功能,你能夠將這個值設置爲False:
host_key_checking=True
這個事默認庫文件位置,腳本,或者存放可通訊主機的目錄:
inventory = /etc/ansible/hosts
在1.9版本中被叫作hostfile.
這是一個開發者中心特性,容許開啓Jinja2拓展模塊:
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n
若是你不太清楚這些都是啥,仍是不要改的好:)
這個事Ansible默認搜尋模塊的位置:
library = /usr/share/ansible
Ansible知道如何搜尋多個用冒號隔開的路徑,同時也會搜索在playbook中的「./library」.
若是出如今ansible.cfg文件中.Ansible 將會在選定的位置登錄執行信息.請留意用戶運行的Ansible對於logfile有權限:
log_path=/var/log/ansible.log
這個特性不是默認開啓的.若是不設置,ansible將會吧模塊加載紀錄在系統日誌系統中.不包含用密碼.
對於須要瞭解更多日誌系統的企業及用戶,你也許對:doc:tower 感興趣.
這是一個開發者中心選項,容許模塊插件在不一樣區域被加載:
lookup_plugins = ~/.ansible/plugins/lookup_plugins/:/usr/share/ansible_plugins/lookup_plugins
絕大部分用戶將不會使用這個特性,詳見:doc:developing_plugins
這是默認模塊和系統之間通訊的計算機語言,默認爲’C’語言.
這個是/usr/bin/ansible的默認模塊名(-m). 默認是’command’模塊. 以前提到過,command模塊不支持shell變量,管道,配額. 因此也許你但願把這個參數改成’shell’:
module_name = command
默認ansible會爲輸出結果加上顏色,用來更好的區分狀態信息和失敗信息.若是你想關閉這一功能,能夠把’nocolor’設置爲‘1’:
nocolor=0
默認ansible能夠調用一些cowsay的特性,使得/usr/bin/ansible-playbook運行起來更加愉快.爲啥呢,由於咱們相信系統應該是一 比較愉快的經歷.若是你不喜歡cows,你能夠統統過將’nocows’設置爲‘1’來禁用這一選項:
nocows=0
若是沒有提供「hosts」節點,這是playbook要通訊的默認主機組.默認值是對全部主機通訊,若是不想被驚嚇到,最好仍是設置個個選項:
hosts=*
注意 /usr/bin/ansible 一直須要一個host pattern,而且不使用這個選項.這個選項只做用於/usr/bin/ansible-playbook.
對於Ansible中的異步任務(詳見 異步操做和輪詢), 這個是設置定義,當具體的poll interval 沒有定義時,多少時間回查一下這些任務的狀態, 默認值是一個折中選擇15秒鐘.這個時間是個回查頻率和任務完成叫回頻率和當任務完成時的迴轉頻率的這種:
poll_interval=15
若是你是用pem密鑰文件而不是SSH 客戶端或祕密啊認證的話,你能夠設置這裏的默認值,來避免每一次提醒設置密鑰文件位置``–ansible-private-keyfile``:
private_key_file=/path/to/file.pem
這個設置是你係統默認的遠程SSH端口,若是不指定,默認爲22號端口:
remote_port = 22
Ansible 經過遠程傳輸模塊到遠程主機,而後遠程執行,執行後在清理現場.在有些場景下,你也許想使用默認路徑但願像更換補丁同樣使用, 這時候你可使用這個選項.:
remote_tmp = $HOME/.ansible/tmp
默認路徑是在用戶家目錄下屬的目錄.Ansible 會在這個目錄中使用一個隨機的文件夾名稱.
這是個ansible使用/usr/bin/ansible-playbook連接的默認用戶名. 注意若是不指定,/usr/bin/ansible默認使用當前用戶名稱:
remote_user = root
roles 路徑指的是’roles/’下的額外目錄,用於playbook搜索Ansible roles.好比, 若是咱們有個用於common roles源代碼控制倉庫和一個不一樣的 playbooks倉庫,你也許會創建一個慣例去在 /opt/mysite/roles 裏面查找roles.:
roles_path = /opt/mysite/roles
多餘的路徑能夠用冒號分隔,相似於其餘path字符串:
roles_path = /opt/mysite/roles:/opt/othersite/roles
Roles將會在playbook目錄中開始搜索.若是role沒有找到,這個參數指定了其它可能的搜索路徑.
若是在其餘遠程主機上使用另外一種方式執行sudo草作, sudo程序的路徑能夠用這個參數更換,使用命令行標籤來擬合標準sudo:
sudo_exe=sudo
當使用sudo支持的時候,傳遞給sudo而外的標籤. 默認值爲」-H」, 意思是保留原用戶的環境.在有些場景下也許須要添加或者刪除 標籤,大多數用戶不須要修改這個選項:
sudo_flags=-H
這個是sudo使用的默認用戶,若是``–sudo-user`` 沒有特指或者’sudo_user’ 在Ansible playbooks中沒有特指,在大多數的邏輯中 默認爲: ‘root’
sudo_user=root
New in version 1.6.
容許禁用系統運行ansible相關的潛在問題警告(不包括操做主機):
system_warnings = True
這個包括第三方庫或者一些須要解決問題的警告.
這個事默認SSH連接嘗試超時時間:
timeout = 10
若是」-c <transport_name>」 選項沒有在使用/usr/bin/ansible 或者 /usr/bin/ansible-playbook 特指的話,這個參數提供了默認通訊機制.默認 值爲’smart’, 若是本地系統支持 ControlPersist技術的話,將會使用(基於OpenSSH)‘ssh’,若是不支持講使用‘paramiko’.其餘傳輸選項包括‘local’, ‘chroot’,’jail’等等.
用戶一般能夠這個設置爲‘smart’,讓playbook在須要的條件本身選擇‘connectin:’參數.
這是一個開發者中心選項,容許底層拓展模塊從任何地方加載:
vars_plugins = ~/.ansible/plugins/vars_plugins/:/usr/share/ansible_plugins/vars_plugins
大部分的用戶不會用到這個特性,詳見:doc:developing_plugins
New in version 1.7.
這個用來設置密碼文件,也能夠經過命令行指定``–vault-password-file``:
vault_password_file = /path/to/vault_password_file
在1.7版本中,這個文件也能夠稱爲一個腳本的形式.若是你使用腳本而不是單純文件的話,請確保它能夠執行而且密碼能夠在標準輸出上打印出來.若是你的腳本須要提示請求數據,請求將會發到標準錯誤輸出中.
Paramiko 是商業版linux 6 的默認SSH連接.但在其餘平臺上不是默認使用的.請在[paramiko]頭文件下激活它.
默認設置會記錄並驗證經過在用戶hostfile中新發現的的主機(若是host key checking 被激活的話). 這個選項在有不少主機的時候將會性能不好.在 這種狀況下,建議使用SSH傳輸代替. 當設置爲False時, 性能將會提高,在hostkey checking 被禁用時候,建議使用.:
record_host_keys=True
在[ssh_connection]頭文件之下,用來調整SSH的通訊鏈接.OpenSSH是Ansible在操做系統上默認的通信鏈接,對於支持ControlPersist足夠新了.(意思除了Enterprise linux 6版以及更早的系統外的全部的操做系統).
若是設置了的話,這個選項將會傳遞一組選項給Ansible 然不是使用之前的默認值:
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
用戶能夠提升ControlPersist值來提升性能.30 分鐘一般比較合適.
這個是保存ControlPath套接字的位置. 默認值是:
control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r
在有些系統上面,會遇到很長的主機名或者很長的路徑名稱(也許由於很長的用戶名,或者比較深的家目錄),這些都會 超出套接字文件名字符上限(對於大多數平臺上限爲108個字符).在這種狀況下,你也許但願按照如下方式縮短字符串:
control_path = %(directory)s/%%h-%%r
Ansible 1.4 之後的版本會引導用戶在這種狀況下使用」-vvvv」參數,這樣很容易分辨 Control Path 文件名是否過長.這個 問題在EC2上會頻繁的遇到.
又是用戶操控一個一個沒有開啓SFTP協議的遠程系統.若是這個設置爲True,scp將代替用來爲遠程主機傳輸文件:
scp_if_ssh=False
若是沒有遇到這樣的問題沒有必要來修改這個設置.固然修改這個設置也沒有什麼明顯的弊端.大部分的系統環境都默認支持SFTP, 一般狀況下不須要修改.
在不經過實際文件傳輸的狀況下執行ansible模塊來使用管道特性,從而減小執行遠程模塊SSH操做次數.若是開啓這個設置,將顯著提升性能. 然而當使用」sudo:」操做的時候, 你必須在全部管理的主機的/etc/sudoers中禁用’requiretty’.
默認這個選項爲了保證與sudoers requiretty的設置(在不少發行版中時默認的設置)的兼容性是禁用的. 可是爲了提升性能強烈建議開啓這個設置.詳見:doc:playbooks_acceleration:
pipelining=False
在[accelerate]首部下, 如下設置能夠調整,詳見:doc:playbooks_acceleration.若是你不能在你的環境中開啓:ref:pipelining , Accelertation 是一個頗有用的性能特性. 可是若是你能夠開啓管道,這個選項也許對你無用.
New in version 1.3.
在急速模式下使用的端口:
accelerate_port = 5099
New in version 1.4.
這個設置時用來控制從客戶機獲取數據的超時時間.若是在這段時間內沒有數據傳輸,套接字鏈接會被關閉. 一個保持鏈接(keepalive)數據包一般每15秒回發回給控制檯,因此這個超時時間不該該低於15秒(默認值爲30秒):
accelerate_timeout = 30
New in version 1.4.
這個設置空着套接字調用的超時時間.這個應該設置相對比較短.這個和`accelerate_port`鏈接在回滾到ssh或者paramiko(受限於你默認的鏈接設置)鏈接方式以前會嘗試三次開始遠程加速daemon守護進程.默認設置爲1.0秒:
accelerate_connect_timeout = 1.0
注意,這個選項值能夠設置爲小於1秒鐘,可是除非你擁有一個速度很快並且很可靠的網絡,不然也許這樣並非一個很好的選擇.若是你使用英特網訪問你的系統,最好提升這個值.
New in version 1.6.
This setting controls the timeout for the accelerated daemon, as measured in minutes. The default daemon timeout is 30 minutes:: 這個控制加速daemon守護進程的超時時間,用分鐘來衡量.默認爲30分鐘:
accelerate_daemon_timeout = 30
注意, 在1.6版本以前,daemon發起的超時時間是硬編碼的.對於1.6之後的版本,超時時間是根據daemon上一次活動信息和這個可設置的選項.
New in version 1.6.
If enabled, this setting allows multiple private keys to be uploaded to the daemon. Any clients connecting to the daemon must also enable this option:: 若是這個選項開啓,這個設置將容許多個私鑰被加載到daemon. 任何客戶端要想鏈接daemon都須要開啓這個選項:
accelerate_multi_key = yes
經過本地套接字文件鏈接的經過SSH上傳密鑰文件到目標節點的新客戶端,必須在登錄daemon時使用原始的登錄密鑰登錄.