ansible.cfgの項目をリスト化してみた

ansible.cfgのパラメータについて気になることがあって調べていたのですが、日本語の情報が少ないと感じたのでまとめてみようと思いました。

下記に示したのは、stable-2.2にサンプルとして入っている[ansible.cfg](https://github.com/ansible/ansible/blob/stable-2.2/examples/ansible.cfg)から値を抜き出しています。（実際にはここに書いてないパラメータなどもいろいろあります）

バージョンによっては使えないものがあったり、デフォルトの値が違う場合もあるので注意してください。

## defaultsセクション
|パラメータ|項目|デフォルト値|備考|
|:--|:--|:--|:--|
|inventory|インベントリのパスを指定|/etc/ansible/hosts|-iで指定可能|
|library|自作モジュールを読み込ませる場合にパスを指定|/usr/share/ansible|-Mで指定可能|
|remote_tmp|リモートホストのtmpディレクトリを指定（リモートホストで実行されるスクリプトが一時的に配置される）|$HOME/.ansible/tmp|ANSIBLE_KEEP_REMOTE_FILES=1を指定するとtmpファイルを削除しない <br> local_actionでローカルに対してスクリプトを配置する際も、このパラメータで指定したローカルのディレクトリが適用される|
|local_tmp|リモートにモジュールを転送する前に、必要な変数等を一時的に格納するディレクトリを指定|$HOME/.ansible/tmp||
|forks|並列実行する数を指定|5||
|poll_interval|非同期タスク用のインターバルを指定|15||
|sudo_user|sudoで実行するユーザを指定|root||
|ask_sudo_pass|ssh時のsudoのパスワードを聞くかどうかを指定|False|True or False(yes or no)|
|ask_pass|ssh時にパスワードを対話的に入力するかを指定|False|True or False(yes or no)|
|transport|sshの接続設定を指定|smart|smart:ControlPersist(OpenSSH5.6以上の場合)が利用可能な場合はOpenSSHを使い、そうでない場合はparamikoを使う <br> paramiko: paramikoを使う|
|remote_port|リモートのポート番号を指定|22||
|module_lang|モジュール間のやりとりで使う言語を指定|(Ansible実行マシンと同様の値、セットされていない場合はen_US.UTF-8, 古いバージョンではC)||
|module_set_locale|ロケール変数の設定の可否を指定|False|Ansible2.1で追加されたパラメータで、2.1ではデフォルトの値はTrue|
|gathering|対象ホストの情報を集めるか否かを指定|smart|smart: 対象ホストの情報を収集するが、すでに収集済みの場合は収集しない<br> implicit: 対象ホストの情報を収集する。不要な場合はgather_facts: Falseを指定する <br> explicit: 対象ホストの情報を収集しない。必要な場合はgather_facts: Trueを指定する|
|gather_subset|対象ホストの収集する情報を指定する|all|all: 全ての情報<br> network: ネットワークに関連する情報 <br> hardware: ハードウェアに関連する情報 <br> virtual: 仮想マシンに関連する情報 <br> ohai: ohaiから収集できる情報 <br> facter: facterから収集できる情報|
|gather_timeout|ホストから情報を収集する場合のタイムアウト値を指定|30||
|roles_path|別のplaybook等のroleを使う場合にパスを指定|/etc/ansible/roles|playbook内のrolesディレクトリ配下は自動で読み込まれる|
|host_key_checking|known_hostsのkeyをチェックするかを指定|True|known_hostsの情報が変わった場合等、Trueにしているとエラーとなる|
|stdout_callback|デフォルトのコールバックを指定|skippy||
|callback_whitelist|上記で指定したコールバック以外を有効にしたりしたい場合に指定|timer, mail||
|task_includes_static|タスクを静的にincludeするかを指定|False|Ansible 2.0からは動的にincludeされるようになっている|
|handler_includes_static|ハンドラを静的にincludeするかを指定|False|同上|
|error_on_missing_handler|ハンドラが存在しない場合にエラーを出力するかを指定|True||
|sudo_exe|デフォルトのsudo以外を利用する場合に指定する|sudo||
|sudo_flags|sudoのオプションを指定|-H -S -n||
|timeout|SSHのタイムアウトの時間|10||
|remote_user|リモートユーザ名を指定|指定しない場合、Ansible実行ユーザがデフォルト値となる||
|log_path|実行結果のログを保存するパスを指定|/var/log/ansible.log|Ansible実行ユーザが、指定したディレクトリの権限を持っていないとエラーとなるので注意|
|module_name|ansibleコマンドの-mオプションで、モジュールを指定しなかった場合に実行されるモジュールを指定|command||
|executable|sudo環境で使うシェルを指定|/bin/bash||
|hash_behaviour|同名のハッシュ（Pythonでいう辞書)が複数箇所で宣言されていた場合の挙動を指定|merge|merge: 結合する <br> replace: 変数の優先度が高い方で上書きされる　<br> (参考) [Variables](http://docs.ansible.com/ansible/playbooks_variables.html)|
|private_role_vars|role内で呼び出された変数を他roleでも共有するかを指定する|yes||
|jinja2_extensions|jinja2のextensionを指定|jinja2.ext.do,jinja2.ext.i18n||
|private_key_file|SSH接続で使う秘密鍵のファイルのパスを指定|/path/to/file||
|vault_password_file|Vaultパスワードファイルのパスを指定|/path/to/vault_password_file||
|ansible_managed|templateモジュールで操作するファイルに挿入する文字列を指定|Ansible managed||
|display_skipped_hosts|skippedになったタスクを表示するかを指定|True||
|display_args_to_stdout|各タスクで使われる変数を表示するかを指定する|False|セキュリティ上の理由からデフォルトではオフになっている|
|error_on_undefined_vars|未定義の変数が存在した場合に、エラーでタスクを中断するかを指定|True||
|system_warnings|システムに関する警告を出力するかを指定|True||
|deprecation_warnings|Deprecation(古いバージョンの文法等で記載されており、将来的に使えなくなる可能性のある表記)が存在する場合に、警告を表示するかを指定|True|表示しておかないと、Ansibleのバージョンアップをした際に急にエラーになることも…|
|command_warnings|commandモジュールで指定したコマンドが、既にモジュールとして存在している場合に警告を出すか指定(例えば、commandモジュールでserviceコマンドを実行する場合など)|True||
|action_plugins|action_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/action||
|cache_plugins|cache_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/cache||
|callback_plugins|callback_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/callback||
|connection_plugins|connection_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/connection||
|lookup_plugins|lookup_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/lookup||
|inventory_plugins|inventory_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/inventory||
|vars_plugins|vars_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/vars||
|filter_plugins|filter_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/filter||
|test_plugins|test_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/test||
|strategy_plugins|strategy_pluginsのコードを配置するパスを指定|/usr/share/ansible/plugins/strategy||
|strategy|Ansibleの実行方式を指定する|linear|linear: ホスト間で同期をとってタスクを進行する <br> free: ホスト間で同期をとらず、タスクが早く終わったホストから先のタスクに進む|
|bin_ansible_callbacks|ansibleコマンドを実行した際にコールバックをロードするかを指定|False||
|nocows|ログをcowsayで出力するかを指定|1|0: 無効 <br> 1: 有効 <br>1に設定していてもcowsayをインストールしていないと意味がありません|
|cow_selection|cowsayの種類を指定|default||
|nocolor|実行結果に色をつけるかを指定|0|0:色つけ有り <br> 1: 色つけなし(ANSIBLE_NOCOLOR=1でも同様の挙動)|
|fact_caching|factのキャッシュ先を指定|無効|redis, memcached, memory, jsonfile|
|retry_files_enabled|タスクが失敗した場合に.retryファイルを作成するかどうかを指定|True||
|retry_files_save_path|.retryファイルを作成する場合のパスを指定|失敗したタスクを実行したPlaybookと同様のパス||
|squash_actions|with_で値を渡した際に、ループを回さずに1回で実行したいモジュールがある場合に指定(yum install xxx, yum install yyy -> yum install xxx, yyyとなるようなイメージ| apk,apt,dnf,homebrew,pacman,pkgng,yum,zypper||
|no_log|ログを出力するか指定| false|セキュリティの観点から出力したくない場合等に使う|
|no_target_syslog|targetでログを出力させない設定…だと思うんですが、いまいちわかりませんでした、すいません|False||
|allow_world_readable_tmpfiles|Ansibleで実行するスクリプトを全ユーザに読み取り権限を付与するかを指定|False|Ansible2.1からは管理者権限がないユーザでは、リモートに配置するスクリプトにアクセスできなくなった。このパラメータを設定することで、以前のバージョンのように、管理者権限がないユーザでも実行できるようになる|
|var_compression_level|変数の圧縮レベルを指定|0|0〜9を指定 <br>0:圧縮なし <br> 9: zlibで圧縮|
|module_compression|moduleの圧縮レベルを指定|ZIP_DEFLATED|ZIP_STORED:圧縮なし <br>ZIP_DEFLATED: zlibで圧縮|
|merge_multiple_cli_flags|複数のタグを認識するかを指定||True: 全てのタグを認識してタスクを実行 <br>False: 最後に指定したタグのタスクを実行|

## privilege_escalationセクション
|パラメータ|項目|デフォルト値|備考|
|:--|:--|:--|:--|
|become|管理者権限(su or sudo)でタスクを実行するかを指定|False||
|become_method|管理者権限を使うためのコマンドを指定|sudo|su, pbrun, pfexec, doas, ksu|
|become_user|管理者権限を持っているどのユーザになるかを指定|root||
|become_ask_pass|管理者権限になるためにパスワードを聞くかを指定|False||

## paramiko_connectionセクション
|パラメータ|項目|デフォルト値|備考|
|:--|:--|:--|:--|
|record_host_keys|known_hostsにキーを登録するかを指定|True|host_key_checkingもTrueにしていないと意味がない|
|pty|擬似端末を使うかどうかを指定|True||

## ssh_connectionセクション
|パラメータ|項目|デフォルト値|備考|
|:--|:--|:--|:--|
|ssh_args|sshの引数を指定|-C -o ControlMaster=auto -o ControlPersist=60s||
|control_path_dir|control pathソケットを保持するパスを指定|/tmp/.ansible/cp||
|pipelining|sshを多重化するかを指定|False|多重化するとスクリプトの転送が早くなるが、requirettyを無効にする必要があるため、デフォルトではFalseになっている|
|scp_if_ssh|scpでファイルを転送するかを指定|smart|True: scpのみ <br>False: sftpのみ <br> smart: 通常はsftpを使い、sftpが使えない場合はscpを使う|
|stfp_batch_mode|sftpのバッチモードを使うかを指定|False||

## accelerateセクション
|パラメータ|項目|デフォルト値|備考|
|:--|:--|:--|:--|
|accelerate_port|accelerateモードで使用するポートを指定|5099|accelerateモードとは、Ansible独自のデーモンを通じてデータを転送することで、速度を向上させるモード|
|accelerate_timeout|accelerateモードのタイムアウト値を指定|30||
|accelerate_connect_timeout|accelerateモードの接続タイムアウト値を指定|5.0||
|accelerate_daemon_timeout|accelerateモードのデーモンの生存期間を分単位で指定|30||
|accelerate_multi_key|デーモンに複数の鍵を登録するかどうかを指定|yes||

## selinuxセクション
|パラメータ|項目|デフォルト値|備考|
|:--|:--|:--|:--|
|special_context_filesystem|ファイルシステム依存のセキュリティコンテキストがある場合に、そのファイルシステムを指定|nfs,vboxsf,fuse,ramfs||
|libvirt_lxc_noseclabel|libvirtがLXCに接続するのを許可するかを指定|False||

## colorsセクション
|パラメータ|項目|デフォルト値|備考|
|:--|:--|:--|:--|
|verbose|ログの詳細表示を出力する色を指定|blue||
|warn|警告のログを出力する色を指定|bright purple||
|error|エラーのログを出力する色を指定|red||
|debug|debugのログを出力する色を指定|dark gray||
|deprecate|deprecateのログを出力する色を指定|purple||
|skip|skipのログを出力する色を指定|cyan||
|unreachable|targetに到達できなかった場合のログを出力する色を指定|red||
|ok|OKのログを出力する色を指定|green||
|changed|changedのログを出力する色を指定|yellow||
|diff_add|増分のログを出力する色を指定|green||
|diff_remove|差分のログを出力する色を指定|red||
|diff_lines|変化分の行を出力する色を指定|cyan||

## 参考情報
[Configuration file](http://docs.ansible.com/ansible/intro_configuration.html#local-tmp)