SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
テスト駆動で行うネットワーク自動化のすすめ
Test Driven Network Automation
 
NetOpsCoding #1 (@kinunori)
自己紹介
{
"name": "山口 正徳(@kinunori)",
"Role": "Security/Network/Server Engineer",
"Work": "OpenStack/AWS",
"Lang": "Ruby",
"Community": "API Meetup/ログ分析勉強会",
"Talks": "Interop 2015 Conf. C2-3"
}
テスト駆動開発って
ご存知ですか?
テスト駆動開発とは
 
ソフトウェアの機能ごとに、テストコードを最初に書き、
そのテストコードが動作する実装、というステップを繰り返し
ソフトウェアの設計・開発を行う開発手法です
 
詳細はwikipediaで
https://ja.wikipedia.org/wiki/テスト駆動開発
どうやるの?
Todoに対して、
 ・テストコードを書く
 ・テストコードを実行する -> (失敗)
 ・テストが通るコードを実装する
 ・テストコードを実行する -> (成功)
 ・コードの最適化 (リファクタリング)
を繰り返していきます
使うツール(一例)
• Serverspec
http://serverspec.org/
• Itamae
https://github.com/itamae-kitchen/itamae
• Cumulus Linux(仮想OS版)
https://cumulusnetworks.com/cumulus-vx/
• Vagrant
https://www.vagrantup.com/
Todo
・インタフェース swp1をリンクアップさせる
・インタフェース swp1に172.16.0.1/24のIPを付与する
・ブリッジ br-data を作る
・ブリッジ br-data に swp1 を追加する
・192.168.100.0/24へのルートを設定する
Todoからテストコードを書く
require 'spec_helper'
describe interface('swp1') do
it { should be_up }
end
テストを実行する
$ rake spec
<snip>
Finished in 0.29055 seconds (files took 7.04 seconds to load)
1 example, 1 failure
Failed examples:
rspec ./spec/default/cumulus_vagrant_spec.rb:4 # Interface "swp1" should be up
テストを成功させるテスト対象コードを書く
execute "configure a swp1" do
command "sudo ip link set dev swp1 up"
end
テスト対象コードを実行する
$ itamae ssh --vagrant --host default itamae/cookbooks/interfaces.rb
INFO : Starting Itamae...
INFO : Recipe: /Users/masa/work/Vagrant/cumulus/itamae/cookbooks/interfaces.rb
INFO : execute[configure a swp1] executed will change from 'false' to 'true'
再度テストを実行し成功になる事を確認する
$ rake spec
<snip>
Interface "swp1"
should be up
Finished in 0.22974 seconds (files took 5.91 seconds to load)
1 example, 0 failures
Todoからテストコードを書く(以降、繰り返し)
require 'spec_helper'
describe interface('swp1') do
it { should be_up }
it { should have_ipv4_address("172.16.0.1/24") }
end
テストを成功にしたままリファクタリングする
ネストなどで汚くなり、再利用性や可読性が下がったコードを
きれいにします
     
# node.jsonで指定されたswpをリンクアップする
node[:swp].each do |swp|
execute "#{swp}_linkup" do
command "sudo ip link set dev #{swp} up"
end
end
テスト駆動の良いところ
・実装フェーズでの考慮漏れ(設定漏れ)が少ない
 
・テストコードを試験項目、実行結果を試験結果として扱うで
エクセルワークを削減できる
・変更に強いという事はコードを有効に使い続けられる
・コードが変更に強くなればインフラの継続的インテグレー
ションへの対応を柔軟にできる

Mais conteúdo relacionado

Mais procurados

日本で DevOps を ロケットスタートする方法
日本で DevOps を  ロケットスタートする方法日本で DevOps を  ロケットスタートする方法
日本で DevOps を ロケットスタートする方法
Puppet
 

Mais procurados (19)

Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
 
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
 
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
AmebaのOpenStack - OpenStack最新情報セミナー 2015年12月
 
サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」
 
Serverspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へServerspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へ
 
Nishimoto osh2014: Test driven development and accessibility
Nishimoto osh2014: Test driven development and accessibilityNishimoto osh2014: Test driven development and accessibility
Nishimoto osh2014: Test driven development and accessibility
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
 
Spring Boot + Netflix Eureka
Spring Boot + Netflix EurekaSpring Boot + Netflix Eureka
Spring Boot + Netflix Eureka
 
