Save 37% off PRO during our Black Friday Sale! »

~CircleCIでTerraformリリースのサーバーレス化~ インフラの独自リリースを継続的リリースへ

5059d3f370ad7e1f4d8de4be79ae1a2c?s=47 adachin0817
November 24, 2021

~CircleCIでTerraformリリースのサーバーレス化~ インフラの独自リリースを継続的リリースへ

https://circleci.connpass.com/event/228801/

【オンライン】【自動化何でもLT大会編】CircleCI コミュニティミートアップの資料になります。

#CircleCIJP

5059d3f370ad7e1f4d8de4be79ae1a2c?s=128

adachin0817

November 24, 2021
Tweet

Transcript

  1. ~CircleCIͰTerraformϦϦʔεͷαʔόʔϨεԽ~ ϥϯαʔζגࣜձࣾ ։ൃ෦/ٕज़ج൫ SRE ҆ୡ ྋ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24 ΠϯϑϥͷಠࣗϦϦʔεΛܧଓతϦϦʔε΁

  2. ΞδΣϯμ • ࣗݾ঺հ • ฐࣾࠓ·ͰͷTerraform؅ཧํ๏ • DeployαʔόʔͰͷ՝୊ͱվળ • Terraform։ൃ؀ڥʹ͍ͭͯ •

    CircleCIͰͷϦϦʔεϑϩʔ(Ҏલ) • CircleCIͰͷϦϦʔεϑϩʔ(ݱࡏ) • ·ͱΊ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  3. ࣗݾ঺հ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  4. ࣗݾ঺հ • ҆ୡ ྋ(adachin) • Lancers/SRE 
 2018/5~ • @adachin0817

    • RVIRUS0817 • blog.adachin.me • wiki.adachin.me • ઈࢍݸਓαʔϏε։ൃத ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  5. ฐࣾαʔϏε ʹ͍ͭͯ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  6. ฐࣾαʔϏεʹ͍ͭͯ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24 (Ұ෦)

  7. ͪͳΈʹ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  8. ݸਓͰCircleCIѪ༻͍ͯ͠·͢🙌 • ݸਓͷϙʔτϑΥϦΦ(adachin.me) 
 ɾࣗಈσϓϩΠ 
 ɹɾSSH release • ݸਓϒϩά(blog.adachin.me)

    
 ɾTerraform CI x CD • ຖ݄ͷίετ௨஌ 
 ɾTrigger 
 ɹ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  9. ฐࣾࠓ·Ͱͷ Terraform؅ཧํ๏ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  10. ฐࣾࠓ·ͰͷTerraform؅ཧํ๏ • Deployαʔόʔ 
 ɾ֤αʔόʔଆͷσϓϩΠ(Ansible/Terraform) 
 ɾΞϓϦέʔγϣϯͷσϓϩΠͱ༷ʑͳ༻్ͱͯ͠ར༻ • Terraform CI

    
 ɾpush͢Δ౓ʹvalidate,plan͕૸ΔΑ͏ʹ 
 ɾTerraform Cloud͸ར༻͍ͯ͠ͳ͍ • Lancers 
 ɾAmazon Linux 2 (Arm)ʹҠߦޙ 
 ɾੑೳධՁΛECS/Fargate(Arm)ͱൺ΂ͯҠߦ 
 ɾDeployαʔόʔ͸ഇࢭ͢Δ༧ఆ 
 ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  11. ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24 https://blog.adachin.me/archives/11698

  12. DeployαʔόͰͷ ՝୊ͱվળ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  13. DeployαʔόʔͰͷ՝୊ͱվળ • ϒϥϯνͷ੾Γସ͑Λ๨ΕͯଞͷϦϦʔεʹӨڹ͕ग़Δ • 1ਓ͕ґଘͯ͠͠·͏͜ͱͰෳ਺ਓͰͷTerraform։ൃεϐʔυ͕஗ΕΔ • TerraformͷόʔδϣϯΞοϓରԠத 
 ɾٸʹґཔ͕དྷͯɺόʔδϣϯͷ੾Γସ͑Λ͠ͳ͚Ε͹ͳΒͳ͍ •

    ECS Scheduled Taskසൟʹ։ൃϝϯόʔ͔ΒͷϨϏϡʔ 
 ɾϦϦʔεͷࡍSREνʔϜͷ޻਺͕͔͔Γద༻࿙Ε͕ଟൃ • TerraformΛϩʔΧϧͰద༻͍ͨ͠ͱࢥͬͯ΋.. 
 ɾΫϨσϯγϟϧͷݖݶ͕ڧա͗ΔͷͰ؅ཧͨ͘͠ͳ͍(࿙ӮͷڪΕ) 
 ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24 Terraformઐ༻ͷ։ൃ؀ڥΛߏஙɺCircleCIͰܧଓతʹϦϦʔε
  14. Terraform ։ൃ؀ڥʹ͍ͭͯ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  15. Terraform։ൃ؀ڥʹ͍ͭͯ(partᶃ) • ֤ϓϩδΣΫτʹ։ൃ؀ڥΛ༻ҙ • ΫϨσϯγϟϧͷ؅ཧํ๏ 
 ɾAWS KMS 
 ɹ1.

    KMSઐ༻ͷΫϨσϯγϟϧ 
 ɹ2. ҉߸Խ͞ΕͨkeyΛίϐʔ 
 ɹ3. ίϯςφ಺ʹΫϨσϯγϟϧΛ্ॻ͖Ͱ෮߸͢Δ • ηΩϡϦςΟϨϕϧ͕ೋॏʹ 
 ɾdocker-compose downʹΑΓ࡟আ͞ΕΔ 
 ɾ࿙ӮϦεΫ͸Լ͕Δ 
 ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  16. Terraform։ൃ؀ڥʹ͍ͭͯ(partᶄ) ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  17. CircleCIͰͷ 
 ϦϦʔεϑϩʔ(Ҏલ) ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  18. CircleCIͰͷϦϦʔεϑϩʔ(Ҏલ) • masterϚʔδͰterraform applyΛ࣮ࢪ͍͕ͯͨ͠... • SREνʔϜ 
 ɾTerraformͰσόοάͯͦ͠ͷ··apply • ։ൃνʔϜ

    
 ɾଞͷϓϧϦΫΛϚʔδ • AWSଆ͸ݩʹ໭Δˠة͏͘ΠϯγσϯτʹͳΓಘΔ • CircleCIͷAPIΛར༻ͯ͠γΣϧͰϦϦʔεΛ࣮૷͕ͨ͠.. 
 ɾݖݶతʹ։ൃϝϯόʔ͕શһϦϦʔεग़དྷͯ͠·͏ͱ͍͏՝୊͕… 
 ɾApprovalͷঝೝͰͷϑϩʔͰӡ༻ͯ͠Έ͕ͨϑϩʔ͕૿͑ͯՙ͕ॏ͍.. 
 
 ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  19. CircleCIͰͷ 
 ϦϦʔεϑϩʔ(ݱࡏ) ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  20. CircleCIͰͷϦϦʔεϑϩʔ(ݱࡏ) • Orbs 
 ɾpath- fi ltering(ਖ਼نදݱ) • masterϚʔδ 


    ɾterraformσΟϨΫτϦ഑Լ 
 ɾmasterͱͷࠩ෼͕͋Ε͹terraform apply • setup: true ͕ඞਢ 
 ɾෳ਺ͷwork fl ow͕ແޮԽʹͳΔ 
 ɾsingle work fl owʹͯ͠෼ׂ͢Δ͜ͱ 
 ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  21. CircleCIͰͷϦϦʔεϑϩʔ(ݱࡏ) • check_terraform_difference • ࠩ෼͕ͳ͍ͱ͖ʹmappingʹݕ஌❌ 
 ɾશͯͷύϥϝʔλ͸defaultͷfalse͕ฦΔ 
 ɾechoͰtrueΛฦ͢Α͏ʹ࡞Δඞཁ͕͋Δ •

    terraformσΟϨΫτϦʹࠩ෼͕ͳ͚Ε͹ 
 ɾcheck_terraform_difference͕ಈ࡞ 
 ɾࠩ෼͕͋Ε͹terraform apply • CircleCI͞ΜվળΛ!!🙏 ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  22. ·ͱΊ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24

  23. ·ͱΊ • Deployαʔόʔ͔Βͷ؅ཧΛ୤٫͢Δ͜ͱ͕Ͱ͖ͨ • ։ൃ؀ڥͰTerraformͷσόοά͕͠΍͘͢ͳͬͨ • TerraformͷϦϦʔεΛ҆શʹαʔόʔϨεͰͷ࣮ݱ͕Ͱ͖ͨ • Lancersຊମ΋׬શTerraformԽ͢ΔͨΊͷ४උ΋੔͏͜ͱ͕Ͱ͖ͨ •

    path- fi ltering 
 ϞϊϨϙͰ΋ύε୯ҐͰࣗಈϦϦʔε͢Δ͜ͱ͕Ͱ͖Δ 
 LambdaͳͲʹ΋Ԡ༻ • Terraform OrbsʹҠߦ 
 ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24
  24. ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24 https://engineer.blog.lancers.jp/sre/terraform_circleci/

  25. ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24 https://engineer.blog.lancers.jp/engineer-recruit/

  26. ͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ ʲࣗಈԽԿͰ΋LTେձฤʳCircleCI ίϛϡχςΟϛʔτΞοϓ 2021/11/24