share facebook facebook2 twitter menu hatena pocket slack

2014.06.23 MON

CONFIGの詳細

sebastian

WRITTEN BYsebastian

The Ansible Configuration Fileに細かく記載があるので一つづつ追っていってみます。
何が指定できるのかを把握してしておきましょ

defaults

コマンドラインで指定できる値のデフォルトなどが格納されてる

hostfile

前述のinventoryのhostsファイルのpathの指定です

library

モジュールの格納場所を指定
コロン区切りで複数指定可能で指定したディレクトリ配下のサブディレクトリ内からも探しに行きます。
デフォルトだと/usr/share/ansibleに指定されています。
The Ansible Configuration Fileによるとモジュールの格納場所を指定だそうです。
brewでインストールした場合に実際は/usr/local/Cellar/ansible/1.6.2/share/ansibleに格納されているのでシンボリックリンクを作るかlibraryを書き換えます。

ln -s /usr/local/Cellar/ansible/1.6.2/share/ansible /usr/share/ansible

remote_tmp

接続先マシンの作業ディレクトリを指定

pattern

デフォルトで対象とするhosts内のグループを指定します。
*の指定で全てのグループを対象とします

forks

並行プロセスのナンバーと書いてあるが実際は同時実行並行プロセス数かと思われる
値が大きいほど同時に扱うことが出来るホスト数が増える
初期値は5でかなり保守的なので50程度、多ければ500くらいでも構わないと記載がある。

poll_interval

Ansibleの非同期タスク用のpoll intervalを指定
デフォルトは15秒が指定されてます。

sudo_user

リモートホストでのsudoのユーザー指定
デフォルトはrootユーザー
コマンドライン引数–sudo-userにもplaybookモジュールのsudo_userにも指定がない場合にはここで指定した値が利用されます

ask_sudo_pass

リモートにsudoコマンドを投げる際にパスワードの入力を促すか指定する。

ask_pass

リモートホストにログインする際にパスワードを求めるか指定する

transport

リモートホストとの接続方法を指定
コマンドラインで-c <transport_name>が指定されない場合はここで指定した値になる

指定
smart
ssh
local
chroot
jail

デフォルトはsmart

remote_port

inventoryにてポートが指定されていないリモートホストに対して使用するsshのポート番号を指定します
無指定の場合はデフォルトで22が用いられます。

module_lang

モジュール⇔システム間の既定の言語を指定。デフォルトはC

gathering

最初はfact(普通に訳すと事実になる)を収集すると読んでfactってなんだ?と思ったが

接続先リモートホストのシステム情報(fact,facter)を収集するか否かを指定
facterまたはohaiがインストールされていれば、これらのプログラムからの変数も集めるようになります。
gatherに関してはGathers facts about remote hostに情報があります。

指定 説明
smart 既にシステム情報が収集されていれば再度収集を行いません
implicit システム情報の収集を行いません
explicit システム情報の収集を行います 

デフォルトではimplicitが指定されています。
多分、Chef,Puppetからの移行向け。

roles_path

playbookのroleのパスを指定します。
roleに関してはPlaybook Roles and Inclue Statementsに記載あり

host_key_checking

sshにて接続時にknown_hostsのキーの確認を行うかを指定します。
デフォルトではtrueです。

sudo_exe

sudoコマンドを別のコマンドに差し替える場合にはここで指定します。

sudo_flags

sudoコマンドに渡すオプショナルフラグです。
デフォルトでは-Hが指定されています。

timeout

ssh接続のタイムアウト時間

remote_user

inventoryにてポートが指定されていないリモートホストに対して使用する接続時のユーザー名

log_path

ログの保管先を指定します。
デフォルトでオフなのはリモートマシンのsyslogにコマンドログ残ってるから無意味だって意味

module_name

デフォルトのモジュール名
コマンドラインで-mが指定されなかった時に使われる値
無指定の場合はcommandモジュールが指定される。

executable

リモートホスト上で実行する実行コマンドの形式

executable=/bin/bash

hash_behaviour

Variableの格納されているhashリストをマージするか上書きするかの指定
デフォルトはreplace

  • 上書き : replace
  • マージ : merge

jinja2_extensions

jinja2 extensionを追加する為の設定

jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n

これが何してるか分からんなら多分、お前にはこいつを変更する必要は無いわって書いてる

private_key_file

デフォルトで使用するSSHの秘密鍵のファイルパスを指定

ansible_managed

display_skipped_hosts

スキップされたタスクの表示の有無を指定
デフォルトは表示する

error_on_undefined_vars

ansible 1.3以降はデフォルトでon
変数が見つからない時にエラーを吐くかの設定

system_warnings

ansibleのワーニング出力の有無
リモートホストのそれではない

deprecation_warnings

非推奨設定に対しての警告の出力の有無
設定しておくと将来的に削除される予定の機能について出力を行います。

action_plugins

ansibleのmoduleのアクション拡張用のプラグインを配置するパスを指定します。
プラグインに関してはDeveloping Pluginsを見ろと書いてある。

callback_plugins

レスポンスに対しての振る舞いを定義したコールバックプラグインを配置するパスを指定します。
コールバックプラグインに関してはCallbackに書いてある。

connection_plugins

リモートホストとの接続プロトコルに関するプラグインを配置するパスを指定します
コネクションプラグインに関してはConnection Type Pluginsに書いてある。

lookup_plugins

playbookのLoops中のwith_fileglob / with_itemに関して
抽出を行うプラグインを配置するパスを指定します。

vars_plugins

playbook中に拡張変数を追加するプラグインを配置するパスを指定します。
Varsプラグインに関してはVars Pluginsに書いてある。

filter_plugins

jinja2テンプレートにて用いるfilterを追加するプラグインを配置するパスを指定します。
フィルタープラグインに関してはFilter Pluginsに書いてあります

nocows

cowsayのon/off
牛がしゃべるやつは要らないと思うならoffにする

on : 0
off : 1

nocolor

出力結果の色付けのon/off
onだとerrorが赤っぽくてsuccessが緑っぽい

on : 0
off : 1

ca_file_path

何故か公式サイトのDocumentに記載がないが
ansible.cfgを参照するとコメントとして

the CA certificate path used for validating SSL certs.

This path should exist on the controlling node, not the target nodes

と書いてあります。

要するにリモートホストのCA証明書のファイルパスを明示指定する項目

なお、各Distributionのデフォルトは以下のとおり

* RHEL/CentOS: /etc/pki/tls/certs/ca-bundle.crt
* Fedora     : /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
* Ubuntu     : /usr/share/ca-certificates/cacert.org/cacert.org.crt

http_user_agent

ここも何故か公式サイトのDocumentに載ってないです。

the http user-agent string to use when fetching urls.

Some web server
operators block the default urllib user agent as it is frequently used
by malicious attacks/scripts, so we set it to something unique to
avoid issues.

と書いてある。

要するにurlの取得などを行うときにurllib等がユーザーエージェントで封鎖されている場合があるため
ユーザーエージェントを独自に設定する為の項目との事だ。

paramiko_connection

record_host_keys

ホストの鍵を保存するか否かの設定
デフォルトはtrue

pty

ここも公式サイトのDocumentに記載がない

コメントの記載は以下のとおり

by default, Ansible requests a pseudo-terminal for commands executed under sudo.

Uncomment this line to disable this behaviour.

sudo下で実行されたコマンド用に擬似的にターミナルを要求するかと言う設定
デフォルトはTrue

ssh_connection

ssh_args

sshに渡す引数の値を指定します。

例えばレスポンスまで時間のかかるコマンドを実行する時にControlPersistを設定する等で使用する。

ssh_args = -o ControlMaster=auto -o ControlPersist=60s

control_path

SSHのコントロールパスソケットの保存先の指定

デフォルトでは以下のようになっている

control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r

このデフォルトの場合、パスが長すぎてファイルソケット名の文字制限に掛かる場合がある。

公式はEC2では頻発すると言っている。

pipelining

SSH上でのパイプライン処理の有無を指定
パイプライン処理を許可する事で応答のパフォーマンスの改善になるとのこと

scp_if_ssh

何故か公式サイトのDocumentに記載がない

if True, make ansible use scp if the connection type is ssh (default is sftp)

configファイルには上記のようにコメントが書いてあるので
ファイル転送に関して標準でsftpを用いているところをscpに変更する項目だと思われる。

sftp : False
scp : True

accelerate

以下、アクセラレータモード可での設定
何か高速実行モードらしい
まだよく分からんからこれから調べるわ

accelerate_port

accelerate_timeout

accelerate_connect_timeout

accelerate_daemon_timeout

accelerate_multi_key

元記事は、こちら

sebastian

sebastian