SlideShare a Scribd company logo
1 of 14
Download to read offline
Serverspecを導入したものの
放置気味な人へ
Ansible Meetup in Tokyo 2015.09
@ks888sk
自己紹介
● @ks888sk (やがみ)
○ メーカー系企業のインフラエンジニア
○ Ansibleはここ一年くらい実サービスで使ってみています
○ Ansible向けのデバッガとか作ってます
Serverspec
● サーバの設定をテストするツール
○ らくらく導入
■ gemで一発
■ 初期化スクリプトあり〼
○ テストが簡単に書ける
describe package('httpd')
it { should be_installed }
end
Serverspecあるある
1. Serverspecを導入してみる
○ 導入後しばらくは、ちゃんとテストを書く
2. 数々の理由から、テストを書かなくなる
○ 忙しくて。。忘れてて。。。
3. 設定ミスが問題を起こす
○ テスト書いていれば...!
どうすればいいか?
Serverspecのテストを書き続けるには
A. TDDの実践
○ サーバ/インフラ徹底攻略とかが詳しいです
B. コードレビュー時にチェック
C. ツールでテスト不足をチェック
○ テストがないAnsibleのタスクを指摘してくれる
○ 次ページ以降で紹介
ツールでテスト不足をチェック
● Kirby
○ Ansible用のコードカバレッジツール(拙作)
○ Playbook/Roleのタスクのうち、どれだけがServerspecで
テストされているか(=カバレッジ)がわかる
○ テストがないタスクの一覧もわかる
Kirbyの実行結果の例
$ ansible-playbook web.yml -i inventory
(省略)
TASK: [Apache2のインストール] ********************************************************
(省略)
TASK: [/etc/apache2/conf-available/security.confの設定] **************************
(省略)
PLAY RECAP ********************************************************************
*** Kirby Results ***
Coverage : 50% (1 of 2 tasks are tested)
Not tested:
- /etc/apache2/conf-available/security.confの設定
*** Kirby End *******
localhost : ok=2 changed=2 unreachable=0 failed=0
通常通りAnsibleを実行
カバレッジ、テストされてい
ないタスク一覧を表示
Kirbyのその他の良さ
● テストになっていないテスト (下例)が見つかる
tasks:
- name: Apache2のインストール
apt: pkg=apache2 state=present update_cache=yes
- name: /etc/apache2/conf-available/security.confの設定
template: src=security.conf.j2 dest=/etc/apache2/conf-available/security.conf
Playbook (抜粋)
describe package('apache2') do
it { should be_installed }
end
describe file('/etc/apache2/conf-available/security.conf') do
it { should be_file }
end
specファイル (抜粋)
Kirbyのその他の良さ
● テストになっていないテスト (下例)が見つかる
tasks:
- name: Apache2のインストール
apt: pkg=apache2 state=present update_cache=yes
- name: /etc/apache2/conf-available/security.confの設定
template: src=security.conf.j2 dest=/etc/apache2/conf-available/security.conf
Playbook (抜粋)
describe package('apache2') do
it { should be_installed }
end
describe file('/etc/apache2/conf-available/security.conf') do
it { should be_file }
end
specファイル (抜粋)
黄枠タスクに書き間違いが
あっても、発見できない
→ テストとして不十分
Kirbyのその他の良さ
● Kirbyが見つけてくれました(ドヤ)
$ ansible-playbook web.yml -i inventory
(省略)
PLAY RECAP ********************************************************************
*** Kirby Results ***
Coverage : 50% (1 of 2 tasks are tested)
Not tested:
- /etc/apache2/conf-available/security.confの設定
*** Kirby End *******
localhost : ok=2 changed=2 unreachable=0 failed=0
security.conf設定タスクの
テストがないことを指摘
Kirbyの詳細
● 以下をご確認下さい
○ GitHubページ
■ https://github.com/ks888/kirby
○ ブログ記事
■ http://ks888.hatenablog.
com/entry/2015/09/06/223538
まとめ
● Serverspecのテストが段々書かれなくなる問題
● 拙作ツールによる対策を紹介
○ Ansible用のコードカバレッジツールKirby
■ Ansibleのタスクのうち、テストされていないタスク一覧
がわかる
■ ご意見等、ぜひTwitter(@ks888sk)にお願いします
ご清聴ありがとうございました

More Related Content

What's hot

Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
Kikunaga Taishi
 
Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.
Yukihiko SAWANOBORI
 
pixivのインフラを支える技術
pixivのインフラを支える技術pixivのインフラを支える技術
pixivのインフラを支える技術
Ryuta Kamizono
 

What's hot (20)

Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
How to contribute AWX
How to contribute AWXHow to contribute AWX
How to contribute AWX
 
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_autohb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
 
BOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable InfrastructureBOSHで始めるImmutable Infrastructure
BOSHで始めるImmutable Infrastructure
 
Amazon EKS への道 ~ EKS 再入門 ~
Amazon EKS への道 ~ EKS 再入門 ~Amazon EKS への道 ~ EKS 再入門 ~
Amazon EKS への道 ~ EKS 再入門 ~
 
Amazon EKS への道 ~入門編~
Amazon EKS への道 ~入門編~Amazon EKS への道 ~入門編~
Amazon EKS への道 ~入門編~
 
Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015Cloud Foundryの件について@OpenStack Days Tokyo 2015
Cloud Foundryの件について@OpenStack Days Tokyo 2015
 
