Translate

2015年4月27日月曜日

Intel Edison をセットアップしてLチカまで持っていく




IoTの波に巻き込まれてしまい、
Arduinoをはじめることになった。

..が、Arduinoでは盾(シールド)を装備しないと
BLEやWiFiが使えない..

で、どうせやるならIntel Edison Kit for Arduinoでやれば
Arduino開発環境でできるみたいだし
WiFiも使えるかもしれない..
..ということではじめることにした。

1. 必要なもの


  • インターネットに繋がるPC(使ったのはWindows7)
  • 7z形式展開ツール、PCにインストールしておくこと
  • PuTTY.exeをダウンロードし、適当な場所へ置く
  • Intel Edison Kit for Arduino

  • USBケーブル(USB2.0 Aオス - Micro B)×2


道具としてはラジオペンチがあると便利。

あとUSBケーブル2本ない場合は、別途電源を用意する必要がある。1本だと電源不足でEdison上のLinuxが一向に起動しない。電源が足りている場合はIntel Edisonボードの近くの緑LEDが点灯する。


PC、ラジペン、ACアダプタもふくめて全部Amazonで揃ってしまういい時代になった。IoTする場合電子工作パーツも適宜必要になるが、こっちはSWITCH SIENCEや秋月電子なりのサイトで入手可能だ。


2. Edisonのとりつけ


Intel Edison Kit for Arduinoは、SDサイズくらいのEdisonボード本体と、Arduino UNOより一回りちょっと大きいArduinoボードの2つが入っている。
この2つをネジで貼りあわせて、あたかもArduinoのように開発するのだけど、一応何かあるたびにネジ開けるのめんどくさい。なので、EdisonボードとArduinoボードのオモテウラ、を写真でパチパチとっておく。

「Intel Edison What will you make?」側が表なのでこのラベルとArduinoボード側のラベルの文字が同じ向きをするように貼り合わせる。ラベルではない部分を押して、Arduino側のボードに押し込む(最後くいっと差し込まれた感があるまで押しこむ)。

そしてネジの小袋から、一番小さいネジとナット2組とりだし、上側がナットになるようにネジをしめる。


3. デバイスドライバなどのダウンロード


PCに接続する前にデバイスドライバをインストールする。

3.1. FTDI ドライバ

ブラウザで http://www.ftdichip.com/Drivers/VCP.htm を開き、使っているOSのドライバリンクを選択する。
私はWindows7なのでWindowsのsetup executableリンクを押してダウンロードした。
ダウンロードしたファイルを右クリックして、プロパティを開き、全般>ブロックの解除を選択しておくと、保護プログラムに邪魔されなくなるのでやっておく。
あとはダブルクリックして実行し、すべてそのままインストールウィザードを素直に進めれば良い。


3.2. Intel Edison ドライバ

ブラウザで http://www.intel.com/support/edison/sb/CS-035180.htm を開き、Driver softwareのWindows Standalone Driverをダウンロードする。たぶん64bitの方も動くと思うのだが、参考にしたサイトがこっちを選んでいたので、素直に従った。
こちらも、右クリックして、プロパティを開き、全般>ブロックの解除を選択しておく。同様にダブルクリックしてインストールするのだけど、EndPointが邪魔しているようで、インストールに少しだけ時間がかかった。

3.3. Linuxイメージ

同じサイトでIntel Edison上に展開するためのLinuxイメージもダウンロードする。
ブラウザで http://www.intel.com/support/edison/sb/CS-035180.htm を開き、Intel Edison Linux firmware and operating system imageのYocto complete image(もしかしたら名称は変わるかもしれない)リンクを踏んでダウンロードする。
このイメージが7zなので7z展開可能なツールが必要となる。とりあえず適当な場所におき、プロパティを開き、全般>ブロックの解除を選択しておく。

3.4. Arduino IDE

またまた同じサイトにArduino開発ツールをダウンロードできるので、おとしておく。
ブラウザで http://www.intel.com/support/edison/sb/CS-035180.htm を開き、Intel Arduino IDE からOSに合ったリンクを踏む。
このIDEはArduinoのものと全くUIが同じで、Intel Edisonに対応させたものらしい。インストーラ型ではないので、圧縮ファイルを適当な場所に置く。展開前にプロパティを開き、全般>ブロックの解除を選択しておく。そのあと展開してフォルダを適当な場所に移動する。

