Ansibleの環境設定


Ansibleの環境設定は、Ansibleの設定ファイルを保存するディレクトリを作成する必要があります。

rpmでAnsibleをインストールした場合、/etc/ansibleに自動的に初期状態の環境が作成されます。
これをそのまま使うこともできますが、これをテンプレートにして任意の場所にコピーしてAnsibleの環境を作成するほうが良いと思います。

1.設定ファイル

 Ansibleの実行に必要なファイルは次の通りです。
 環境設定ファイル、インベントリファイルは環境ごとに1つで良いですが、playbookは操作ごとに作成します。

対象 ファイル名 概要
環境設定ファイル ansible.cfg 通信方法やログ出力など、ansibleの実行時の設定を記述
インベントリファイル hosts 設定対象のサーバー、NW機器を記述
playbook (任意).yml ansible-playbookコマンドを実行するときに使用。サーバー、NWに対する操作を記述。

 

2.環境のディレクトリ構造

 環境ディレクトリの構造は次の通りです。/etc/ansibleディレクトリ内の初期の状態でもあります。

 (ベースディレクトリ) ・・・ 環境設定ファイル、インベントリファイル、playbookを保存。
  +-- role       ・・・ roleという、WebサーバーやAPサーバーなど、操作対象の役割毎にplaybookなどを保存する。

 ※(参考)以降は必要に応じてユーザーが任意で作成します。/etc/ansibleディレクトリには存在しません。
  +-- files       ・・・ copyモジュールで使用。操作対象に転送するファイルを保存する。
  +-- templates     ・・・ templateモジュールで使用。操作対象に転送し、編集するファイルを保存する。
  +-- host_vars     ・・・ ホスト変数ファイルを保存する。
  +-- group_vars    ・・・ ホストグループ変数ファイルを保存する。

3.環境設定ファイルの読み取り優先順位

  環境設定が複数ある場合、次の順番でディレクトリ検索を行い、ファイルを読み取ります。

  ①環境変数 ANSIBLE_CONFIGに記述したディレクトリ。
  ②ansibleのコマンドを実行したときのカレントディレクトリ。
  ③/etc/ansible

4.環境設定の管理

 
 ansibleで管理したいシステムやOSが複数ある場合、個人的には環境設定を分けたほうが良いかと思っています。
 システムごとにOSのバージョンが異り、操作する内容も異なります。そのため実行毎に環境設定ファイルを差し替えたり、playbookが複雑になってくると思います。
 異なるシステム間で同じ操作を行う場合は、playbookをコピーして共有すればよいかと思います。

例)ディレクトリ構成の例

(システムA)
  +--- Linux   ←ここを環境設定ディレクトリにする
  +--- Windows  ←ここを環境設定ディレクトリにする

(システムA_テスト環境)
  +--- Linux   ←ここを環境設定ディレクトリにする
  +--- Windows  ←ここを環境設定ディレクトリにする

(システムB)
  +--- Windows  ←ここを環境設定ディレクトリにする

(システムB_テスト環境)
  +--- Windows  ←ここを環境設定ディレクトリにする

(NW機器)
  +--- CISCO  ←ここを環境設定ディレクトリにする
  +--- F5   ←ここを環境設定ディレクトリにする

※システムごとに担当者が違い、アクセスさせたくない場合はシステムごとにユーザーを分け、ディレクトリにパーミッションで制限をかけるのもよいかと思います。