狠狠撸

狠狠撸Share a Scribd company logo
開発チームもIaCやってみたい
~VSOとDockerの組合せにチャレンジ~
@CubedKachi
第29回 TFSUG東京
Visual Studio 翱苍濒颈苍别で顿别惫翱辫蝉
開発品質を上げれば
障害は最小限に抑えられる!
そんな風に考えている時期が
私にもありました…
そんな風に考えている時期が
私にもありました…
顧客環境でだけ
発生する障害
いつの間にか
ビルド職人に…
ログがディスクを
食い潰す!
セキュリティ
レベルの違い
このままじゃ不味い。
IaCにチャレンジしよう!
VSOを使って
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
シナリオ
Overview
Micorosoft Azure Docker Hub
official
docker push cubedkachi/tfsug:29
docker pull centos:centos7
docker run cubedkachi/tfsug:29
Visual Studio Online
Client Machine for control
Cross Platform Build
Azure VM for VSO-Agent
Azure VM for Docker run
SSH
HTTP
cubedkachi
centos
tfsug
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
シナリオ
Overview
Micorosoft Azure
Azure VM for VSO-Agent
Azure VM for Docker run
Azure上で仮想マシンを2つ作成する
?VSO-Agent実行用にOpenLogic7.1
?Docker実行用にCoreOS stable
1. Azure 痴惭の準备
エンドポイントの設定で
80番ポートを開け忘れないように注意!
1. Azure 痴惭の準备
CoreOS側のマシンを使うのはしばらく先だが、
疎通確認だけはしておく。
1. Azure 痴惭の準备
Last login: Sun Oct 25 02:48:57 2015 from hogehoge
CoreOS stable (766.4.0)
cubedkachi@tfsug-coreos ~ $
疎通確認ができれば、次の手順へ。
1. Azure 痴惭の準备
Last login: Sun Oct 25 05:49:07 2015 from hogehoge
[cubedkachi@tfsug-openlogic ~]$
?VSO-Agent実行用のAzure VM(OpenLogic)を作成
?Docker実行用のAzure VM(CoreOS)を作成
?エンドポイントの設定を忘れずに
1. Azure 痴惭の準备
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
シナリオ
Overview
Micorosoft Azure
Client Machine for control
Azure VM for VSO-Agent
SSH
セキュリティ関係の設定は複雑になりがちなので省略。
今回はfirewalldからiptableに変更した。
2. VSO-Agentの設定
[~]$ ### Firewallにはiptablesを利用する
[~]$ sudo systemctl stop firewalld
[~]$ sudo systemctl mask firewalld
[~]$ sudo yum install -y iptables-services
[~]$ sudo systemctl enable iptables
[~]$ sudo systemctl start iptables
dockerコマンドは大量に試行錯誤することになるので
sudoなしで実行できるようにdockerというグループに
ユーザを追加して一旦ログアウトする
2. VSO-Agentの設定
[~]$ ### Dockerの設定
[~]$ sudo yum install -y docker
[~]$ sudo systemctl start docker
[~]$ sudo systemctl enable docker
[~]$ # sudoなしでDockerを使う準備
[~]$ sudo groupadd docker
[~]$ sudo gpasswd -a $USER docker
[~]$ sudo systemctl restart docker
[~]$ exit
Dockerイメージのレポジトリとして
Docker Hubを利用するのでログインしておく。
詳細はDocker Hubを参考のこと。
2. VSO-Agentの設定
[~]$ ### Docker Hubにログインしておく ###
[~]$ docker login
Username: cubedkachi
Password: 
Email: *@.***
WARNING: login credentials saved in /home//.docker/config.json
Login Succeeded
VSO-AgentからVSO上のリポジトリの取得には
Gitを利用するのでインストールする。
2. VSO-Agentの設定
[~]$ ### VSO-Agent関係 ###
[~]$ # Gitのインストール
[~]$ sudo yum install -y git
VSO-AgentはNode.js上で動作するので
まずはNode.jsをインストールする。
詳細はnodejs/node-v0.x-archiveを参考のこと。
2. VSO-Agentの設定
[~]$ ### VSO-Agent関係 ###
[~]$ # Node.jsのインストール
[~]$ sudo yum install -y gcc-c++
[~]$ sudo yum install -y make
[~]$ sudo curl --silent --location https://rpm.nodesource.com/setup
| sudo bash -
[~]$ sudo yum install -y nodejs
VSO-Agentのインストーラをインストールする。
VSO-Agentディレクトリを作成し、インストーラを実行する。
詳細はMicrosoft/vso-agentを参考のこと。
2. VSO-Agentの設定
[~]$ ### VSO-Agent関係 ###
[~]$ # VSO-Agentのインストール
[~]$ sudo npm install vsoagent-installer -g
[~]$ sudo chown -R $USER /root/.npm
[~]$ mkdir myagent
[~]$ cd myagent
[myagent]$ vsoagent-installer
2. VSO-Agentの設定
?Dockerをインストール
?Docker Hubを使えるようにログインしておく
?VSO-Agentをインストール
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
シナリオ
Overview
Micorosoft Azure
Visual Studio Online
Client Machine for control
HTTP
VSOのホーム画面から今回のシナリオで使う
Team Projectを作成する。
3. Team 笔谤辞箩别肠迟の作成
迷子に注意
Team Projectのリポジトリに
Gitを選択することにだけ注意する。
3. Team 笔谤辞箩别肠迟の作成
リポジトリを作るために色んな方法があるが、
今回はGit clientを使わないで楽をする。
Create ReadMe fileを選択すると…
3. Team 笔谤辞箩别肠迟の作成
README.mdが初回コミットとして自動生成される。
VSOのWebUIからもファイルの編集、コミットができるので
(邪道だけど)WebUI上だけでも開発できる。
3. Team 笔谤辞箩别肠迟の作成
VSO-Agentから実行したいシェルスクリプトを作成する。
WebUIで編集して保存すると自動でコミットされる。
3. Team 笔谤辞箩别肠迟の作成
コミットログ
スクリプトの内容
保存したら
自動コミット
シェルスクリプトからビルドするDockerfileを作成する。
CentOS7にhttpdをインストールして自動起動するだけの
シンプルな構成。
3. Team 笔谤辞箩别肠迟の作成
Dockerfileの
詳細は次頁
6月に追加されたクロスプラットフォームビルドにより
VSOから(Jenkinsのように)何でも出来るようになった。
いずれプラグインの概念も出てくるのでは…
3. Team 笔谤辞箩别肠迟の作成
docker_build.shの説明
#!/bin/sh
# レポジトリ→cubedkachi/tfsug
# タグ→29
# としてカレントディレクトリのDockerfileからコンテナイメージをビルドする
docker build -t cubedkachi/tfsug:29 ./
# ビルドしたコンテナイメージをDocker Hubのリポジトリに保存する
docker push -f cubedkachi/tfsug:29
望ましい状態を宣言するのではなく
コンテナを作成する手続を記述する。
起動したコンテナを後から変更しないという考え方。
3. Team 笔谤辞箩别肠迟の作成
Dockerfileの説明
FROM centos:centos7 # 公式リポジトリからCentOS7のイメージを取得する
MAINTAINER @CubedKachi # Dokcerfileの作者は@CubedKachi
RUN yum -y install httpd # httpdをインストールする
RUN systemctl enable httpd # httpdを自動起動するように設定する
CMD /sbin/init # コンテナ起動時にsystemdを実行する
Dockerfile内の主要な命令を上の表に挙げた。
詳細は公式ドキュメントを参考のこと。
3. Team 笔谤辞箩别肠迟の作成
命令 説明
FROM 作成元のコンテナイメージを指定
MAINTAINER コンテナイメージの作者を記述
ENV 環境変数を設定
RUN 指定のコマンドを実行
ADD コンテナイメージ内にファイルを追加
EXPOSE コンテナ内で使用するポート番号を記述
CMD コンテナ起動時に実行するコマンドを指定
3. Team 笔谤辞箩别肠迟の作成
?VSOからTeam ProjectをGitリポジトリで作成
?VSO-Agentから呼出すシェルスクリプトを作成
?シェルスクリプトからビルドするDokcerfileを作成
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
シナリオ
Overview
Micorosoft Azure Docker Hub
official
docker push cubedkachi/tfsug:29
docker pull centos:centos7
Visual Studio Online
Client Machine for control
Cross Platform Build
Azure VM for VSO-Agent
HTTP
cubedkachi
centos
tfsug
Alternate authentication credentialsを設定し、
VSO-Agentを認証できるように準備する。
詳細はこちらを参照のこと。
4. 痴厂翱-础驳别苍迟の実行
4. 痴厂翱-础驳别苍迟の実行
Control panel > Agent pools > Default > Roles
からAgent Pool Administratorsに先ほど設定した
Alternative authentication credentialsを指定する。
VSO-Agentを実行する。初回実行時はURL等も入力する。
認証はAlternative authentication credentialsを使う。
痴厂翱-础驳别苍迟の実行中はagent poolにdefaultが使用できる。
[myagent]$ node agent/vsoagent
Enter alternate username > tfsug
Enter alternate password > ****
Enter server url > https://.visualstudio.com
Enter agent name (enter sets tfsug-openlogic) >
Enter agent pool name (enter sets default) >
successful connect as 
4. 痴厂翱-础驳别苍迟の実行
BUILD > + からビルド定義を新規作成する。
4. 痴厂翱-础驳别苍迟の実行
BUILD > + からビルド定義を新規作成する。
Add build step… > Shell Scriptでファイルを指定する。
4. 痴厂翱-础驳别苍迟の実行
BUILD > + からビルド定義を新規作成する。
Add build step… > Shell Scriptでファイルを指定する。
General > Default queueにDefaultを選択。
4. 痴厂翱-础驳别苍迟の実行
ビルド定義を実行するとコンソールに結果が表示される。
4. 痴厂翱-础驳别苍迟の実行
ビルド定義を実行するとコンソールに結果が表示される。
ビルドが完了するのを見届ける。
4. 痴厂翱-础驳别苍迟の実行
ビルド定義を実行するとコンソールに結果が表示される。
ビルドが完了するのを見届ける。
Docker Hubにコンテナイメージがpushされている。
4. 痴厂翱-础驳别苍迟の実行
?Alternate authentication credentialsを設定する
?Agent Pool Administratorsに追加する
?VSO-Agentを起動する。
?シェルスクリプトを呼出すビルド定義を作成、実行する
4. 痴厂翱-础驳别苍迟の実行
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
シナリオ
Overview
Micorosoft Azure Docker Hub
docker run cubedkachi/tfsug:29
Client Machine for control
Azure VM for Docker run
SSH
cubedkachi
tfsug
5. Dockerの実行
CoreOSからDockerを実行する。
Docker Hubからコンテナイメージを取得して起動する。
~ $ sudo docker run --privileged -d -p 80:80 --name demo
cubedkachi/tfsug:29
Unable to find image 'cubedkachi/tfsug:29' locally
29: Pulling from cubedkachi/tfsug
Digest:sha256:a9e6b1d09fd37aefd9007fd21e427f678a089f1041f51cb873b
Status: Downloaded newer image for cubedkachi/tfsug:29
1d51436b58e321c6ff4633726b724a967dbdcbec94d1909991bb08abaa378663
5. Dockerの実行
CoreOSからDockerを実行する。
Docker Hubからコンテナイメージを取得して起動する。
ブラウザからURLを指定すると空ページが表示される。
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
シナリオ
Overview
Micorosoft Azure Docker Hub
official
docker push cubedkachi/tfsug:29
docker pull centos:centos7
docker run cubedkachi/tfsug:29
Visual Studio Online
Client Machine for control
Cross Platform Build
Azure VM for VSO-Agent
Azure VM for Docker run
SSH
HTTP
cubedkachi
centos
tfsug
そのコンテナ大丈夫?
1. Azure VMを準備
2. VSO-Agentの設定
3. Team 笔谤辞箩别肠迟の作成
4. 痴厂翱-础驳别苍迟の実行
5. Dockerの実行
インフラのテスト ← New!
シナリオ
環境作成を自動化するだけでは片手落ち。
ソースコードをCIするように
環境構築スクリプトもCIして初めて
インフラの品質が担保される。
インフラのテスト
次のセッションに続きます。
开発チームも滨补颁やってみたい~痴厂翱と顿辞肠办别谤の组合せにチャレンジ~
おまけ
CentOS系のディストリビューションで
Gitリポジトリ取得時にcode 128が発生した時の回避策。
[myagent]$ # ビルド実行時にGitのOAuth認証が通らないときは環境変数に
[myagent]$ # VSO_GIT_USERNAME、VSO_GIT_PASSWORDを指定して実行する。
[myagent]$ VSO_GIT_USERNAME=your_name VSO_GIT_PASSWORD=your_password
node agent/vsoagent

More Related Content

开発チームも滨补颁やってみたい~痴厂翱と顿辞肠办别谤の组合せにチャレンジ~