$30 off During Our Annual Pro Sale. View Details »

サーバ構成管理について

 サーバ構成管理について

Yusuke Matsuura

July 06, 2016
Tweet

More Decks by Yusuke Matsuura

Other Decks in Programming

Transcript

  1. αʔόߏ੒؅ཧʹ͍ͭͯ ʙ#BDLMPHͷ৔߹  ୈࡾճ'VLVPLB%FW0QTษڧձ  8FE  https://visualhunt.com/photo/43802/

  2. 松浦祐亮 (Yusuke Matsuura) @matsuzj Infrastructure Engineer @ nulab About me

  3. 国内を中⼼に 約4300クライアント が利⽤するプロジェクト管理ツール タスク管理機能に加え、 •  WebDAVによるファイル共有 •  GitやSubversionのリポジトリホスティング などを提供。 http://www.backlog.jp

  4. はじめに・・ ग़యٶԼ߶ีஶʮ4FSWFSTQFDʯ ʢΦϥΠϦʔɾδϟύϯץʣ ࢿྉΛ࡞੒͢Δʹ͋ͨΓ ࢀߟɺҾ༻ͤͯ͞௖͖· ͨ͠ɻ

  5. •  4FSWFSTQFDʹ͍ͭͯ •  #BDLMPHͰͷαʔόߏ੒؅ཧ •  4FSWFSTQFDͷ࢖͍υίϩ •  ·ͱΊ アジェンダ

  6. 4FSWFSTQFDʹ͍ͭͯ

  7. 4FSWFSTQFD͸αʔόͷߏ੒खॱΛϦϑΝ ΫλϦϯά͢ΔͨΊͷςετπʔϧͰ͢ɻ $IFG 1VQQFU "OTJCMF౳ͷʮαʔόঢ়ଶ Λهड़ͨ͠ίʔυʯʢΠϯϑϥίʔυʣΛ ςετର৅ͱ͍ͯ͠·͢ɻ  Serverspec とは

  8. 4FSWFSTQFDͷຊ࣭͸ςετۦಈʹΑͬͯ Πϯϑϥίʔυͷ։ൃ΍ϦϑΝΫλϦϯά Λଅਐ͢Δ͜ͱ ⽬的

  9. 4FSWFSTQFDͷڀۃͷ໨ඪ͸γεςϜͷܧ ଓతվળʹد༩͢Δ͜ͱ 本質

  10. どのように書くの? describe service('h-pd') do it { should be_enabled } it

    { should be_running } end 3VCZͰར༻͞Ε͍ͯΔ3TQFDͷه๏Ͱॻ͚ ·͢ɻ ·ͨςετ͸44)઀ଓΛ͓͜ͳ࣮ͬͯࡍͷՔ ಇαʔόʹରͯ͠ઃఆνΣοΫΛߦ͍·͢ɻ
  11. •  JQpMUFS •  JQOBU •  JQUBCMFT •  LFSOFM@NPEVMF •  MJOVY@BVEJU@TZTUFN

    •  MJOVY@LFSOFM@QBSBNFUFS •  MYD •  NBJM@BMJBT •  NZTRM@DPOpH •  QBDLBHF •  QIQ@DPOpH •  QPSU •  QQB •  QSPDFTT •  SPVUJOH@UBCMF リソースタイプ •  CPOE •  CSJEHF •  DHSPVQ •  DPNNBOE •  DSPO •  EFGBVMU@HBUFXBZ •  EPDLFS@DPOUBJOFS •  EPDLFS@JNBHF •  pMF •  HSPVQ •  IPTU •  JJT@BQQ@QPPM •  JJT@XFCTJUF •  JOUFSGBDF •  JQUBCMFT •  TFMJOVY •  TFMJOVY@NPEVMF •  TFSWJDF •  VTFS •  Y@DFSUJpDBUF •  Y@QSJWBUF@LFZ •  XJOEPXT@GFBUVSF •  XJOEPXT@SFHJTUSZ@LFZ •  ZVNSFQP •  [GT
  12. #BDLMPHͰͷαʔόߏ੒؅ཧ

  13. •  5FSSBGPSN •  "OTJCMF サーバ構築に使うツール

  14. ツールの役割分担 ツール 目的 Terraform AWSリソース準備 Ansible サーバプロビジョニング

  15. Πϯϑϥͷߏஙɾมߋɾόʔδϣϯ؅ཧΛ ҆શ͔ͭޮ཰తʹߦ͏ͨΊͷπʔϧͰ͢ɻ "84 ($1 "[VSF౳ͷ༷ʑͳϦιʔεʹ ରԠ͍ͯ͠·͢ɻ Terraform とは

  16. "84Λ࢖͏͜ͱ͕ଟ͘ɺϦιʔεͷ؅ཧʹ 5FSSBGPSNΛར༻͍ͯ͠·͢ɻ  •  71$ͷ࡞੒ •  4FDVSJUZ(SPVQͷ࡞੒ •  &$ͷىಈ Backlog

    では・・・
  17. Terraform 利⽤イメージ ~ VPC

  18. Terraform 利⽤イメージ ~ EC2

  19. "OTJCMF͸ɺଟ਺ͷαʔόʔ΍ෳ਺ͷΫϥ΢ υΠϯϑϥΛ౷Ұతʹ੍ޚͰ͖Δߏ੒؅ཧ πʔϧͰ͢ɻ αʔόଆʹΤʔδΣϯτͷΠϯετʔϧΛ ͢Δඞཁ͕ͳ͘44)͕Ͱ͖Ε͹࢖͏͜ͱ͕ Ͱ͖·͢ɻ·ͨ:".-Λॻ͚ͩ͘Ͱେ఍ͷ ࣄ͸ग़དྷΔͱ͍ͬͨγϯϓϧͳߏ੒Ͱ͢ɻ Ansible とは

  20. Ansible 利⽤イメージ

  21. 4FSWFSTQFDͷ࢖͍υίϩ

  22. •  BXTQFD •  4FSWFSTQFD  サーバテストに使うツール

  23. テストツールの役割分担 ツール 目的 awspec AWSリソースのテスト Serverspec サーバのテスト

  24. ͦ΋ͦ΋ར༻໨తͬͯԿʁ

  25. •  ςετۦಈʹΑΔΠϯϑϥίʔυ։ൃ •  αʔόߏஙޙͷ֬ೝ࡞ۀͷࣗಈԽ •  Քಇ͍ͯ͠Δαʔόͷ؂ࢹ •  αʔό࠶ىಈޙͷঢ়ଶ֬ೝ •  αʔόͷ͋Δ΂͖ঢ়ଶͷந৅Խ

    Serverspec の利⽤⽬的
  26. ψʔϥϘͰͲ͏࢖ͬͯΔʁ

  27. ओʹҎԼͷέʔεͰ࢖͏͜ͱ͕ଟ͍Ͱ͢ɻ  •  αʔόߏஙޙͷ֬ೝ࡞ۀͷࣗಈԽ •  αʔό࠶ىಈޙͷঢ়ଶ֬ೝ •  αʔόͷ͋Δ΂͖ঢ়ଶͷந৅Խ ヌーラボでどう使ってる?

  28. αʔόߏஙͷྲྀΕ͸ʁ

  29. サーバ構築の流れ

  30. αʔόςετͷྲྀΕ͸ʁ

  31. サーバテストの流れは? •  "OTJCMF 5FSSBGPSNͷιʔεͷมߋ͕ QVTI͞Εͨ৔߹ʹςετ͕࣮ࢪ͞Ε·͢ɻ •  ೔ճ͓͖࣌ؒʹδϣϒ͕૸ΔΑ͏ ʹͳͬͯ·͢ɻ

  32. ઃఆͰ޻෉ͨ͠ͱ͜Ζ

  33. •  "OTJCMFͷߏ੒ͱରൺͤͯ͞ɺςετΛॻ ͍͍ͯΔ •  QBSBSFMM࣮ߦͰ͖ΔΑ͏ʹ͍ͯ͠Δ  ˞࣮ࡍʹιʔείʔυΛΈͤΔ 設定で⼯夫したところ

  34. ςετΛ௥Ճͨ͠έʔε

  35. •  HMJCDͷ੬ऑੑ͕ݟ͔ͭͬͨޙʹςετΛ ௥Ճ テストを追加したケース # CVE-2015-0235 describe command("curl -fsSL https://example.com/GHOST.c

    | gcc - o /tmp/GHOST -xc - ; /tmp/GHOST") do it { should return_stdout /not vulnerable/ } end # CVE-2015-7547 describe package("glibc") do glibc = "2.17-106.166.amzn1" glibc = property['glibc'] if property['glibc'] it { should be_installed.with_version(glibc) } end
  36. •  TTMͷ੬ऑੑ͕ݟ͔ͭͬͨޙʹςετΛ௥ Ճ テストを追加したケース # CVE-2015-1793 ( for Amazon Linux

    package https:// alas.aws.amazon.com/ALAS-2015-564.html ) describe package("openssl") do it { should be_installed } it { should_not be_installed.with_version("1.0.1k-10.86.amzn1") } end
  37. •  ϩάϑΝΠϧ͕ଘࡏ͢Δ͔ テストを追加したケース describe file("/vol/log/front.#{date}.log") do it { should be_file

    } end
  38. •  &$$MBTTJDͰىಈ͍ͯ͠ΔΠϯελϯ εͷ&*1ΛνΣοΫ͢Δ テストを追加したケース describe ec2('i-11111111') do it { should

    have_eip(ʼ111.222.333.444') } end
  39. •  &$$MBTTJDͰىಈ͍ͯ͠ΔΠϯελϯ εͷ$MBTTJD-JOLઃఆΛνΣοΫ͢Δ テストを追加したケース describe ec2('i-11111111') do it { should

    have_classiclink(vpc-22222222) } it { should have_classiclink_security_group(sg-33333333) } it { should have_classiclink_security_group(sg-44444444) } it { should have_classiclink_security_group(sg-55555555) } end
  40. ·ͱΊ

  41. •  ՔಇதαʔόʹӨڹΛ༩͑ͣςετ͢Δ͜ͱ͕Ͱ ͖·͢ •  αʔόߏ੒ΛίʔυͰ؅ཧ͓ͯ͘͠ͱઃఆ͕೺Ѳ ͠΍͍͢ •  ςετۦಈͰαʔόߏங͍ͯ͘͠ͷ͸ͳ͔ͳ͔೉ ͍͠ • 

    αʔόͷߏஙɺϝϯςφϯεʹΑΔఀࢭ͕ࣗ৴ ࣋ͬͯߦ͑ΔΑ͏ʹͳΔ •  ౓ൃੜͨ͠໰୊ʹର͢ΔςετΛ௥Ճ͍ͯ͘͠ ͜ͱͰ͏͔ͬΓϛεΛ๷͛Δ まとめ
  42. ΋͠ɺಋೖΛ໎͍ͬͯΔํ͕͍Ε͹ॏཁͳ ΋ͷ͚ͩͰ΋ςετΛ։࢝ͯ͠Έͯ͸Ͳ͏ Ͱ͠ΐ͏͔ʁ ͦͷ࣌͸໘౗ʹײ͡Δ΋ͷͰ͕͢ɺهड़͠ ͓ͯ͘͜ͱͰ҆৺ͯ͠Πϯϑϥߏ੒ͷվળ ͕࣮ࢪͰ͖·͢͠ɺҾ͖ܧ͗࡞ۀ͕εϜʔ ζʹͳΓ·͢ɻ 最後に

  43. エンジニア募集中!! IUUQTOVMBCJODDPNKBDBSFFS