Posted at
AnsibleDay 16

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

More than 1 year has passed since last update.

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


参考情報

Configuration file