4. セットアップ

4.1. ドライバの動作確認

USBケーブルを2本とも同じPCへつなぎ、Arduinoボード右下のUSB Bポートにそれぞれつなぐ。
ドライバセットアップがエラーで終わった場合、コントロールパネルのデバイスマネージャを開いてエラーになっているドライバを右クリックして、ドライバの再インストールをおこなう。

おそらく再起動を要求してくるのでシャットダウンして、一旦USB接続を2本ともはずして、起動し、起動完了したら再度USBケーブルを2本とも接続する。

4.2. Yocto complate imageのコピー

接続したままエクスプローラを開いて、Edisonのラベルのあるディレクトリがマウントされていることを確認したら、先ほどダウンロードしたYocto complete imageを展開し、このドライブへ格納する。

4.3. PuTTY.exeによるファームウェア更新

次にコントロールパネルのデバイスマネージャを開き、ポート>Intel Edison Virtual Com Portとポート>USB Serial Portの横に書かれたCOM番号をメモする。
PuTTY.exeを起動する。
Connection TypeをSerialをチェック。
Serial lineのCOM番号を先ほどメモしたUSB Serial PortのCOM番号に変更する。
Speed欄は115200と入力する。
Openボタンを押す
Enterキーを何度かクリックすると、Linuxのログインプロンプトが表示される。
rootでログインする(パスワードなし)。
reboot otaを実行してファームウェアを更新する。
再度プロンプトがでたらPuTTYを終了する。

5. Lチカ実行

5.1 Arduino IDEの設定

PC上のArduino IDEインストール先フォルダのarduino.exeを起動する。
ファイル>環境設定を選択し、参照を押してプログラムのワークディレクトリを指定する(変更しなくても良い)。
ツール>ボード>Intel(R) Edisonを選択する。
ツール>ポート>COM?(Intel Edison Virtual Com PortのCOM番号を指定)を選択する。

5.2 BLink実行

ファイル>スケッチの例>01.Basics>Blinkを選択する。
新しい画面があがるはずなのでその画面左上の右矢印アコンを押す。
コンパイルし、イメージがボード側に格納され、実行されると、電源確認用LEDの近くのLEDが点滅する。

6. Lチカ停止

実は、Arduinoボード側でプログラムを消すことはできない。なにもしないプログラムをボード側に流し込まなくてはならない。
ファイル>スケッチの例>01.Basics>BareMinimumを選択する。
新しい画面があがるはずなのでその画面左上の右矢印アコンを押す。
コンパイルし、イメージがボード側に格納され、実行されると、電源確認用LEDの近くのLEDが消灯する。

--------
簡単だったのだが、1点電源不足だけはまってしまった。
ケーブル2本ない人は結構はまるんじゃなかろうか..




2015年4月15日水曜日

Docker HubのJenkins公式ーメージ インフォメーションを翻訳してみた

Docker Hub上にJenkinsの公式イメージがあったので、インフォメーションを翻訳してみました。


 Docker Hub Jenkins Official Repo
 https://registry.hub.docker.com/_/jenkins/

-------

サポート対象のタグおよびDockerfileへのリンク




このイメージについての詳細情報や履歴は、docker-library/official-images GitHub リポジトリ関連マニフェストファイル(library/jenkins)を参照してください。


Jenkins


Jenkins CI/デリバリーサーバ。

このイメージはLTSリリース版のJenkinsサーバの完全機能を提供します。


イメージの使い方


 docker run -p 8080:8080 jenkins

このイメージを使用すると、/var/jenkins_home上にワークスペースが格納されます。またプラグインや設定含むすべてのJenkinsデータが格納されます。このディレクトリの永続化を希望するとおもいます:

 docker run --name myjenkins -p 8080:8080 -v /var/jenkins_home jenkins

このように実行すると、コンテナ名「myjenkins」のボリュームは永続化されます。

