hidemium's blog

日々学んだことをアウトプットする。

VMware WorkstationにvSphere 6.5/Virtual SAN 6.5を構築する

この記事は NIFTY Advent Calendar 2016の 21 日目の記事です。 昨日は@licht110さんのserverspec+ansible+vagrant-vsphereでやるテスト駆動サーバー運用という記事でした。 ハイパーコンバージドインフラストラクチャが注目されていますが、VMwareでは、x86…

PackerでWindows Server 2012 R2のVMwareイメージをビルドする

この記事は NIFTY Cloud Advent Calendar 2015の 20 日目です。 ESXi上で動作するOSイメージを自動ビルドするのにPackerが使われています。 LinuxのOSイメージをPackerでビルドする事例はありますが、Windowsについてはまだまだ少ないと感じており、今回は、…

vCenterの開発環境としてVCSIMを構築する

VMware vSphere APIのPythonバインディングであるpyvmomiを利用して、スクリプトから仮想マシンを操作することができます。しかし、pyvmomiのスクリプトを開発するため、vCenterの開発環境を用意する必要がありますが、構築には手間がかかります。そこで、今…

Play Frameworkでイベント支援サービスを作ってみました

id:hirahiro56とid:nemorosus4160と一緒にPlay Frameworkを使ってWebサービスを作ってみました。キャッチボールを目的に、告知ページ・申し込みフォームを作成するサービス「Chiball.net」です。Chiball.net:http://chiball.net/キャッチボールをする機会が…

リポジトリ共有式Pull Requestの手順について

Git

GitHubを使った開発の方法であるリポジトリ共有式のPull Requestの手順を整理してみました。 全体の流れ 大まかに以下のような手順になります。 ローカルにclone ブランチ作成 (名前はissue[Issueの番号]とか※) 修正完了後、Push masterにプルリク作成 確認…

Play Framework(Java)でEbeanを使ってManyToManyのリレーションを行う

この記事は Play framework Advent Calendar 2014の 14 日目です。前回、Ebeanを使ってリレーションを持つテーブルの操作を試してみました。しかし、多対多のリレーションについて、更新時に関係付けしたインスタンスが削除される事象が発生し、しばらくはま…

Play Framework(Java)でEbeanを使ってリレーションを持つテーブルを操作する

前回、EBeanを使ったデータベースの操作を試してみましたが、Ebeanには複数のModelを関連付けて処理する仕組みも用意されています。Modelクラスのフィールドにアノテーションを付けることで、1対1、1対多、多対多といった関係付けを行うことができます。今回…

Play Framework(Java)でEbeanを使ってデータベースを操作する

Play FrameworkにはEbeanというORMが標準搭載されており、Ebeanを継承したModelクラスを作成することでデータベースを操作することができます。今回は、Ebeanを使ったデータベースの操作ついて試してみました。 構成 Windows 8.1 Java 7 Play Framework 2.2.…

Play Framework(Java)の開発環境を構築する

Play Frameworkという、Scala/Javaで書かれたWebアプリケーションフレームワークがあります。Play Frameworkは,Ruby on Railsから影響を受けており、生産性の向上を目的として開発されています。今回は、Play Frameworkの開発環境の構築を行ってみました。 …

DockerでKandanとHubotを動かす

チャット上のHubotを通じて運用を自動化するChatOpsという運用スタイルが注目されています。ローカルでチャット上で動くHubotを試すために、HipChatクローンのKandanとHubotを動作するDockerfileを書いてみました。 構成 Ubuntu 14.04 Docker 1.3.0 Kandan 1…

ShipyardでDockerのWebUIを構築してみた

Dockerでどのようなコンテナが起動しているか、コンテナの状態を確認するためにWebUIを提供するツールがいくつか開発されています。今回は、Shipyardをインストールし、コンテナの状態がどのように確認できるのか試してみました。 構成 Ubuntu 14.04 Docker …

Figで複数のDockerコンテナをまとめて起動して、Redmineを構築する

