Ansible (20) Ansible Tower と Mackerel を連携させる

こんにちは。

グローバルソリューション事業部の吉村です。

 

前回に続き、Ansible 勉強会の時に出来なかったことのリベンジです。

今日は Mackerel と Ansible Tower の連携をやってみます。

 

連携と言っても、何かを自動化するというわけではなく、Dynamic Inventory で対象ホストの管理を一元化するという内容です。

なお、Mackerel の説明などは、勉強会の時の記事をご覧ください。

では、早速行きましょう。

 

1.UIから Inventoryを登録する

まず現在の Ansible Tower を確認すると、UI から手動で登録した Inventory のみある状態です。

image26

登録方法としては、

  1. 「Inventories」 → 「Create Inventory」 で Inventory を作成
  2. その Inventory の中で「Create a new Group 」で、Group を作成
  3. その Group の中で「Create a new Host 」で host を1台ずつ登録していく

という流れです。

host が何十台もあると、1つずつ UI から登録するのは面倒くさくなりますのでご注意を。

 

例えば、こんな感じです。

大項目「Inventories」

インベントリ名 「test-Inventorytest」

グループ名 「LAMP-group」

ホスト 「192.168.12.181」, 「192.168.12.182」, 「192.168.12.183」

image27

 

 

2.tower-manage

では、動的なInvetory を作るには、どうすればいいのか。

答えは、tower-manage というコマンドを使います。

Document を読むと、このような説明があります。

 

tower-manage (旧名 awx-manage)は、 内部の細かい情報にアクセスするための便利ツールです。

tower-manage を使えば管理者は Inventory ファイルを直接 Ansible Tower にインポート出来ます。

※Inventoryファイルのインポート以外にも、いろいろのことが出来るみたいです。

使い方

inventory_import コマンドを使えば、テキストファイルやDynamic Inventory 用のスクリプトや、ディレクトリから、Ansible Tower に Inventory の登録ができます。

 

要は、UI から1つずつ登録するのが面倒くさい時は、tower-manage inventory_import を使ってね ってことですね。

 

 

 

3.tower-manage から Dynamic Inventoryを登録する

今回は、Mackerel から情報を取得してきて、それを Ansible Tower に Inventory として 登録します。

勉強会でもご紹介したように、Mackerel からDynamic Inventoryを取得するスクリプトは、下記を参考にしています。

 

「Ansibleの対象サーバーをMackerelからDynamic Inventoryで取得する」

 

–inventory-name オプションでInventory ファイル名を指定して、

–source オプションでスクリプトを指定して、

いざ実行!

 

はい、Error でした。

“DynamicInventory cannot be found” って、最初に作っておかないとダメなのね。なるほど。

仕方ないので、UI 上から一度作りました。

image28

 

 

そして、もう一度チャレンジ。

 

出来た!びっくりした!

 

UI から確認すると・・・

image29

きちんと host 達がいますね!

 

これで、Mackerel でホスト登録しちゃえば、Ansible Tower の方はコマンド一発でホストが登録できると。

Dynamic Inventory 最高ですね。

勉強会のリベンジ達成です!

 

今回は以上です。

それでは!

 

 

 

 

Share on LinkedIn
LINEで送る
Pocket

吉村

吉村

クララオンライン グローバルビジネスストラテジー部でマーケティング担当として働いています。 クラウド関連技術と中国関連の情報をお届けしてます。 たまに DJ とかします。日本語RAPが大好きです。