変数の定義

プレイブック内の設定値を環境によって柔軟に変えられるよう変数が用いられます。
変数には大きくgroup_varsに定義するグループ単位の環境変数、
host_varsに定義するホストサーバ単位の変数があります。

変数の割り当て処理は下記のように処理されていき、 末端に定義してある変数から優先的に処理されていくようになっています。

  • extra vars
  • タスクのvars
  • ブロックのvars
  • ロールのvars/includeした変数ファイル
  • set_facts
  • 処理でregisterした変数
  • 処理内vars_filesで指定のファイルで定義された変数
  • 処理内vars_promptでプロンプトから渡された変数
  • 処理内のvarsで定義された変数
  • ファクト(setupで拾ってきた値)
  • Playbookで定義されたhost_vars
  • Playbookで定義されたgroup_vars
  • インベントリで定義されたhost_vars
  • インベントリで定義されたgroup_vars
  • インベントリで定義された変数
  • ロールのデフォルト(/roles/~/defaults/main.yml)


group_vars


まず大きなくくりで環境に合わせた設定を行っていきます。 group_vars内には下記のような単位でグループ分けされています。 このグループ名はhostsに格納したグループ名とリンクしています。

  • group_vars
    • all
    • production
    • stage
    • develop

各ファイルの意味は同様、allのみ特別な変数定義ファイルとなっています。
変数の処理順序にあるようにallで定義された変数はどのような環境であっても最後に必ず読み込まれるファイルになっています。
そのためデフォルト変数を定義するファイルとして利用されます。
allファイルはデフォルト変数を定義、管理するファイルのため、
利用案件ごとにセットアップするときに編集する事はありません。

逆にallファイルには全てのプレイブック用変数が定義してあるため、
内容を確認し、上書きしたい変数を各グループファイルに定義していきます。

例えばSSHの場合デフォルトallではrootログインが出来ないように設定する変数となっていますが、

# vim group_vars/all
sshd_rootlogin: 'no'

開発環境ではその制限が不要の場合、下記のように記載します。

# group_vars/develop
sshd_rootlogin: 'yes'


host_vars


ホスト単位で変数を変更したい場合にhost_varsに変数を格納します。
host_varsに格納するホスト変数ファイルはhosts`に記載したホスト名とリンクしています。

例えばhosts/productionにて下記のように定義していた場合

[webservers]
pweb-01 ansible_ssh_host=192.168.153.11

このホストに対して変数を定義するファイルはhost_vars/pweb-01として格納します。

results matching ""

    No results matching ""