素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

【失われしベストプラクティスを求めて】Ansibleでの特殊な動きをするディレクトリについて

投稿日: 2018年3月13日
最終更新日:

スポンサーリンク

336×280




Ansibleのディレクトリ構造

ちょっと複雑

Ansibleには、様々なディレクトリや設定ファイルが登場します。

とても便利なのですが、数が多いのでそれぞれの意味を理解するのが少し大変です。

なので今回はAnsibleで出てくる各種ディレクトリの用途についてまとめてみました。

roles内部にも似たようなディレクトリ構造を持つことが可能ですが、そちらはまた別の記事にてご紹介しようと思います

説明

前提

筆者の作業環境のAnsibleのバージョンは2.4.2.0となります。

全体像

まずは、以下のような構造で用意してみました。

インベントリーは以下のように指定しています。

次にそれぞれのディレクトリの役割を紹介していきます。

スポンサーリンク

336×280




group_vars

inventories/{環境}ディレクトリの中にあるgroup_varsディレクトリは、読み込んだhostsファイルにて記述したセクション単位で適用する変数を設定することが可能です。
またファイル名をall.ymlにするとグループ関係無く全てのグループに変数定義が適用されます。

まずは、今回はlocal環境のみに接続をするので、以下のように指定してみます。

roles

rolesディレクトリは、実際にplaybookコマンドで実行する処理単位で記述したファイル群を管理するディレクトリです。
このタスクの中でshellスクリプトを実行したり、各種ansibleの標準モジュールを使ってサーバー操作をしていく事になります。
今回はサンプルとして、shellを実行するplaybook及びタスク以下のように記述してみます。

files

filesディレクトリは主に、CopyモジュールSynchronizeモジュールを使って設定ファイル等をリモート先に配置する際のファイル群を管理するディレクトリです。Copyモジュールのsrc属性は自動的にこのfilesディレクトリの内部をデフォルトで参照します。
playbook及びタスク以下のようになります。

実際に実行してみましょう。


上記のように、正常にコピーされていると思います。。

templates

templatesディレクトリは主に、Templateモジュールを使って、ファイルの内容を動的に変えた上でリモート先に配置する際のテンプレートファイル群を管理するディレクトリです。Templateモジュールのsrc属性は自動的にこのtemplatesディレクトリの内部をデフォルトで参照します。
また、このテンプレートファイルはJinja2という形式になり、拡張子はj2となります。
playbook及びタスク以下のようになります。

このタスク用にlocalserverグループ用group_vars変数も追加します。

では、実際に実行してみましょう。

正常に変数が置換された上でコピーされていますね。

オススメの参考書

終わりに

今回はgroup_vars/roles/files/templatesディレクトリの動きについてご紹介しました。

こちらのディレクトリ構造をうまく使えばより効率的なAnsible構成を実現することが可能になりますので、是非参考にしてみてください。

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , ,

blogenist

Author: blogenist