以前、sameersbn/redmineというRedmineのイメージを試してみましたが、アプリケーションとMySQLでコンテナを分離した場合、複数のコンテナ起動や、DBの作成、マイグレーションの実行が個別に必要となり手間がかかっていました。そこで今回は、マルチコンテナ…

DockerでPlay Frameworkアプリケーションをデプロイする

DockerによるWebアプリのデプロイ方法をいくつか調べてみると、ビルド時間の短縮やメンテナンス性から、インフラレイヤーとアプリケーションレイヤーに分けて差分ビルドする方法が良さそうだったので、Play Frameworkアプリでデプロイを試してみました。 構…

Fluentd + Elasticsearch + Kibanaでログを可視化する

FluetndからElasticsearchへログを転送し、Kibanaでログを可視化できるか試してみました。転送するログはSensu Serverのログを使用しました。 構成 Ubuntu 12.04: Sensu Server インストール対象 Ubuntu 12.04: Elasticsearch ※上記はDocker 1.0.0上で動作し…

KibanaでDockerコンテナのメトリクスを可視化する

前回、Sensuで取得したDockerコンテナのメトリクスをElasticsearchに転送することができたので、今回はメトリクスを可視化するためにKibanaの設定を行ってみました。なお、Dockerコンテナ内からはコンテナごとのリソース情報は見えず、ホスト全体のリソース…

SensuからElasticsearchにメトリクスを転送する

前回、Elasticsearchのインストールができたため、今回はinokappa/sensu-handler-metrics-elasticsearchを用いて、SensuからElasticsearchにDockerコンテナのメトリクスを転送できるか試してみました。*1 なお、Sensuのメトリクスの可視化にはGraphiteがよく…

Elasticsearch + Kibanaを起動するDockerfileを書いてみた

前回、sensuでDockerコンテナを監視することができたため、今回はDockerコンテナの監視を可視化するための前段階として、最近注目されているサーチエンジンであるElasticsearchを起動するDockerfileを書いてみました。また、Elasticsearchのフロントエンドを…

ChefからDockerコンテナにSensu Clientをインストールする

前回、ChefからDockerコンテナにSensu Serverをインストールすることができました。そこで、今回はChefからDockerコンテナにSensu Clientをインストールして、Dockerコンテナが自動的に監視対象として追加されるか試してみました。 また、Clientの監視定義と…

ChefからSensuの監視定義を設定する

前回、ChefからDockerコンテナにSensu Serverをインストールすることができました。そこで、今回はSensuの監視定義として、CPU使用率監視、メモリ使用率監視、ログ監視、プロセス監視を設定してみました。 構成 Ubuntu 12.04: サーバ構築対象 ※Ubuntu 12.04…

ChefからDockerコンテナにSensu Serverをインストールする

前回、ChefからDockerコンテナ内の起動プロセスを追加することが確認できました。そこで、今回はChefを使ってDockerコンテナに監視ツールのSensu Serverをインストールしてみました。 構成 Ubuntu 12.04: サーバ構築対象 ※Ubuntu 12.04はDocker 1.0.0上で動…

VMwareでUbuntuのディスク容量を拡張する

VMware上のUbuntuサーバでDockerのイメージを色々作っていたら、ディスク容量がいつのまにか少なくなっていたので、ディスク容量の拡張を行いました。 構成 Ubuntu 12.04 ※上記のサーバはVMware ESXi 5.1上で動作しています。 VMware サーバを停止 サーバの…

ChefからDockerコンテナ内の起動プロセスを追加する

Dockerはコンテナの起動時に、initプロセスではなく、CMDで指定したプロセスから実行されるため、通常は1つしかプロセスを起動できない制約があります。しかし、プロセス管理ツールのsupervisorを使用すれば、コンテナ内で複数のプロセスを起動することがで…

WindowsでSphinxからPDFファイルを作成する

WindowsでSphinxからPDFファイルを作成しようとしたときに、なぜかWeb上に情報が少なく、はまってしまったのでメモしときます。 Sphinxのインストール Pythonのインストール SphinxはPythonの2系と3系に対応しているようですが、2.7系が一番使われているよう…

