CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
先週は、「Okinawa OpenDays 2015」というイベントの企画で、「OpenStack/Docker/Ansibleハンズオン」を開催しました。OpenStackとDockerを組み合わせた活用法、そして、仮想マシンインスタンスの作成からDockerによるアプリケーションデプロイまでをAnsibleで自動化するという内容をハンズオン形式で解説しました(*1)(*2)。今回から数回に分けて、このハンズオンの内容を紹介したいと思います。
はじめに、OpenStackとDockerの関係を整理しておきましょう。OpenStackは、マルチテナントのIaaS環境を提供するクラウド基盤ソフトウェアであることはご存知の通りです。OpenStackのユーザーは、自分専用のテナント環境において、仮想ネットワーク、仮想マシン、そして、仮想ストレージを組み合わせて、仮想化インフラを自由に構築することが可能です。REST APIを通じて操作することができますので、Ansibleなどの自動化ツールを用いれば、インフラの構築を自動化することも簡単です。
一方、Dockerは、アプリケーションの実行環境をイメージ化して配信する機能を提供します。OSレベルのファイルからアプリケーションの実行バイナリーまで、アプリケーションの実行に必要なファイルをすべて含んだ「コンテナイメージ」を作成して、レジストリーに保存しておくことが可能です。アプリケーションを利用したいユーザーは、Dockerが稼働するサーバー上で「docker」コマンドを実行するだけで、イメージをダウンロードしてコンテナ上で即座に実行することができます。
すなわち、OpenStackとDockerを組み合わせることにより、インフラの構築とアプリケーションのデプロイをまとめて自動化することが可能になります。これまで、OpenStackで起動した仮想マシンインスタンスに対して、PuppetやChefなどの構成管理ツールを用いて、動的にアプリケーションを導入・設定することもありました。しかしながら、PuppetのマニフェストファイルやChefのレシピファイルなど、自動化のための設定そのものが複雑化して、メンテナンスの手間がかかったり、設定ミスで自動インストールに失敗するなどの問題もありました。Dockerを利用すれば、確実に動作するテスト済みの環境をそのままイメージ化することができますので、このような問題がなくなります。
図1は、ハンズオンの際に解説に使用した図になりますが、OpenStackで管理するべきインフラのレイヤーとDockerで管理するべきアプリケーションのレイヤーがきれいに分離されていることがわかります。特にこの例では、MySQLのデータベースをコンテナ上で実行しており、データベースのテーブル領域は、Cinderのブロックボリュームに永続保存するといった工夫もなされています。
図1 コンテナでアプリケーションを実行する構成例
図1では、Dockerをインストール済みの仮想マシンテンプレートを用いて、仮想マシンインスタンスを起動する想定となっています。ハンズオンでは、事前に用意しておいたテンプレートを使用しましたが、これは、CentOS7のイメージから、次の手順で簡単に作成することができます。
はじめに、CentOSのコミュニティサイトで公開されているCentOS7のイメージから仮想マシンインスタンスを起動して、次のコマンドでパッケージの追加と初期設定を行ないます。
# yum -y update # yum -y install docker # systemctl enable docker.service # systemctl start docker.service # systemctl mask docker-storage-setup.service
また、必要に応じて、設定ファイル「/etc/sysconfig/docker」を編集しておきます。たとえば、イメージの保存領域にループバックデバイスを使用するデフォルト構成の場合、それを指摘する警告が表示されることがありますが、「OPTIONS」を次のように設定することで警告を抑止することができます。
OPTIONS='--selinux-enabled --storage-opt dm.no_warn_on_loop_devices=true'
この後、仮想マシンインスタンスを停止して、インスタンスのスナップショットを取得すれば、Dockerをインストール済みのテンプレートとして使用できます。
今回は、OpenStackとDockerの役割分担と典型的な組み合わせ構成例を紹介しました。次回は、このような構成を用いて、実際にコンテナでアプリケーションを実行する手順を説明したいと思います。さらにその後は、Ansibleを用いてOpenStackとDockerの操作をまとめて自動化する方法まで解説を進める予定です。
次回のコラムはお正月明けの掲載を予定しています。それではみなさん、良いお年を。
*1 「OpenStackをさらに"使う"技術 - OpenStack&Docker活用テクニック」- 当日使用したハンズオン資料(Docker編)です。
*2 「OpenStackをさらに"使う"技術 - Ansibleを利用した自動化を体験する」 - 当日使用したハンズオン資料(Ansible編)です。
++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
CTC教育サービス Linuxのページ
http://www.school.ctc-g.co.jp/linux/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes