狠狠撸

狠狠撸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

What's hot (20)

PDF
第1回 一撃サーバー構築シェルスクリプト勉強会
Yasutaka Hamada
?
PDF
Ansible quickstart
Hideki Saito
?
PDF
DockerとDocker Hubの操作と概念
Masahito Zembutsu
?
PDF
あの日実行したコンテナの名前を僕达はまだ知らない。
Masahito Zembutsu
?
PDF
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
Ryo Nakamaru
?
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
?
PPTX
颁辞苍蝉耻濒による运用自律化体験ハンズオンと颁辞苍蝉耻濒活用事例绍介
cloudconductor
?
PDF
Rancher command line interface
Masahito Zembutsu
?
PDF
はじめての CircleCI
Yosuke Mizutani
?
PDF
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
?
PDF
CloudFoundry 2 on Apache CloudStack 4.2.1
Kotaro Noyama
?
PDF
顿辞肠办别谤を活用したリクルートグループ开発基盘の构筑
Recruit Technologies
?
PDF
コンテナ技术と普及がシステム?インテグレータに与える影响
Masahito Zembutsu
?
PDF
Docker と ECS と WebSocket で最強のマルチプレイ?ゲームサーバを構築
gree_tech
?
PDF
NDS#31
hayajo Imai
?
PDF
はじめてのコンテナーDocker & Windows & Linux
Kazushi Kamegawa
?
PDF
とある社内ビックデータ基盘にバッチ用コンテナ基盘を构筑してみた
Hiroshi Toda
?
PDF
贬补蝉丑颈颁辞谤辫の狈辞尘补诲を使ったコンテナのスケジューリング手法
Masahito Zembutsu
?
PDF
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
?
第1回 一撃サーバー構築シェルスクリプト勉強会
Yasutaka Hamada
?
Ansible quickstart
Hideki Saito
?
DockerとDocker Hubの操作と概念
Masahito Zembutsu
?
あの日実行したコンテナの名前を僕达はまだ知らない。
Masahito Zembutsu
?
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
Ryo Nakamaru
?
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
?
颁辞苍蝉耻濒による运用自律化体験ハンズオンと颁辞苍蝉耻濒活用事例绍介
cloudconductor
?
Rancher command line interface
Masahito Zembutsu
?
はじめての CircleCI
Yosuke Mizutani
?
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
?
CloudFoundry 2 on Apache CloudStack 4.2.1
Kotaro Noyama
?
顿辞肠办别谤を活用したリクルートグループ开発基盘の构筑
Recruit Technologies
?
コンテナ技术と普及がシステム?インテグレータに与える影响
Masahito Zembutsu
?
Docker と ECS と WebSocket で最強のマルチプレイ?ゲームサーバを構築
gree_tech
?
はじめてのコンテナーDocker & Windows & Linux
Kazushi Kamegawa
?
とある社内ビックデータ基盘にバッチ用コンテナ基盘を构筑してみた
Hiroshi Toda
?
贬补蝉丑颈颁辞谤辫の狈辞尘补诲を使ったコンテナのスケジューリング手法
Masahito Zembutsu
?
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
?

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

PPTX
Visual Studio と Team Foundation Server / Visual Studio Team Services で実現するビル...
Masaki Takeda
?
PDF
Infrastructure as code for azure
Keiji Kamebuchi
?
PDF
DEV-005_200 時間以上お客様と向き合って見えた Team Foundation Server による開発業務効率化の実現方法
decode2016
?
PPTX
Azure Container Services and Microservices design pattern
Yoshio Terada
?
PPTX
DevOps on azure 高品質クラウドデザインを求めて
Atsushi Kojima
?
PDF
VMware Integrated OpenStack with NSX-V POCガイド (第3版)
Shojiro Ohtani
?
PPTX
Visual Studio と Team Foundation Server / Visual Studio Team Services で実現するビル...
Masaki Takeda
?
PPTX
Team Foundation Server 2015 による テスト工数削減
Masaki Takeda
?
PPTX
20161022 Linux on Azureの世界
Takayoshi Tanaka
?
PDF
础锄耻谤别顿别惫翱辫蝉で作る贬辞濒辞尝别苍蝉アプリ颁滨环境
Tatsuya Sakai
?
PDF
DevOps on Azure Kubernetes
Issei Hiraoka
?
PDF
S15 コマンドラインおよび API による Microsoft Azure の管理
Microsoft Azure Japan
?
PDF
Azure DevOps - ALGYAN Oct 2022.pdf
YasuhiroHanda2
?
PDF
Microsoft Azureから使うLinux
Trainocate Japan, Ltd.
?
PDF
20190201 Cloud Native Kansai AKS Azure
Issei Hiraoka
?
PPTX
Microsoft Azure IaaS 体験手順書
Masaki Takeda
?
PDF
[Azure Antenna] HPCだけじゃないDeep Learningでも使える ハイパフォーマンスAzureインフラ ~ Azureハイパフォーマ...
Shuichi Gojuki
?
PDF
GMO フ?ライヘ?ート DMP 開発て? 取り組んて?きた DevOps と今後の展望
Tetsuo Yamabe
?
PDF
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
Shinichiro Arai
?
PDF
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第1日:ハンズオン狈辞1
Etsuji Nakai
?
Visual Studio と Team Foundation Server / Visual Studio Team Services で実現するビル...
Masaki Takeda
?
Infrastructure as code for azure
Keiji Kamebuchi
?
DEV-005_200 時間以上お客様と向き合って見えた Team Foundation Server による開発業務効率化の実現方法
decode2016
?
Azure Container Services and Microservices design pattern
Yoshio Terada
?
DevOps on azure 高品質クラウドデザインを求めて
Atsushi Kojima
?
VMware Integrated OpenStack with NSX-V POCガイド (第3版)
Shojiro Ohtani
?
Visual Studio と Team Foundation Server / Visual Studio Team Services で実現するビル...
Masaki Takeda
?
Team Foundation Server 2015 による テスト工数削減
Masaki Takeda
?
20161022 Linux on Azureの世界
Takayoshi Tanaka
?
础锄耻谤别顿别惫翱辫蝉で作る贬辞濒辞尝别苍蝉アプリ颁滨环境
Tatsuya Sakai
?
DevOps on Azure Kubernetes
Issei Hiraoka
?
S15 コマンドラインおよび API による Microsoft Azure の管理
Microsoft Azure Japan
?
Azure DevOps - ALGYAN Oct 2022.pdf
YasuhiroHanda2
?
Microsoft Azureから使うLinux
Trainocate Japan, Ltd.
?
20190201 Cloud Native Kansai AKS Azure
Issei Hiraoka
?
Microsoft Azure IaaS 体験手順書
Masaki Takeda
?
[Azure Antenna] HPCだけじゃないDeep Learningでも使える ハイパフォーマンスAzureインフラ ~ Azureハイパフォーマ...
Shuichi Gojuki
?
GMO フ?ライヘ?ート DMP 開発て? 取り組んて?きた DevOps と今後の展望
Tetsuo Yamabe
?
惭颈肠谤辞蝉辞蹿迟の翱厂厂への取り组み
Shinichiro Arai
?
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第1日:ハンズオン狈辞1
Etsuji Nakai
?
Ad

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