またホストからこのボリュームへのマウントする場合:

最初に、/your/homeがコンテナのJenkinsユーザ(Jenkinsユーザは、通常はuid 102、もしくは-u rootを使用)がアクセス可能であることを確認し、次のコマンドを実行してください:

 docker run -p 8080:8080 -v /your/home:/var/jenkins_home jenkins

バックアップ


ボリュームをマウントしている場合 -いつでも簡単にディレクトリ(jenkins_home)をバックアップすることができます。

ボリュームがコンテナ内部の場合-「docker cp $ID:/var/jenkins_home」コマンドを使ってバックアップが可能です。


ビルドエグゼキュータへのアタッチ


外部にあるマスタ上のビルドを実行することができます。しかし、もしスレーブサーバへビルドをアタッチしたい場合、スレーブエージェントへコネクトする際に「-p 50000:50000」を使用して、ポートをわりあてます。

ここに、多くの良いツールがインストールされたビルドサーバを使用することができるdockerコンテナ例です。


アップグレード

ディレクトリ/var/jenkins_home上のすべてのデータが必要となります。このため管理方法によって、アップグレード方法がかわります。一般的に、外部へコピーし、「docker pull」コマンドを実行して、最新のLTS版を取得し、-vでデータ(/var/jenkins_home)を指定して開始すれば、既存の状態でそのまま使用できます。


サポート対象Dockerバージョン


このイメージは公式にはDockerバージョン1.5.0をサポートしています。

以前のバージョン(~1.0)は基本ベストエフォートでのサポートとなります。


ユーザフィードバック



ドキュメント


ドキュメントは、docker-library/docs GitHubリポジトリjenkins/ディレクトリに格納されています。pullリクエストを実行する前にリポジトリのREADME.mdファイルを確認して下さい。


問題(Issues)


問題や質問がある場合は、GitHub issue経由でコンタクトしてください。


Freenode上の#docker-library IRCチャネル経由でオフィシャルイメージメンテナへ問い合わせることも可能です。


貢献


大小をとわず新機能、修正、もしくは更新をうけつけています;我々はぞくぞくして受け取り、問題解決に最善をつくします。

野心的な貢献の場合は特に、送る前にGitHub issue経由であなたの計画を我々に相談することをすすめます。あなたのデザインのフィードバックや同じことを別の誰かが進めている際の発見のたすけになり、他の貢献者があなたに正しい方向を指し示してくれるチャンスになります。

------



アタッチのところのマスタ・スレーブはJenkinsの機能のことをいっている。
分散ビルドなんてしないので、ここはむししてよさそう。

簡単にいえば/var/jenkins_homeを-vで永続化させて、バックアップがイルならココをとればいいってことか。

Java8やant, maven, ivy, tomcat-lib, junitをはじめとしたテストやデプロイで必要なライブラリをインストールしたいが、それはどうしようかな..docker execじゃ、再起動したらもういちどやらないといかんし..

2015年4月10日金曜日

CentOS上にRedmineサーバ(sameersbn/redmine)をDockerコンテナとして立ち上げる



実はRedmineの公式イメージはDocker Hubにはない(この文章を書いている時点では)。

はじめ自分でDockerfileを書こうとしたのだけど、Subversionと違って難易度が..
gemインストール中にmariadbプロセスが上がっていないとダメな箇所にぶつかって挫折..
素直にDocker Hub上で公開しているイメージを使うことにした。

今回使ったのは sameersbn/redmine

選んだ理由は、単に一番ダウンロードされているから(この文章を書いている時点では)。
この方、Redmine2.6.xと3.0.x両方だしており、しかもこのイメージMySQL/postgreSQL両方サポートしており、しかもmemcachedまで使えるようにしている。
ということで、実用向きだなと勝手に判断した。


今回すでにDocker1.5および最新のdocker-composeをインストールした環境で動かした。

具体的な環境はこちらを参照のこと。


CentOS上には最初rootしかつくっていなかったので、rootで作業する。

Redmineのバージョンは3.0.1もあったが、プラグインのサポート状況から現時点では2.6.3のほうを選んだ。

