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

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

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

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/04/03 21:33:13時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

【最新機種】GoPro hero11 Black

created by Rinker
GoPro(ゴープロ)
¥62,000 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,000 (2024/04/03 21:42:12時点 Amazon調べ-詳細)

翼を授けよう!

モンスターエナジー 355ml×24本 [エナジードリンク]

created by Rinker
モンスター
¥4,748 (2024/04/03 21:33:15時点 Amazon調べ-詳細)

脳を活性化させるにはこれ!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,250 (2024/04/03 21:42:09時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥14,935 (2024/04/03 21:42:10時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥7,500 (2024/04/03 21:42:14時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

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構成を実現することが可能になりますので、是非参考にしてみてください。

CATEGORIES & TAGS

IT