Virtual Kubelet and Virtual Node
Virtual Kubelet and Virtual NodeVirtual Kubelet and Virtual Node
Virtual Kubelet and Virtual Node
 
Azure Pipline × Terraform
Azure Pipline × TerraformAzure Pipline × Terraform
Azure Pipline × Terraform
 
Understanding Azure Application Gateway
Understanding Azure Application GatewayUnderstanding Azure Application Gateway
Understanding Azure Application Gateway
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.Physical to Iaas(Instance), case of VIP.
Physical to Iaas(Instance), case of VIP.
 
pixivのインフラを支える技術
pixivのインフラを支える技術pixivのインフラを支える技術
pixivのインフラを支える技術
 
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
 
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
 
もっと気軽に始めるAnsible
もっと気軽に始めるAnsibleもっと気軽に始めるAnsible
もっと気軽に始めるAnsible
 
ACI + Ansible
ACI + AnsibleACI + Ansible
ACI + Ansible
 
KubernetesでPHPを動かした話
KubernetesでPHPを動かした話KubernetesでPHPを動かした話
KubernetesでPHPを動かした話
 
CFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service BrokerCFの便利機能を他の環境でも。Open Service Broker
CFの便利機能を他の環境でも。Open Service Broker
 
Jupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIJupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NII
 

Viewers also liked

クックパッドでPuppetを導入した話
クックパッドでPuppetを導入した話クックパッドでPuppetを導入した話
クックパッドでPuppetを導入した話
Satoshi Takada
 

Viewers also liked (16)

Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1Ansible 2.0を使って組む kubernetesクラスタ vol.1
Ansible 2.0を使って組む kubernetesクラスタ vol.1
 
Ansibleを使ってみよう ~Windowsターゲット編~
Ansibleを使ってみよう~Windowsターゲット編~Ansibleを使ってみよう~Windowsターゲット編~
Ansibleを使ってみよう ~Windowsターゲット編~
 
Vagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたいVagrant環境のAnsibleを速くしたい
Vagrant環境のAnsibleを速くしたい
 
クックパッドでPuppetを導入した話
クックパッドでPuppetを導入した話クックパッドでPuppetを導入した話
クックパッドでPuppetを導入した話
 
Ansible study1
Ansible study1Ansible study1
Ansible study1
 
Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!
 
入門Ansible
入門Ansible入門Ansible
入門Ansible
 
Hyperlapse for Azure Media Servicesを使ってみた
Hyperlapse for Azure Media Servicesを使ってみたHyperlapse for Azure Media Servicesを使ってみた
Hyperlapse for Azure Media Servicesを使ってみた
 
忍者ツールズのCouchbase導入事例
忍者ツールズのCouchbase導入事例忍者ツールズのCouchbase導入事例
忍者ツールズのCouchbase導入事例
 
Aws2013 03-15 last2
Aws2013 03-15 last2Aws2013 03-15 last2
Aws2013 03-15 last2
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
 
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 

Similar to Serverspecを導入したものの放置気味な人へ

TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
Tomomi Kajita
 

Similar to Serverspecを導入したものの放置気味な人へ (20)

Serverless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニングServerless Meetup Tokyo #2 オープニング
Serverless Meetup Tokyo #2 オープニング
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
 
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523テスト自動化読書会 第3章 20150523
テスト自動化読書会 第3章 20150523
 
hbstudy#82 SRE大全 FullGCとの闘い (UZABSE SRE Team Hirofumi Kubo)
hbstudy#82 SRE大全 FullGCとの闘い (UZABSE SRE Team Hirofumi Kubo)hbstudy#82 SRE大全 FullGCとの闘い (UZABSE SRE Team Hirofumi Kubo)
hbstudy#82 SRE大全 FullGCとの闘い (UZABSE SRE Team Hirofumi Kubo)
 
2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」
2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」
2014-10-17 「“A9共催! AWSプロダクトシリーズ よくわかる AWS CloudSearch” スクーでのCloudSearch利用実例」
 
Auto Scalingの薄い資料
Auto Scalingの薄い資料Auto Scalingの薄い資料
Auto Scalingの薄い資料
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
Introduction of-aws-well-architected
Introduction of-aws-well-architectedIntroduction of-aws-well-architected
Introduction of-aws-well-architected
 
TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょTFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょ
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
 
Lt 20130302 1
Lt 20130302 1Lt 20130302 1
Lt 20130302 1
 
Iret tech labo#5 ブログから学ぶサーバレスの作り方
Iret tech labo#5 ブログから学ぶサーバレスの作り方Iret tech labo#5 ブログから学ぶサーバレスの作り方
Iret tech labo#5 ブログから学ぶサーバレスの作り方
 
Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法Ansible Playbookの短時間デバッグ方法
Ansible Playbookの短時間デバッグ方法
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 
XP祭り2019 A-3-1 突然アジャイル人材の育成を任されたエンジニアの奮闘記
XP祭り2019 A-3-1 突然アジャイル人材の育成を任されたエンジニアの奮闘記XP祭り2019 A-3-1 突然アジャイル人材の育成を任されたエンジニアの奮闘記
XP祭り2019 A-3-1 突然アジャイル人材の育成を任されたエンジニアの奮闘記
 
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
 
Ansible/Vagrantでアドテク環境を最速構築
Ansible/Vagrantでアドテク環境を最速構築Ansible/Vagrantでアドテク環境を最速構築
Ansible/Vagrantでアドテク環境を最速構築
 

Recently uploaded

Recently uploaded (10)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Serverspecを導入したものの放置気味な人へ