DockerでMySQLを起動するDockerfileを書いてみた

Dockerfileを書く練習のため、今回は、sshdとMySQLの複数プロセスを起動するDockerfileを書いてみました。Dockerはプロセスを起動させるコマンドを1つしか指定できないため、プロセス管理ツールのSupervisorを使用しています。また、コンテナ内のデータベー…

rbenvでruby をインストールするChefのレシピを書いてみた

前回は、Opscode Communityに公開さているレシピを使い、rubyをインストールしましたが、Chefのレシピを書く練習のため、今回は、rbenvでrubyをインストールするレシピを書いてみました。 構成 Windows 7: Chef 11.10 Ubuntu 12.04: サーバ構築対象 ※Ubuntu …

WindowsへのChef Soloのインストールと環境改善

WindowsにChefをインストールできるようなので試してみました。また、Chefの実行はコマンドプロンプトから行うため、合わせてコマンドプロンプトを使いやすくしてみた。 構成 Windows 7: Chef 11.10 Ubuntu 12.04: サーバ構築対象 ※Ubuntu 12.04はDocker 0.1…

DockerでアプリケーションとMySQLをコンテナ化してRedmineを構築する

Dockerの公式リポジトリにsameersbn/redmineというRedmineのイメージがあったので試してみました。このイメージの面白いところは、アプリケーションだけでなくデータベースもコンテナにし、さらにデータファイルをコンテナから分離してるところです。 構成 U…

Docker + Chef + serverspec + Jenkins でインフラCIの環境を構築してみた

Dockerが使えるようになったため、Jenkinsにより仮想サーバの起動から、サーバ構築、テスト、仮想サーバの廃棄までを自動化してみました。 やりたいこと 以下のように、Chefのリポジトリの更新をトリガーに、仮想サーバの起動から、サーバ構築、テスト、仮想…

Dockerのインストールと動作確認

VMwareやVirtualBoxなどのハイパーバイザ型とは異なり、起動が早く軽い仮想サーバが使えるコンテナ型の仮想化ソフトウェアのDockerについてインストールしてみました。 構成 Ubuntu 12.04 : Docker をインストール ※上記のサーバはVMware ESXi 5.1上で動作し…

Chef + serverspec + Jenkins でサーバ構築からテストまでを自動化してみた

Chefとserverspecでサーバ構築とテストをプログラマブルにできるようになったため、Jenkinsによりサーバ構築からテストまでを自動化してみました。 やりたいこと 以下のように、Chefのリポジトリの更新をトリガーに、サーバ構築からテストまでをJenkinsにて…

serverspecで構築したサーバの状態をテストする

Chefでプログラマブルなサーバ構築ができるようになったため、構築後のサーバの状態をプログラマブルにテストするために、serverspecをインストールしてみました。 構成 CentOS 6.5 : serverspecをインストール Ubuntu 12.04 : テスト対象 インストール 公式…

Gitのインストールと初期設定

Git

バージョン管理を行うため、CentOS6.5にGitをインストールしてみました。 インストール 公式サイトにある手順を参考にGitをインストールします。 最新版のGitを使用する場合は、ソースからのインストールしますが、今回はyumからインストールしました。 $ yu…

Jenkinsのインストールと初期設定

継続的インテグレーション(CI:Continuous Integration)を行うため、CentOS6.5にJenkinsをインストールしてみました。 インストール JenkinsはJavaで動作しているため、Javaをインストールします。 $ yum -y install java-1.7.0-openjdk公式サイトにある手順…

Chef SoloでRedmineの構築を自動化する

Chef SoloでRuby on Railsの環境構築ができたため、味を占めてRedmineの構築も自動化してみました。Chefを動かすにはCentOS6にChef Soloをインストールするが必要なので、まず先にやっておきます。 Opscode CommunityでRedmineのCookbookを探してみたところ…

Chef SoloでRailsの環境構築を自動化する

Ruby on Railsの環境構築は、RubyのインストールとRails のバージョンを指定してインストールするが必要でしたが、これらの作業をChef Soloで自動化してみました。Chefを動かすにはCentOS6にChef Soloをインストールするが必要なので、まず先にやっておきま…

