The Ansible Configuration Fileに細かく記載があるので一つづつ追っていってみます。
何が指定できるのかを把握してしておきましょ
defaults
コマンドラインで指定できる値のデフォルトなどが格納されてる
前述のinventoryのhostsファイルのpathの指定です
モジュールの格納場所を指定
コロン区切りで複数指定可能で指定したディレクトリ配下のサブディレクトリ内からも探しに行きます。
デフォルトだと/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
接続先マシンの作業ディレクトリを指定
デフォルトで対象とするhosts内のグループを指定します。
*の指定で全てのグループを対象とします
並行プロセスのナンバーと書いてあるが実際は同時実行並行プロセス数かと思われる
値が大きいほど同時に扱うことが出来るホスト数が増える
初期値は5でかなり保守的なので50程度、多ければ500くらいでも構わないと記載がある。
Ansibleの非同期タスク用のpoll intervalを指定
デフォルトは15秒が指定されてます。
リモートホストでのsudoのユーザー指定
デフォルトはrootユーザー
コマンドライン引数–sudo-userにもplaybookモジュールのsudo_userにも指定がない場合にはここで指定した値が利用されます
リモートにsudoコマンドを投げる際にパスワードの入力を促すか指定する。
リモートホストにログインする際にパスワードを求めるか指定する
リモートホストとの接続方法を指定
コマンドラインで-c
指定 |
---|
smart |
ssh |
local |
chroot |
jail |
デフォルトはsmart
inventoryにてポートが指定されていないリモートホストに対して使用するsshのポート番号を指定します
無指定の場合はデフォルトで22が用いられます。
モジュール⇔システム間の既定の言語を指定。デフォルトはC
最初はfact(普通に訳すと事実になる)を収集すると読んでfactってなんだ?と思ったが
接続先リモートホストのシステム情報(fact,facter)を収集するか否かを指定
facterまたはohaiがインストールされていれば、これらのプログラムからの変数も集めるようになります。
gatherに関してはGathers facts about remote hostに情報があります。
指定 | 説明 |
---|---|
smart | 既にシステム情報が収集されていれば再度収集を行いません |
implicit | システム情報の収集を行いません |
explicit | システム情報の収集を行います |
デフォルトではimplicitが指定されています。
多分、Chef,Puppetからの移行向け。
playbookのroleのパスを指定します。
roleに関してはPlaybook Roles and Inclue Statementsに記載あり
sshにて接続時にknown_hostsのキーの確認を行うかを指定します。
デフォルトではtrueです。
sudoコマンドを別のコマンドに差し替える場合にはここで指定します。
sudoコマンドに渡すオプショナルフラグです。
デフォルトでは-Hが指定されています。
ssh接続のタイムアウト時間
inventoryにてポートが指定されていないリモートホストに対して使用する接続時のユーザー名
ログの保管先を指定します。
デフォルトでオフなのはリモートマシンのsyslogにコマンドログ残ってるから無意味だって意味
デフォルトのモジュール名
コマンドラインで-mが指定されなかった時に使われる値
無指定の場合はcommandモジュールが指定される。
リモートホスト上で実行する実行コマンドの形式
executable=/bin/bash
Variableの格納されているhashリストをマージするか上書きするかの指定
デフォルトはreplace
- 上書き : replace
- マージ : merge
jinja2 extensionを追加する為の設定
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n
これが何してるか分からんなら多分、お前にはこいつを変更する必要は無いわって書いてる
デフォルトで使用するSSHの秘密鍵のファイルパスを指定
スキップされたタスクの表示の有無を指定
デフォルトは表示する
ansible 1.3以降はデフォルトでon
変数が見つからない時にエラーを吐くかの設定
ansibleのワーニング出力の有無
リモートホストのそれではない
非推奨設定に対しての警告の出力の有無
設定しておくと将来的に削除される予定の機能について出力を行います。
ansibleのmoduleのアクション拡張用のプラグインを配置するパスを指定します。
プラグインに関してはDeveloping Pluginsを見ろと書いてある。
レスポンスに対しての振る舞いを定義したコールバックプラグインを配置するパスを指定します。
コールバックプラグインに関してはCallbackに書いてある。
リモートホストとの接続プロトコルに関するプラグインを配置するパスを指定します
コネクションプラグインに関してはConnection Type Pluginsに書いてある。
playbookのLoops中のwith_fileglob / with_itemに関して
抽出を行うプラグインを配置するパスを指定します。
playbook中に拡張変数を追加するプラグインを配置するパスを指定します。
Varsプラグインに関してはVars Pluginsに書いてある。
jinja2テンプレートにて用いるfilterを追加するプラグインを配置するパスを指定します。
フィルタープラグインに関してはFilter Pluginsに書いてあります
cowsayのon/off
牛がしゃべるやつは要らないと思うならoffにする
on : 0
off : 1
出力結果の色付けの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
ホストの鍵を保存するか否かの設定
デフォルトは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に渡す引数の値を指定します。
例えばレスポンスまで時間のかかるコマンドを実行する時にControlPersistを設定する等で使用する。
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
SSHのコントロールパスソケットの保存先の指定
デフォルトでは以下のようになっている
control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r
このデフォルトの場合、パスが長すぎてファイルソケット名の文字制限に掛かる場合がある。
公式はEC2では頻発すると言っている。
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
元記事は、こちら