Help us understand the problem. What is going on with this article?

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

More than 3 years have 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

h_matsuno1028
前職は大手SIerでインフラエンジニアとして働き,今は電機メーカーでソフトウェアエンジニアとしてクラウドに携わる仕事をしています.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした