9日目の記事となります。本日はAnsibleを始めてみたいけどまだ手が出せないという方向けの記事になります。ある程度自分で調べて使えるようになるきっかけは、以下の2つを覚えたからでした。本記事で取り上げるので、同じような状態の方の助けになれば幸いです。サンプルplaybook説明のため、ここでは以下の作業のplaybook化を題材にします。こんな感じのplaybookになります。startedこの時点で出てきた疑問え?yumなの?Ansibleを使えばOSの違いを吸収できるんじゃなかったの?OS非依存かどうかはモジュールの実装によりますので、OSごとに固有の処理が必要になる場合は以下のような実装が必要になります。ansibleの変数を見てOSのタイプを識別する条件文(when)を入れて、RedHatだったらyum、Ubuntuだったらapt...というような分岐処理にするこのようにOS非依存な形で記述するにはplaybook側で違いを吸収する記述が必要になる場合があります。いった処理は既に誰かが作っていることが多いのでroleの使用をおすすめします。packageモジュールというOS非依存のモジュールがあるので、上記はあくまで説明のための例になります。パッケージ以外の例だと、設定ファイルの場所がディストリビューションによって異なるといったケースがあります。対象ホストごとに違う値を設定したいんだけど...例えばlistenするIPなど、設定ファイルに自身のIPアドレスを記述したい場合が該当します。「ansible_default_ipv4.addressという値を使って取得できるので、それをtemplateの適用したい場所に入れて...」といった具合の情報が出てきました。}}</VirtualHost>ただそうなると今度はansibleで取得できる変数があるのはわかったけど何があるかわからない欲しい値に対応してない可能性があるという疑問が出てきます。factsとして取得する以外にも、単純に変数として宣言もできます。(ちなみに、factsをカスタマイズして取得する変数を追加することもできます。下記はinventoryに定義する方法をとっています。listen_ip=192.168.0.101これでホストごとに違う値をもたせられるだけでも、大分柔軟に設定ファイルを作れるのではないでしょうか。変数の定義の仕方はいくつかあり、なおかつ変数の優先度などもありますが詳しくは参考リンクを御覧ください。roleを使ってみるここまでで冪等性をもたせたり、OS非依存に作ろうとするとやっぱり作るのが面倒という印象を持った方もいると思います。誰かが既に作っていそうなものは、再利用したい...そこでroleの出番です。いうroleが見つかるのでこちらを使用します。以下のコマンドでインストールします。オプションはインストール先の指定。roleroleを使う場合のplaybookの記述は以下のようになります。geerlingguy.apacheこれでroleを適用してapacheがインストールされます。templateなども、role内にあれば適用されます。自分の環境用にカスタマイズする以下の手順で、カスタマイズができます。どんな変数があって、どう変えれば良いかといった情報も書かれています。して定義されてる事がわかります。見ると以下のようにデフォルト値が定義されています。なく、ホストごとに特定のIPアドレスに固定するのであれば、以下のように記述します。いうような運用が考えられます。その他ここでは取り上げませんが、他にも以下のような機能があります。最後に、おすすめの学習方法を紹介します。簡単なものから少しづつやってみるいきなり複雑なことをやろうとすると躓きやすいので、まずは簡単なところから慣らしていくのが良いと思います。使ってみる本日紹介した内容で、既にあるroleを使いつつ、必要な変数だけ上書きする...という雰囲気は伝わったかと思います。要件に合致するものがあればになりますが、あまり自分で実装せずとも始められるのでこちらも取っ掛かりとしておすすめです。Lightbulbなど、教材も用意されているので詰まったときに質問もしやすいかと思います。オブジェクト管理に関して皆さんこんにちは、ソリューションアーキテクトの岡野です。Hatのさいとうです。各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。