Upgrade to Pro — share decks privately, control downloads, hide ads and more …

awspec

 awspec

JAWS Festa Kyushu 2015 懇親会LT

Ken’ichiro Oyama

November 03, 2015
Tweet

More Decks by Ken’ichiro Oyama

Other Decks in Technology

Transcript

  1. awspec
    k1LoW
    Fusic  Co.,Ltd.
    2015.11.3
    1

    View Slide

  2. 空気を読まず
    まじめにテックネタします!
    2

    View Slide

  3. -‐‑‒  Fusic  Co.,Ltd.
    -‐‑‒  エンジニア  /  マネージャ
    -‐‑‒  PHPer
    -‐‑‒  Emacser
    Who?
    3

    View Slide

  4. Serverspec
    4

    View Slide

  5. Serverspec
    •  http://serverspec.org/
    •  サーバの構成テストツール
    •  構築したサーバ内の環境(ApacheやMySQLやPHPや)が
    意図したとおりにできているかをテストできるツール
    5

    View Slide

  6. 便便利利
    6

    View Slide

  7. AWSでもリソース構成の
    テストをしたい!
    7

    View Slide

  8. awspec
    8

    View Slide

  9. awspec
    •  http://github.com/k1LoW/awspec
    •  awsspecでもaws-‐‑‒specでもないです!
    •  AWSリソースの構成テストツール
    •  構築したAWSリソースの環境(VPCやEC2やRDS  
    Parameter  Groupや)が意図したとおりにできているか
    をテストできるツール
    •  現在GitHubスター  95(あと5でawesome-‐‑‒awsに掲載
    できる!!)
    9

    View Slide

  10. sample  (EC2)
    describe ec2('my-ec2-tag-name') do
    it { should be_running }
    its(:instance_id) { should eq 'i-ec12345a' }
    its(:instance_type) { should eq ’t2.small' }
    its(:public_ip_address) { should eq '123.0.456.789' }
    it { should have_security_group('my-sg-name') }
    it { should belong_to_vpc('my-vpc') }
    it { should belong_to_subnet('subnet-1234a567') }
    it { should have_eip('123.0.456.789') }
    it { should be_disabled_api_termination }
    end
    10

    View Slide

  11. sample  (Route53)
    describe route53_hosted_zone('example.com.') do
    it { should exist }
    its(:resource_record_set_count) { should eq 5 }
    it { should have_record_set('example.com.').a('123.456.7.890') }
    it { should have_record_set('example.com.').mx('10 mail.example.com') }
    it { should
    have_record_set('mail.example.com.').a('123.456.7.890').ttl(3600) }
    ns = 'ns-123.awsdns-45.net.
    ns-6789.awsdns-01.org.
    ns-2345.awsdns-67.co.uk.
    ns-890.awsdns-12.com.'
    it { should have_record_set('example.com.').ns(ns) }
    it { should have_record_set('s3.example.com.').alias('s3-website-us-
    east-1.amazonaws.com.', 'Z2ABCDEFGHIJKL') }
    end
    11

    View Slide

  12. Resource  Types  (v.0.18.2)
    •  ec2
    •  rds
    •  rds_̲db_̲parameter_̲group
    •  security_̲group
    •  vpc
    •  s3
    •  route53_̲hosted_̲zone
    •  auto_̲scaling_̲group
    •  subnet
    •  route_̲table
    •  ebs
    •  elb
    •  lambda
    •  iam_̲user
    •  iam_̲group
    •  iam_̲role
    •  iam_̲policy
    •  elasticache
    •  elasticache_̲cache_̲parameter
    _̲group
    •  cloudwatch_̲alarm
    •  ses_̲identity
    12

    View Slide

  13. $  awspec  generate
    13

    View Slide

  14. $  awspec  generate
    •  現状のAWSリソース構成からテストケース(spec)を⽣生
    成するコマンド
    •  cloudwatch_̲alarm  /  ec2  /  elb  /  iam_̲policy  /  rds  /  
    route53_̲hosted_̲zone  /  security_̲group  /  vpc
    •  ⾝身もフタもない機能だけどかなり便便利利
    •  現状のリソース構成をテストケースとしてリポジトリに
    コミットできる
    •  AWSリソース構成変更更時のTDDのスタートに最適
    14
    $ awspec generate ec2 [vpc_id]

    View Slide

  15. Thank  you!
    Fusicはテクノロジーが
    好きなエンジニアを募集しています
    https://fusic.github.io 15

    View Slide

  16. 16

    View Slide