ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

project DoAa(プロジェクト ドア)のご紹介

お疲れ様です。伊藤です。

今回私がこのブログを書くきっかけになった社内プロジェクトのご紹介をさせていただきます。
名前の由来は「DockerとAnsibleを使ってインフラ構築の自動化(automation)を支援しよう」から来ています。頭文字を取っていくあたりはかなりベタな名前ですが「次のステージへの扉(Door)」という意味も込めていたので個人的にはよく出来た方の名前かと(自己満)
その他詳細な経緯についてはインターミッション~じぶんのはなし~ - ときどきAnsible日記にもちょっと書いていますので興味のある方はご参照ください。


で、こちらのDoAaですが、どういったものかというと、DockerコンテナにAnsibleを構築したモビリティ性のある環境と、設計書からPlaybookを作成するExcelツール群のセットになります。
f:id:pj_doaa:20171117100524p:plain


コンテナに事前に作成しておいた環境とPlaybook作成支援をセットにすることで、迅速に自動化環境を構築しかつ、すぐに使える状態にする、という事を目指して作成しておりました。また、環境をコンテナ化することで後の運用時のセキュリティについても強化することができます(Ansibleのセキュリティについて考える - ときどきAnsible日記


Playbook作成支援の部分はRHELのパラメータシートとそれを読み込んでPlaybookを作成するExcelマクロのセットです。

【パラメータシートイメージ】
こちらのパラメータシートにはデフォルト値と今回設定する値を記入する欄があり、行ごとに「追加」「削除」「変更」の記載が出るようになっておりますのでその部分を読み取ってExcelマクロでPlaybookを作成していきます。
f:id:pj_doaa:20171117101515p:plain


【マクロイメージ】
マクロではパラメータシート毎に構築用Playbook作成ボタンとチェックボタンがあります。チェックボタンは設定が完了した後にチェックする用のPlaybookを作成できますので、これが単体テストの代わりになります。
f:id:pj_doaa:20171117101532p:plain


【Playbookイメージ】
イメージのようなPlaybookが自動生成されます。ファイルの編集などが入る場合には事前にバックアップを取得し、管理サーバに持ってきて、ファイル編集後には編集後のファイルも持ってくるようなPlaybookにしています。またこの中で指定されているrowinfileというのはオリジナルのModuleですので他の環境ではこのPlaybookは動きません、あしからず(AnsibleのModuleを自作してみる - ときどきAnsible日記)
f:id:pj_doaa:20171117101729p:plain


と、いうわけでこれらのセットにてお客様のインフラ構築の自動化を推進するソリューションを作る、というのが本プロジェクトの目的でした。その他細かい部分についてはこちらのブログにも結構書かせていただきましたので興味のある方は過去記事など読んでいただけると幸いです。
一旦プロジェクトについてはこのソリューションを完成させて終了となります。こちらのブログについては更新ペースは落ちますが、引き続き続けさせていただこうと思っております。

今後ともよろしくお願い致します。

DockerのWindows対応について

お疲れ様です。伊藤です。

WindowsServer2016でDockerの対応がされた、と聞いていたんですが自分自身認識が間違っていたので覚書の意味を込めてここに書いておこうと思います。


まず、Dockerというかコンテナの基本ですが、コンテナはハイパーバイザ型の仮想マシンと違い、ホストOSとカーネルを共有しています。したがって、ホストOSと同じOSしか動かない、というのが基本です。(詳細はDockerコンテナの概要 - ときどきAnsible日記をご参照ください)

で、WindowsServer2016のDocker対応ですが、基本的にはDockerはLinuxから生まれたものなので、Linuxコンテナだと思っていました。で、この対応についてもWindowsServer上でHyperVでLinuxを入れてからその上にDockerをインストールするもの、という認識でした。

もちろんこのパターンもあるのですが、実はこれだけではなくDockerはしっかりとWindowsコンテナにも対応していて、それはWindowsServerコンテナと呼ばれるようです。(ちなみに前者はHyperVコンテナと呼称しているようです)

つまりはWindowsでDockerを使う、といった場合WindowsServerコンテナ(コンテナのOSはWindowsServer)、HyperVコンテナ(コンテナのOSはおそらくLinux、おそらくというのはLinux以外も可能ではあるから)の2種類があるということになります。(HyperV以外でもハイパーバイザ型であれば何でも行けますが)


このあたりの認識がすっかり間違ってました。もし以前の記事にDokcerコンテナと言えばLinux限定!みたいなことを書いていて、読んでいる方を混乱させてしまっていたら訂正させていただきます。
詳細は@IT様の記事に乗っております。なぜ昔この記事を見つけられなかったんだろう。。。。
www.atmarkit.co.jp


以上です。お疲れ様でした。