以下docker-compose.yml

postgresql:
  image: sameersbn/postgresql:9.4
  volumes:
    - /home/10001/postgresql/data:/var/lib/postgresql
  environment:
    - DB_USER=redmine
    - DB_PASS=admin123
    - DB_NAME=redmin
memcached:
  image: sameersbn/memcached:latest
redmine10001:
  image: sameersbn/redmine:2.6.3
  links:
    - postgresql:postgresql
    - memcached:memcached
  volumes:
    - /var/run/docker.sock:/run/docker.sock
    - /usr/bin/docker:/bin/docker
    - /home/10001/redmine/data:/home/redmine/data
  environment:
    - DB_USER=redmine
    - DB_PASS=admin123
    - DB_NAME=redmine
    - SMTP_HOST=smtp_server_fqdn
    - SMTP_PORT=25
  ports:
    - "10001:80"

このファイルと同じディレクトリで「docker-compose up」と実行すればフロントエンドで、「docker-compose up -d」と実行すればバックエンドで動作する。
当然初回はpullするのでとても遅い。

VOLUME指定で、必要最小限の部分はホスト側のファイルシステムを使っており、再起動してもデータは永続化される。

上記のdocker-compose.ymlをそのまま実行すると、Dockerホスト上のポート10001番でHTTPサーバがあがる。

なんでこうしたかというと、各Redmineは別々の人に管理してもらいたいので、ポート番号と同じ名前のユーザ名でCentOSアカウントを作って、そこの上にVOLUME指定先(/home/10001..という部分を選択しており、各管理者にホームディレクトリ上のファイルをWinSCPなどでバックアップしてもらおうかな..と考えたためだ。

Redmineプラグインは後付でもインストールできる。
各自のアカウントでdocker execでログインして~redmine以下のpluginフォルダでgitなりwgetなりでダウンロードして再起動すれば、起動時に反映される。


SMTP_HOSTSMTP_PORTなどの環境変数の部分を書き換えてやればHTTPSにする方法GmailやほかのSSL-SMTPメールサーバなどにも対応できるので、sameersbn/redmine上にあるドキュメントを確認すること。



各社で個別のカスタマイズなどをする場合各ホームのディレクトリ上にカスタマイズ済みファイルをおいておいけばOKだ。うちの会社でも初期構築時Redmineのナマのチケットをつかわずに、ある程度社内で標準化したカスタマイズ済チケットになるように配置してあげている。

Subversionもymlファイル上に書いておいたほうがいいかなとも考えたが、Redmine上で管理する複数のプロジェクトがそれぞれ異なる構成管理サーバを使いたいということもありうるので、やめておいた。

本当は個別にホスト経由でdocker execさせたいのだけど..ホスト上のすべてのイメージやコンテナが見えちゃうからなあ..そうなるとDockerにCloudStackのようなプロジェクトだとかグループだとかの概念をいれてかないといけないし..

..GoogleのKなんとかツールとか使うかなあ..

CentOS7 上に Docker と Docker Compose をインストールする




とりあえずいれてみる。
SELINUXはオフにした。



1. Dockerのインストール

  • vi /etc/selinux/configを実行し「SELINUX=disabled」と編集して保存
  • プロクシ環境の場合、vi ~/.bashrcを実行し最終行に以下の2行を追加し保存
 export http_proxy=http://proxy_server:port
 export https_proxy=https://proxy_server:port
  • reboot
  • プロクシ環境の場合、vi /etc/yum.confを実行して「proxy=http://proxy_server:port」を追加する
  • yum -y update && yum -y install docker
  • プロクシ環境の場合、vi /etc/systemd/system/docker.service.d/http-proxy.confを実行して以下の編集を実施
 [Service]
 Environment="HTTP_PROXY=http://proxy_server:port/"
  • systemctl enable docker
systemctl start docker


2. Docker Composeのインストール

  • curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
 ※プロクシ環境の場合「-x proxy_server:port」をつけてcurlを実行する
  • chmod +x /usr/local/bin/docker-compose


figdocker-composeにかわったのだけど..
figのほうがコマンド短くってよかったなあ..

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...