Infrakitの話とk8s+GPUの話
Infrakitの話とk8s+GPUの話Infrakitの話とk8s+GPUの話
Infrakitの話とk8s+GPUの話
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
 
Azure Functions Tips
Azure Functions TipsAzure Functions Tips
Azure Functions Tips
 
Scalaコーディングの準備
Scalaコーディングの準備Scalaコーディングの準備
Scalaコーディングの準備
 
日本で DevOps を ロケットスタートする方法
日本で DevOps を  ロケットスタートする方法日本で DevOps を  ロケットスタートする方法
日本で DevOps を ロケットスタートする方法
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
 
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
Openstack管理運用ソフトの決定版?!かもしれないAppFormix - OpenStack最新情報セミナー(2017年3月)
 

Destaque

Destaque (16)

NETCONF & YANG
NETCONF & YANGNETCONF & YANG
NETCONF & YANG
 
Data models-and-automation-jp
Data models-and-automation-jpData models-and-automation-jp
Data models-and-automation-jp
 
Quick Yang v1.0
Quick Yang v1.0Quick Yang v1.0
Quick Yang v1.0
 
Dynamic Service Configuration and Automated Network Configuration with NETCON...
Dynamic Service Configuration and Automated Network Configuration with NETCON...Dynamic Service Configuration and Automated Network Configuration with NETCON...
Dynamic Service Configuration and Automated Network Configuration with NETCON...
 
Network Test Automation - Net Ops Coding 2015
Network Test Automation - Net Ops Coding 2015Network Test Automation - Net Ops Coding 2015
Network Test Automation - Net Ops Coding 2015
 
Cloud20150802
Cloud20150802Cloud20150802
Cloud20150802
 
Module 2: Why NETCONF and YANG
Module 2: Why NETCONF and YANGModule 2: Why NETCONF and YANG
Module 2: Why NETCONF and YANG
 
Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial
 
Module 3: NETCONF and YANG Concepts
Module 3: NETCONF and YANG ConceptsModule 3: NETCONF and YANG Concepts
Module 3: NETCONF and YANG Concepts
 
Module 6: YANG Tutorial - part 2
Module 6: YANG Tutorial - part 2Module 6: YANG Tutorial - part 2
Module 6: YANG Tutorial - part 2
 
Module 5: YANG Tutorial - part 1
Module 5: YANG Tutorial - part 1Module 5: YANG Tutorial - part 1
Module 5: YANG Tutorial - part 1
 
Module 1: ConfD Technical Introduction
Module 1: ConfD Technical IntroductionModule 1: ConfD Technical Introduction
Module 1: ConfD Technical Introduction
 
オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介オープンソースNW監視ツールのご紹介
オープンソースNW監視ツールのご紹介
 
なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編
 
A 30-minute Introduction to NETCONF and YANG
A 30-minute Introduction to NETCONF and YANGA 30-minute Introduction to NETCONF and YANG
A 30-minute Introduction to NETCONF and YANG
 
NETCONF YANG tutorial
NETCONF YANG tutorialNETCONF YANG tutorial
NETCONF YANG tutorial
 

Semelhante a テスト駆動で行うネットワーク自動化のすすめ

ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summary
Yukio NAGAO
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Akira Inoue
 

Semelhante a テスト駆動で行うネットワーク自動化のすすめ (20)

OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
Tips and Tricks for developing Windows APO drivers
Tips and Tricks for developing Windows APO driversTips and Tricks for developing Windows APO drivers
Tips and Tricks for developing Windows APO drivers
 
Kobe sec#7 summary
Kobe sec#7 summaryKobe sec#7 summary
Kobe sec#7 summary
 
Ldd13 present
Ldd13 presentLdd13 present
Ldd13 present
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
 
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃないLINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
LINE BOOT AWARDS に挑む ~テクノロジーファーストでもいいじゃない
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
OSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSCOSC2018 hiroshima session slide by OSSC
OSC2018 hiroshima session slide by OSSC
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App Center
 
初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)
 
AWS Summit Tokyo 2015_NTTデータセッション(前半:クラウドを活用したオムニチャネル基盤構築)
AWS Summit Tokyo 2015_NTTデータセッション(前半:クラウドを活用したオムニチャネル基盤構築)AWS Summit Tokyo 2015_NTTデータセッション(前半:クラウドを活用したオムニチャネル基盤構築)
AWS Summit Tokyo 2015_NTTデータセッション(前半:クラウドを活用したオムニチャネル基盤構築)
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 

テスト駆動で行うネットワーク自動化のすすめ