CentOS6にChef Soloをインストールする

Ruby on Railsなどの環境構築を自動化するために、Chef Soloをインストールしてみました。Chefを動かすにはRubyのインストールが必要なので、まず先にやっておきます。※なお、Chef 11.12系をインストールして「knife configure」を実行したところ、下記のエ…

CentOS6にvim-rubyをインストールする

VimでRubyのシンタックスハイライトや自動補完をするため、vim-rubyをインストールします。※シンタックスハイライトだけ必要であれば、CentOS6.5ではデフォルトのVimで表示できます。CentOS6.5ではデフォルトでvim7.2がインストールされていますが、rubyオプ…

モデルクラスの作成

Model - View - ControllerのうちModelに対応するモデルクラスを作成します。 $ cd data/railbook $ rails generate model book title:string invoke active_record create db/migrate/20140413052721_create_books.rb create app/models/book.rb invoke tes…

テンプレートファイルの作成

Model - View - ControllerのうちViewに対応するテンプレートファイルを作成します。アクションからテンプレートに値を渡すには、アクションメソッドの中でインスタンス変数に値を設定します。※インスタンス変数は文字通りインスタンスごとに違う値を保持で…

VMwareで 「Device eth0 does not seem to be present, delaying initialization」のエラーになった場合の対応

VMware ESXiでCentOS6のテンプレートを作成し、新しいサーバをテンプレートからデプロイすると、eth0の起動に失敗します。また、ネットワークの再起動を行うと、以下のようなメッセージが出力されます。 $ service network restart Device eth0 does not see…

Railsを理解するためのRubyの基礎

Ruby on Railsが生成したソースコードを読んでいると、以下のような構文に出くわします。どのように理解すればいいのか分からなかったので、Rubyの文法について調べました。 create_table :books do |t| t.string :title end 上記のような構文をブロック付き…

コントローラクラスの作成

Model - View - ControllerのうちControllerに対応するコントローラクラスを作成します。 $ cd data/railbook $ rails generate controller hello create app/controllers/hello_controller.rb invoke erb create app/views/hello invoke test_unit create t…

Railsのアプリケーションにアクセスする

Railsで作成したアプリケーションを起動後、端末からブラウザで「http://localhost:3000」にアクセスするには、CentOSのポート(3000番)を開ける必要があります。 $ vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j…

Railsで新規アプリケーションを作成する

新規アプリケーションを作成します。 $ mkdir data $ cd data $ rails new railbookHTTPサーバを起動します。 $ cd railbook $ rails server rails serverのコマンドを実行したところ、様々なエラーが発生したので、対応方法を記載します。 Could not find g…

SQLiteをインストールする

SQLiteの公式サイトにあるSQLite Download Pageから、最新版のソースコードを確認します。 $ wget http://www.sqlite.org/2014/sqlite-autoconf-3080402.tar.gz $ tar zxvf sqlite-autoconf-3080402.tar.gz $ cd sqlite-autoconf-3080402 $ ./configure $ ma…

Rails のバージョンを指定してインストールする

インストールを行なうと「file 'lib' not found」というエラーメッセージが表示されるので、先にRDoc(Documentation from Ruby Source Files)をインストールしておきます。 $ gem search -r rails $ gem install rdoc $ gem install rails --version="3.2.17…

rbenvでRuby をインストールする

Rubyの公式サイトに以下の記載があったため、バージョンマネージャを使うことにしました。 ソースからのビルド もちろん、Ruby をソースからインストールすることができます。 ダウンロードして tarball を展開し、次のようにしてください: : しかしながら…

CentOS6にVMware Toolsをインストールする

VMware Toolsをインストールするたびに手順を検索をしていいたため、備忘録のために手順を残しておきます。 $ mkdir /mnt/cdrom $ mount /dev/cdrom /mnt/cdrom $ cp /mnt/cdrom/VMwareTools-x.x.x-xxxxxx.tar.gz /tmp/VMwareTools.tar.gz $ umount /mnt/cdr…