Notebook(NIIカスタマイズ版)とは別に、構成管理ツールであるAnsibleも必要になってきますとのこと。Ansibleは名前は聞くし、必要性は認識してるし、実際一度触ってみたことがあるものの、どうしても理解に至らずにそのまま放置プレイしている状況が有りました。当時すでにAnsibleサーバは破棄してるし、それならばということで、一先ずAnsbleサーバの再構築からやりなおし、Playbookを書くところまでなんとか漕ぎ着けてみようと思うのでした。AgentのインストールをAnsibleで楽にやれるようになることを目標にします。した構成はこんな感じ。Ansibleサーバから集合NFSストレージに接続した状態で、NFSサーバ上には必要なパッケージとなるhinemos_agentとsnmpd.confを配置しときます。Agentが自動で導入され、なおかつエージェントが起動してくるというもの。AnsibleのインストールAnsibleのインストールそのものは、当方環境CentOS7ですがyumを使えば簡単にインストールできます。EPELリポジトリを有効にし、ansibleパッケージをインストールする感じになります。ansibleインベントリの設定(ansible-hostsの設定)次に、インベントリを定義し、対象となるグループ名・対象となるIPアドレス(本当は名前解決できるようにしてFQDNで入れるのが良いらしい)を設定します。Agentが入ってないので、それをインストール対象にしました。以下設定を入力[newcommers]192.168.100.147-----Playbookの考え方Playbookですが、どうやら普通連想しそうな「設定手順」的な書き方ではなく、「冪等性」に基づく設定記入が必要なようです。冪等性とは「ある操作を1回行っても複数回行っても結果が同じであることをいう概念」とのことで、このPlaybookを何度実行しても対象は一つの求められた状態に一度状態が変わった後は変更されない・・・と言うようになるようです。これは個人的な解釈ですが、Playbookに設定するのは「そのサーバのあるべき姿」であり、Ansibleはそのサーバのあるべき姿と現状があっているかを精査あっていれば何もしないあってなければあるべき姿にするために何らかの手段を講じると言うかたちで「あるべき姿に持っていく」と言うことをAnsibleが行っていくようです。state=startednameは単なるコメントですserviceと言うモジュールを使って、hinemos_agentの状態を確認あるべき姿としては、Enable/StartedになっていることもしDisableだったらEnableにするもしstoppedだったらサービスをstartにすると言う感じの内容になります。今回のPlaybookではyum/copy/shell/serviceあたりを使っている各モジュールの使い方はGoogleで調べると結構あっさり出てくるYO!本当は、tasks以外にもhandlerと言うセクションがあったり、ディレクトリツリー配置の差異によってもっと色々出来るみたいなんですが、そこは引き続き別途勉強ということで。実際に作ったPlaybookこんな内容になっています。state=started処理の流れとしては過去の記事に記載していたものをそのままPlaybookに落とし込んでいて、ざっくり書くとこんな流れです。HinemosエージェントはRPMパッケージですが、yumモジュールを使用することでインストールすることも可能です。今回は環境変数をきちんと与えた上でインストールをする必要があったため、敢えてshellモジュールを使ってインストール処理を書きました。本来、冪等性を保つ必要が有ることから、コマンド等を実行することはあまり推奨されていません。commandモジュールやshellモジュールは余り使うべきではない・・・ということのようです。RPMを単純に入れる場合は、yumモジュールを使用したほうが良いのだろうと思います。ドライランansible-playbookと言うコマンドでPlaybookを実行するわけですが、[-C]オプションを付与することで、ドライラン=テスト実行をすることができます。実行コマンドラインと実行結果を以下の通り記載します。failed=0結果が[OK]となっている箇所は、「変更を必要としなかった」と言うことを意味しており、[changed」となっている所は「変更が必要なので何らかの処理をした]ということを意味しています。agent」部分は[skipping]と表示されており、そこについてはテスト結果の保証対象外となります。実際には導入・変更を行わないため、パッケージ等のインストールもなされてはいません。本実行はドライランのときに付与した[-C]を外すだけです。failed=0ドライランのときと異なり、skippingステータスになっている箇所がありません。以下のようにコマンド実行すると、hinemos_agentが起動していることを確認できました。running...加えて、hinemosのインストールログが出力されており、どうやらhinemos_agentが正常にインストールされているようであることも確認できました。completed.今後やろうかなとおもったことなど取り敢えずこれがLC4RIとどう結びつくのかが知りたいのと、加えて、サーバ初期構築時の共通設定自動化をもう少し推し進めたいかなーと言うのはあります。公開鍵配布に関してはAnsibleだけではなく、Vulsでも必要となる作業なので、それを個別にあーだこーだするのは色々と面倒だよなぁというのが有ります。Hinemosで同様のことをするのも簡単なのですが、Hinemosにあまり傾倒すると応用が聞かなくなってしまうような気もしますので、そこはうまく連携する仕組みを考えるほうが今後の広がり・ネタも発掘できて楽しいのかなーとおもったりしています。Notebookに導入しようとすると色々苦労しました。長久さんからも「Docker版を使って欲しい」と言うお話をいただき、それに従っています。Dockerイメージの作りを見ていると、Debian系を使っていらっしゃるようで、それが故なのかどうかがわからないんですが、あるはずのモジュールが見つからなかったり、で一部モジュールの実装ができないんですよね。いうわけで、Dockerイメージをそのまま使ってます。NIIクラウドチームとしても、このDockerイメージがそのまま使われてるとのことで、それならばーと実装してみたわけですが、これが中々機能拡張されまくっていて面白いです。これはこれで記事を起こしてみようかなーとおもっています。現在色んな機能を評価中ですー。