ansible.cfgのパラメータについて気になることがあって調べていたのですが、日本語の情報が少ないと感じたのでまとめてみようと思いました。
下記に示したのは、stable-2.2にサンプルとして入っている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ファイルを削除しない 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を使う 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: 対象ホストの情報を収集するが、すでに収集済みの場合は収集しない implicit: 対象ホストの情報を収集する。不要な場合はgather_facts: Falseを指定する explicit: 対象ホストの情報を収集しない。必要な場合はgather_facts: Trueを指定する |
gather_subset | 対象ホストの収集する情報を指定する | all | all: 全ての情報 network: ネットワークに関連する情報 hardware: ハードウェアに関連する情報 virtual: 仮想マシンに関連する情報 ohai: ohaiから収集できる情報 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: 結合する replace: 変数の優先度が高い方で上書きされる (参考) Variables |
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: ホスト間で同期をとってタスクを進行する free: ホスト間で同期をとらず、タスクが早く終わったホストから先のタスクに進む |
bin_ansible_callbacks | ansibleコマンドを実行した際にコールバックをロードするかを指定 | False | |
nocows | ログをcowsayで出力するかを指定 | 1 | 0: 無効 1: 有効 1に設定していてもcowsayをインストールしていないと意味がありません |
cow_selection | cowsayの種類を指定 | default | |
nocolor | 実行結果に色をつけるかを指定 | 0 | 0:色つけ有り 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を指定 0:圧縮なし 9: zlibで圧縮 |
module_compression | moduleの圧縮レベルを指定 | ZIP_DEFLATED | ZIP_STORED:圧縮なし ZIP_DEFLATED: zlibで圧縮 |
merge_multiple_cli_flags | 複数のタグを認識するかを指定 | True: 全てのタグを認識してタスクを実行 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のみ False: sftpのみ 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 |