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

SideCIのインフラ構築を自動化した話

 SideCIのインフラ構築を自動化した話

エンジニア向けサービスを支える技術

Kazuma Watanabe

June 29, 2016
Tweet

More Decks by Kazuma Watanabe

Other Decks in Programming

Transcript

  1. SideCIͷΠϯϑϥ

    ߏஙΛࣗಈԽͨ͠࿩
    ΤϯδχΞ޲͚αʔϏεΛࢧ͑Δٕज़

    View Slide

  2. ࣗݾ঺հ
    • ౉ᬒҰਅ (@wata727_)


    Engineer in Actcat, Inc.

    ओʹΠϯϑϥ৮ͬͯ·͢

    View Slide

  3. SideCI
    (https://sideci.com)

    View Slide

  4. SideCIͱ͸
    • ίʔυϨϏϡʔΛࢧԉ͢ΔαʔϏε
    • Ruby, PHP, PythonͳͲͷݴޠΛαϙʔτ
    • ։ൃϑϩʔͷதʹ͙͢ʹ૊ΈࠐΊΔʂ

    ίʔσΟϯά ίʔυϨϏϡʔ ࣗಈςετ ϦϦʔε

    View Slide

  5. ࣗಈίʔυϨϏϡʔ

    View Slide

  6. ղੳ؀ڥΛࢧ͑Δٕज़

    View Slide

  7. ղੳ؀ڥͷίϯςφԽ
    • πʔϧɺιʔείʔυ͝ͱʹ࢖͍ࣺͯՄೳͳ
    ίϯςφΛDockerͰఏڙ
    EPDLFS
    Ubuntu Host

    View Slide

  8. ղੳαʔόͷϓϥΠϕʔτԽ
    • ղੳαʔόΛดͨ͡ωοτϫʔΫʹஔ͘
    • NATήʔτ΢ΣΠܦ༝ͰͷΈ௨৴͕Մೳ
    • αʔόؒͷ௨৴͸͢΂ͯϓϥΠϕʔτ

    View Slide

  9. SideCIͷΠϯϑϥ؅ཧ

    View Slide

  10. ࠓ·Ͱͷ໰୊఺

    View Slide

  11. खಈӡ༻ͷݶք
    • νʔϜͷਓ਺͕૿͑Δʹैͬͯʮ͋Ε͸ʙ͞
    Μ͕஌ͬͯΔʯ͕૿͑ͨ
    • ଞͷਓ͕มߋͨ͠ҙਤ͕ه࿥ʹ࢒ΒͣɺΘ͔
    Βͳ͘ͳΔ

    View Slide

  12. खಈӡ༻͸ਏ͍
    • ୭͕ԿΛม͑ͨͷ͔ɺԿͷͨΊʹม͑ͨͷ͔

    ه࿥͕࢒Γʹ͍͘
    • ࠷ॳʹ؀ڥΛ࡞ͬͨਓ͔͠ಉ͡؀ڥΛ

    ෳ੡Ͱ͖ͳ͘ͳΔ
    ଐਓԽͷ༧ײ

    View Slide

  13. ࣗಈԽͷͨΊͷπʔϧબ୒

    View Slide

  14. Packer

    View Slide

  15. Packerͱ͸
    • αʔόͷݩʹͳΔϚγϯΠϝʔδΛࣗಈͰ࡞
    Δ͜ͱʹಛԽͨ͠πʔϧ
    • ઃఆϑΝΠϧΛݩʹίϚϯυҰൃͰߏங
    • AWS, GCP, VirtualBox, DockerͳͲෳ਺ͷϓ
    ϥοτϑΥʔϜʹରԠ

    View Slide

  16. ࠾༻ཧ༝
    • ϚελʹͳΔϚγϯΠϝʔδΛ࡞ͬͯɺͦΕ
    ΛݩʹαʔόΛ૿΍͢ํ਑ͰਐΊΔͨΊ
    • ͞·͟·ͳछྨͷProvisionerΛαϙʔτͯ͠
    ͓ΓɺॊೈʹߏஙͰ͖ΔʢBash, Chef,
    Ansible, etc…ʣ

    View Slide

  17. ࠾༻͠ͳ͔ͬͨखஈ
    • Docker in Docker
    • DockerϗετͷதͰDockerίϯτϩʔϧ
    ͢Δͷ͸େม…
    • ίϯςφԽ͢Ε͹ىಈ͕ૣ͘ͳΔͷͰॊೈ
    ͳมߋ΍ೖΕସ͑ʹڧ͘ͳΔ͔΋

    View Slide

  18. Terraform

    View Slide

  19. Terraformͱ͸
    • AWSͳͲͷαʔϏε ʢEC2ͳͲʣΛίʔυԽ
    ͯ͠࡞੒ɺมߋ͢Δπʔϧ
    • ઃఆϑΝΠϧΛݩʹίϚϯυҰൃͰߏங
    • ࣮ࡍͷར༻ঢ়گͱઃఆϑΝΠϧͷࠩ෼Λݟͯɺ
    ඞཁͳมߋ͚ͩΛߦͬͯ͘ΕΔ

    View Slide

  20. ࠾༻ཧ༝
    • dry-runͰมߋ಺༰ͷ֬ೝ͕ࣄલʹͰ͖Δ
    • ҙਤͤ͵มߋ͕ൃੜ͢Δલʹ๷͛Δ
    • ઃఆϑΝΠϧ͕ॻ͖΍͘͢ಡΈ΍͍͢
    • ίϝϯτɺม਺ɺ૊ΈࠐΈؔ਺͕࢖͑Δ
    • JSONͩͱωετ͢Δͱ͙͢ಡΈʹ͘͘ͳΔ

    View Slide

  21. ࠾༻͠ͳ͔ͬͨखஈ
    • CloudFormation
    • ϩʔϧόοΫ͸ັྗత͚ͩͲdry-run͕Ͱ
    ͖ͳ͔ͬͨͷ͸க໋త
    • ઃఆϑΝΠϧʹίϝϯτͰ͖ͳ͔ͬͨΓɺ
    ෳࡶԽ͢ΔͱಡΈʹ͘͘ͳͬͨΓ…

    View Slide

  22. αʔόߏஙϑϩʔ

    View Slide

  23. ϚγϯΠϝʔδͷϏϧυ
    QBDLFSCVJMETFSWFSKTPO

    View Slide

  24. ϚγϯΠϝʔδͷϏϧυ
    QBDLFSCVJMETFSWFS KTPO
    Server
    ݩʹͳΔ
    αʔόͷىಈ

    View Slide

  25. ϚγϯΠϝʔδͷϏϧυ
    QBDLFSCVJMETFSWFS KTPO
    Server
    αʔόΛߏங
    QSPWJTJPOFST
    \
    UZQFTIFMM
    [email protected]\\7BST^^TVEP&CBTIF
    \\1BUI^^\\VTFSAFOWJSPONFOUA^^
    TDSJQUT
    [email protected]
    [email protected]
    >
    ^
    ʜ

    View Slide

  26. ϚγϯΠϝʔδͷϏϧυ
    QBDLFSCVJMETFSWFS KTPO
    Server
    4FSWFSTQFDͰ
    ಈ࡞ςετ

    View Slide

  27. ϚγϯΠϝʔδͷϏϧυ
    QBDLFSCVJMETFSWFS KTPO
    Server
    Machine Image
    αʔό͔ΒϚγϯ
    ΠϝʔδΛநग़

    View Slide

  28. ϚγϯΠϝʔδͷϏϧυ
    QBDLFSCVJMETFSWFS KTPO
    Machine Image
    αʔόΛ࡟আ

    View Slide

  29. Πϯϑϥมߋͷ൓ө
    UFSSBGPSNBQQMZ
    Machine Image

    View Slide

  30. Πϯϑϥมߋͷ൓ө
    UFSSBGPSNBQQMZ
    Machine Image
    ݩʹͳΔϚγϯ
    ΠϝʔδΛࢦఆ

    View Slide

  31. Πϯϑϥมߋͷ൓ө
    UFSSBGPSNBQQMZ
    Machine Image
    Security Group
    ࢖༻͢ΔηΩϡϦςΟ
    άϧʔϓΛࢦఆ

    View Slide

  32. Πϯϑϥมߋͷ൓ө
    UFSSBGPSNBQQMZ
    Machine Image
    Security Group
    Server
    ͦΕͧΕͷઃఆ͔Β
    αʔόΛىಈ

    View Slide

  33. ӡ༻ͯ͠Έͯײͨ͜͡ͱ

    View Slide

  34. ࣮ࡍͷ؀ڥͱtfstateͷෆҰக
    • tfstateϑΝΠϧΛखಈͰղܾ͢Δͷ͕೉͍͠

    View Slide

  35. tfstateͭΒ͍

    View Slide

  36. खಈӡ༻͸ਏ͍
    • ୭͕ԿΛม͑ͨͷ͔ɺԿͷͨΊʹม͑ͨͷ͔

    ه࿥͕࢒Γʹ͍͘
    • ࠷ॳʹ؀ڥΛ࡞ͬͨਓ͔͠ಉ͡؀ڥΛ

    ෳ੡Ͱ͖ͳ͘ͳΔ
    ྑ͔ͬͨ͜ͱ

    View Slide

  37. θϩ͔Β࡞ΕΔ҆৺ײ
    • Ծʹࠓͷ؀ڥ͕͢΂ͯແ͘ͳͬͯ΋ɺθϩ͔
    ΒαʔϏεΠϯͰ͖Δαʔό͕ࣗಈͰ࡞ΕΔ
    • ίʔυͱͯࣾ͠಺ʹެ։͞ΕΔͷͰ୭Ͱ΋த
    ਎͕ݟΕΔɺ࣮ߦͰ͖Δ

    View Slide

  38. αʔόʔަ׵͕εϜʔζʹ
    • ϚγϯΠϝʔδͷID໊ม͑Δ͚ͩͰɺ͍͍ײ
    ͡ʹద༻ͯ͘͠ΕΔ
    • EIPͷ෇͚ସ͑ɺELBͷׂΓ౰ͯɺηΩϡ
    ϦςΟάϧʔϓͷަ׵ɺetc…
    • มߋ͍ͨ͜͠ͱ͚ͩʹ஫ྗͰ͖Δ

    View Slide

  39. ͝ਗ਼ௌ
    ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide