jopf-seminar-chef-and-ansible

527e2af04bd5b212b479840016274cdb?s=47 Yutaro Sugai
February 23, 2015

 jopf-seminar-chef-and-ansible

Chef・Ansible等を用いた環境の自動構築方法
日本OSS推進フォーラム主催 第5回アプリケーション部会勉強会
http://connpass.com/event/11707/

527e2af04bd5b212b479840016274cdb?s=128

Yutaro Sugai

February 23, 2015
Tweet

Transcript

  1. ChefɾAnsible౳Λ༻͍ͨ؀ڥͷ ࣗಈߏஙํ๏! ~ೖ໳ฤ~ Yutaro Sugai! 2015/2/23

  2. ͸͡Ίʹ ͜ͷൃද͸ݸਓͷݟղͰ͋Γɺ ॴଐ͍ͯ͠Δʢ͍ͯͨ͠ʣ૊৫ͷݟղ΍ɺ Chef࣮ફೖ໳ஶऀਞͷݟղͰ͸͋Γ·ͤΜ ٕज़తʹؒҧ͍͕͋Ε͹ ΍͘͞͠ࢦఠ͍ͯͩ͘͠͞

  3. ࣗݾ঺հ ɾtwitter: hokkai7go ɾGitHub: hokkai7go ɾRubyܥΧϯϑΝϨϯεͷϨϙʔτ ɾΔͼ·ฤू ɾChef࣮ફೖ໳ ɾWebPay

  4. ࠓ೔ͷ࿩ Chef΍Ansible౳Λ࢖ͬͨࣗಈԽʹ͍ͭͯ ͷ࿩΍ɺσϞΛ͓ݟͤ͠·͢ɻ πʔϧ΍ɺίʔυͷ࿩ʹͳΓ͕ͪͰ͕͢ ࠓ೔͸ࣗಈԽͷೖ໳ʹண໨͠·͢ɻ ࣗಈԽΛಋೖ͢Δࡍͷҙࢥܾఆʹ໾ཱͯͯ ͍͚ͨͩΕ͹޾͍Ͱ͢ɻ ओ࠵ऀ͔Βࣄલʹ௖͍࣭ͨ໰ʹ౴͑ͨΓɺ ࣗಈԽಋೖͷࡍʹߟ͑Δ͜ͱΛ঺հ͠·͢ɻ

  5. Chef࣮ફೖ໳ • ޷ධൃചதʂ • ٕज़ධ࿦͔ࣾΒ • ݱࡏୈೋ൛ • ߽՚ࣥචਞ •

    Ұ࡭Ͱ෯޿͘Χόʔ
  6. ͓ྱ • Chef࣮ફೖ໳ͷஶऀͷΈͳ͞Μ • ౰ൃදͷػձΛ͍͍ͭͬͯͨͩͨ͘ @miyohide ࢯ • ೔ຊOSSਪਐϑΥʔϥϜͷؔ܎ऀͷํʑ

  7. ࣭໰͍ͤͯͩ͘͞͞ • SIerʹ͓ۈΊͷํ • ؅ཧ৬ͷํ • ݱ৔ͷΤϯδχΞͷํ • Chef΍AnsibleͳͲΛ࢖ͬͨ͜ͱ͕͋Δํ

  8. ࣭໰͍ͤͯͩ͘͞͞ • Chef΍Ansibleʹڵຯ͕͋Δํ • ࣗಈԽʹڵຯ͕͋Δํ • ͳΜͱͳ͘དྷͨํ

  9. େࣄͳ͜ͱ • ChefɾAnsible౳ͱ୊໊ʹ͋Γ·͕͢ɺ πʔϧͷಋೖ͕໨తͰ͸͋Γ·ͤΜ

  10. େࣄͳ͜ͱ • ࣗಈԽ΁ࢸΔಓ • ࣗಈԽΛҡ࣋͢Δϓϩηε

  11. ࣗಈԽ! ͱ͸

  12. ࣗಈԽͱ͸ https://kotobank.jp/word/ࣗಈԽ-681577ɹΑΓҾ༻ ͡Ͳ͏‐͔ʤ‐ΫϫʥʲࣗಈԽʳ ! ʦ໊ʧ(εϧ)ਓखʹΑΒͣɺػց΍ίϯϐϡʔλʔʹΑΔॲཧ ํࣜʹม͑Δ͜ͱɻʮ੡଄޻ఔͷʕΛ࣮ݱ͢Δʯ

  13. ࣗಈԽ ࢲୡ͕࣮ݱ͍ͨ͠ͷ͸ɺ ɾαʔόߏங ɾӡ༻ ɹͷࣗಈԽ

  14. ࣗಈԽ ͍͖ͳΓ ɾπʔϧ ɾίʔυ ͷ࿩ʹͳΔͷ͸ૣٸ͗͢Δ

  15. ໨తͷલʹ • ͲΜͳ૊৫ʁ • ͲΜͳϓϩμΫτʁ • ͩΕ͕ϓϩμΫτΛ࢖͏ͷʁ • ϓϩμΫτ͕མͪΔͱ୭͕ࠔΔͷʁ •

    མͪͨϓϩμΫτΛ୭͕௚͢ͷʁ • ࣗಈԽͰԿΛղܾ͢Δͷʁ • ϦϦʔεΛओಋ͢Δͷ͸୭ʁͲͷ૊৫ʁ • ϓϩδΣΫτ͸ࠓɺͲΜͳஈ֊ʁ
  16. ໨తͷલʹ • ͲΜͳ૊৫ʁ • ͲΜͳϓϩμΫτʁ • ͩΕ͕ϓϩμΫτΛ࢖͏ͷʁ • ϓϩμΫτ͕མͪΔͱ୭͕ࠔΔͷʁ •

    མͪͨϓϩμΫτΛ୭͕௚͢ͷʁ • ࣗಈԽͰԿΛղܾ͢Δͷʁ • ϦϦʔεΛओಋ͢Δͷ͸୭ʁͲͷ૊৫ʁ • ϓϩδΣΫτ͸ࠓɺͲΜͳஈ֊ʁ ӡ༻ʹؔΘΔਓΛ ר͖ࠐΉඞཁ
  17. ໨తͷલʹ • ͲΜͳ૊৫ʁ • ͲΜͳϓϩμΫτʁ • ͩΕ͕ϓϩμΫτΛ࢖͏ͷʁ • ϓϩμΫτ͕མͪΔͱ୭͕ࠔΔͷʁ •

    མͪͨϓϩμΫτΛ୭͕௚͢ͷʁ • ࣗಈԽͰԿΛղܾ͢Δͷʁ • ϦϦʔεΛओಋ͢Δͷ͸୭ʁͲͷ૊৫ʁ • ϓϩδΣΫτ͸ࠓɺͲΜͳஈ֊ʁ ϓϩμΫτ΁ͷཧղ
  18. ໨తͷલʹ • ͲΜͳ૊৫ʁ • ͲΜͳϓϩμΫτʁ • ͩΕ͕ϓϩμΫτΛ࢖͏ͷʁ • ϓϩμΫτ͕མͪΔͱ୭͕ࠔΔͷʁ •

    མͪͨϓϩμΫτΛ୭͕௚͢ͷʁ • ࣗಈԽͰԿΛղܾ͢Δͷʁ • ϦϦʔεΛओಋ͢Δͷ͸୭ʁͲͷ૊৫ʁ • ϓϩδΣΫτ͸ࠓɺͲΜͳஈ֊ʁ Ұ൪େࣄͳͱ͜Ζ
  19. ໨తͷલʹ • ͲΜͳ૊৫ʁ • ͲΜͳϓϩμΫτʁ • ͩΕ͕ϓϩμΫτΛ࢖͏ͷʁ • ϓϩμΫτ͕མͪΔͱ୭͕ࠔΔͷʁ •

    མͪͨϓϩμΫτΛ୭͕௚͢ͷʁ • ࣗಈԽͰԿΛղܾ͢Δͷʁ • ϦϦʔεΛओಋ͢Δͷ͸୭ʁͲͷ૊৫ʁ • ϓϩδΣΫτ͸ࠓɺͲΜͳஈ֊ʁ ஈ֊ʹΑΓ ΍Δ͜ͱ͕มΘΔ
  20. ࣗಈԽͷϝϦοτ • Πϯϑϥͷߏஙɾӡ༻ΛίʔυͰࣗಈԽ • αʔό୆਺ʹࠨӈ͞Εͳ͍ • Φϖϛεͷ࡟ݮ • ޮ཰Խʢ޻਺ͷ࡟ݮʣ •

    ଐਓੑͷഉআ • खॱॻ͔Βͷଔۀ • ਖ਼͔֬ͭߴ଎
  21. ࣗಈԽͷσϝϦοτ • σϝϦοτ • ࣌ؒͱख͕͔͔ؒΔ • ܧଓతʹอक͢Δ࣌ؒͱखؒ

  22. ࣗಈԽʹσϝϦοτ ͕͋Δͱ͸͍͑ɺ! ख࡞ۀ+खॱॻ͸ͭ Β͍

  23. • ਫΛҿΉ • ࣍͸ɺࣗಈԽͷಋೖํ๏ʹ͍ͭͯ

  24. Ͳ͏΍ͬͯࣗಈԽΛ ಋೖͨ͠Β͍͍ͷʁ

  25. ಋೖ • λΠϛϯά • ϓϩδΣΫτ͕࢝·Δͱ͖ • ։ൃ؀ڥΛߏங͢Δͱ͖ • طଘͷγεςϜʹಋೖ͢Δͱ͖ •

    ্هҎ֎ͷ৔߹(൪֎ฤ)
  26. ಋೖ(PJ։࢝࣌) • ϓϩδΣΫτ։࢝࣌ʹࣗಈԽ͓͖͍ͯͨ͠΋ͷ • σϓϩΠɾCIɾߏஙࣗಈԽ • ࣮ࡍʹಈ͘ίʔυ͕ͳͯ͘΋΍Ζ͏ • ϓϩηεΛ܁Γฦ͠վળ͢Δ͜ͱ͕Ͱ͖Δ

  27. ಋೖ(։ൃ؀ڥߏங) • ಉ͡؀ڥΛૉૣ͘։ൃऀʹ഑෍Ͱ͖ΔΑ͏ʹͳΔ • όʔδϣϯͷҧ͍Ͱ೰·ͳ͘ͳΔ • ϝϯόʔ૿͑ͨ࣌ʹѹ౗తʹָ • Vagrantͱ૊Έ߹ΘͤΕ͹ߏஙͷ΍Γ௚͕͠͠΍͍͢ •

    Chef, Ansible౳ͷೖ໳ʹ͓͢͢Ί • Chef࣮ફೖ໳5,6ষ΋͓͢͢Ί • [ؾΛ͚ͭΔ͜ͱ] όʔδϣϯ؅ཧ͠ɺܧଓతʹมߋΛՃ͑ ΒΕΔΑ͏ʹ͓ͯ͘͠
  28. ಋೖ(։ൃ؀ڥߏங) ᶃ VM Imageऔಘ ᶄ ϦϙδτϦ͔Β ίʔυऔಘ ίʔυΛऔಘͯ͠͸ ܧଓతʹϓϩϏδϣχϯά

  29. ಋೖ(طଘͷγεςϜ΁) • Ұ൪Ή͔͍ͣ͠ • ՔಇதͷαʔϏεʹӨڹΛ༩͑΍͍ͨ͢Ί • αʔό௥Ճ͕͋Ε͹Ұ൪ͱ͖ͬͭ΍͍͢

  30. ಋೖ(൪֎ฤ) • ؀ڥ͕มԽ͢Δͱ͖ʹಋೖ͢Δ • αʔόҠߦ • PaaS, IaaSͳͲ΁ͷҠߦ • ·ͬ͞ΒͳαʔόΛࣗಈԽͰߏங

  31. ಋೖ(จԽ) • จԽͷಋೖ͕େࣄͰɺࠎ͕ંΕΔ͔΋ • ख࡞ۀΛͳ͘͠ɺࣗಈԽͰͷ࡞ۀத৺ʹ • ݽಠͳChef(ͳͲ)࢖͍ʹͳͬͯ͠·Θͳ͍Α͏ • ·ͣ͸ಡΈॻ͖ग़དྷΔ஥ؒΛ૿΍͢ •

    Ξϯνύλʔϯʹؾ͕෇͚ΔਓΛ૿΍͢ • ѻ͏ϛυϧ΢ΣΞ΍OSɺίϚϯυ౳΁ͷཧղ͕Լ஍ͱͯ͠ඞཁʹ ͳͬͯ͘Δ • ϝϯςφϯεੑ • ಡΈॻ͖͕͠΍͍͢ • ӡ༻ʹϑΟοτ͢Δ͔
  32. ࣄલʹ௖͍࣭ͨ໰(1) “࣮ࡍʹɺChefΛ࢖ͬͯɺRailsΞϓϦ͕ಈ͘؀ڥΛߏஙͯ͠ཉ͍͠ ! ʢChefͷΠϯετʔϧ͔Β͸͡ΊͯɺRailsΞϓϦ͕ಈ͘·Ͱʣ”! ! →͜ͷ͋ͱσϞಈըΛ͓ݟͤ͠·͢

  33. ࣄલʹ௖͍࣭ͨ໰(2) ”ChefͰݕࡧ͢ΔͱɺChef SoloɺChef ServerɺKnifeɺCookbookɺ ! ϨγϐɺBerkshelfͳͲɺ͞·͟·ͳ༻ޠ͕ͨ͘͞Μ͋Γ ! Α͘෼͔Βͳ͍ɻ੔ཧͯ͠ཉ͍͠ɻ”! ! →Chef

    Solo: ελϯυΞϩϯܗࣜͷChef! →Chef Server: Chef ClientͱڞʹΫϥΠΞϯτ/αʔόܗࣜͷChef! →Ϩγϐ: Ұ൪جૅతͳߏ੒ཁૉɻίʔυͰॻ͍ͨઃఆखॱ! →Cookbook: Ϩγϐʹඞཁͳσʔλ΍ϑΝΠϧΛ·ͱΊͨ΋ͷ! →Knife: खݩͷΫοΫϒοΫͱର৅ͷαʔόΛͭͳ͙ίϚϯυϥΠϯπʔϧ
  34. ࣄલʹ௖͍࣭ͨ໰(2) http://www.slideshare.net/yandod/devopschef-chef12 ΑΓҾ༻ Chef ServerΛ࢖ͬͨߏ੒

  35. ࣄલʹ௖͍࣭ͨ໰(2) http://www.slideshare.net/yandod/devopschef-chef12 ΑΓҾ༻

  36. ࣄલʹ௖͍࣭ͨ໰(3) “RubyͷDSLΛॻ͘͜ͱͰαʔόߏஙͷࣗಈԽ͕ߦ͑Δͱͷ͜ͱ͕ͩɺ ! θϩ͔Β͢΂ͯΛॻ͖ى͜͢ͷ͸େมͩ͠ɺֶशίετ͕ߴ͗͢Δ ! Α͏ʹࢥ͏ɻApache΍Ruby,PassengerͳͲΛΠϯετʔϧ͢ΔͨΊͷ ! ςϯϓϨʔτ͸͋Δͷ͔ʁ “! !

    →͍͍࣭໰Ͱ͢Ͷʂ! →Chef supermarket( https://supermarket.chef.io/ )͕͋Γ·͢ɻ! ! ͝ར༻͸ܭըతʹ! ʢ๬Ή΋ͷͰ͸ͳ͍Մೳੑ΍ɺ݁ہιʔείʔυΛಡΉӋ໨ʹͳΔ͜ͱ΋ʣ
  37. None
  38. Chef Supermarket • ୭͕ϝϯς͍ͯ͠Δͷʁ! • Chefࣾ! • PayPal! • HiganWorks!

    • Chef׆༻ΨΠυஶऀͷᖒొ͞Μͷձࣾ! • ͳͲͳͲ(ΫοΫϒοΫ࣍ୈ)! • ͲΜͳΫοΫϒοΫ͕͋Δͷʁ! • nginx! • apache2! • rbenv! • postgresql! • mysql! • docker! • ͳͲͳͲ
  39. ࣄલʹ௖͍࣭ͨ໰(4) “RubyͷDSLͰࣗಈԽͰ͖Δͷ͸ָͩͱ͸ࢥ͏͕ɺςετ͸ ! ͲͷΑ͏ʹ͢Δͷ͔ɻ “! ! →͍͍࣭໰Ͱ͢Ͷʂ! →test-kitchen, Serverspec ΍

    Infrataster Ͱςετ͢Δͷ͕ྑͦ͞͏! →͔͠͠ɺ·ͩϕετϓϥΫςΟε͸ͳ͍ͱೝ͍ࣝͯ͠Δ! →ࣗಈԽͷ੒ՌΛ֬ೝ͢Δͷ͕େࣄ! →ςετʹ࣌ؒΛ࢖͍ա͗ͳ͍Α͏ʹɺ·ͣ͸εϞʔϧελʔτͰ! ʢࣗಈԽʹ΋ɺςετʹ΋͕͔͔࣌ؒΔͱվળͷαΠΫϧΛճ͠ʹ͍͘ʣ
  40. http://serverspec.org/ ΑΓ

  41. http://infrataster.net/ ΑΓ

  42. ࣄલʹ௖͍࣭ͨ໰(5) “్தͰࣦഊͨ͠ޙʹ࠶౓ɺ࣮ߦͯ͠΋໰୊ͳ͍͔ɻ ! ࣗ࡞ͷγΣϧεΫϦϓτͳͲͰࣗಈԽΛࢼΈΔͱɺϦϥϯॲཧͷ ! ࡞ΓࠐΈ͕େมɻ “! ! →໰୊ͳ͍ɻ! →ႈ౳ੑ(Կ౓࣮ߦͯ͠΋ಉ݁͡ՌʹͳΔੑ࣭ͷ͜ͱ)Λߟྀͯ͠ॻ͔Εͨ

    ϨγϐͰ͋Ε͹໰୊ͳ͍ɻ! →ʮखॱʯͰ͸ͳ͘ʮঢ়ଶʯΛఆٛ͢Ε͹Α͍(Chef࣮ફೖ໳ §2.10 p49)! →ྫ͑͹…(࣍ͷεϥΠυ΁
  43. ྫ͑͹ɺgit clone͢Δͱ͖ ॳճ͚ͩclone͍ͨ͠ͳΒɺ࣍ճҎ߱͸࣮ߦ͢Δඞཁ͕ͳ͍ bash_profileΛϗʔϜσΟϨΫτϦʹ഑ஔ͍͕ͨ͠ aaa ͱ͍͏಺༰ؚ͕·Ε͍ͯΔͳΒɺมߋΛՃ͑ͨ͘ͳ͍ http://qiita.com/hokkai7go@github/items/37895052b52105be4c51 ΑΓ

  44. ࣄલʹ௖͍࣭ͨ໰(6) “αʔόݻ༗ͷઃఆʢϗετ໊΍IPΞυϨεʣͳͲΛChefͰ ! ࣮ݱ͢Δ͜ͱ͸Մೳ͔ʁͦ͜͸΍͸Γख࡞ۀ͔ʁ “! ! →Մೳ͕ͩɺΫϥ΢υ؀ڥΛ࢖͍ͬͯͨͷͰݸਓతʹ͋·Γܦݧ͕ͳ͍! →ϗετ໊΍IPΞυϨεͷඥ෇͚Λ؅ཧ͢Δͷ͕൥ࡶͦ͏ʹࢥ͏

  45. ࣄલʹ௖͍࣭ͨ໰(7) “Chefʹࣅͨπʔϧͱͯ͠Puppet΍ansibleͳͲ͕͋ΔΑ͏͕ͩɺ ! ͦΕͧΕͷಛ௃͸ʁ “! ! →͍͍࣭໰Ͱ͢Ͷʂ

  46. πʔϧൺֱ Chef Ansible Itamae γΣϧεΫϦϓτ อकੑ ◦ ◦ ◦ ☓

    ಋೖָ͕͔ ˚ ◦ ◦ ◦ কདྷੑ ◦ ◦ ◦ ? ೉қ౓ ˚ ◦ ˕ ˚ ϓϥοτ ϑΥʔϜ ˕ ◦ ◦ ◦
  47. πʔϧൺֱ • Chef • RubyͳͷͰΘ͔Γ΍͍͕͢ɺεΫϦϓτ͕ཚཱ͠ͳ͍ Α͏ؾΛ͚ͭΔඞཁ͕͋Δ • ͍ΖΜͳͱ͜ΖͰίʔυΛࠩ͠ࠐΊΔ෼ɺ͘·ͳ͘ಡ Ήඞཁ͕͋ΔΑ͏ʹࢥ͏ •

    ઃఆର৅ͷαʔόʹΤʔδΣϯτ(Ruby)ΛΠϯετʔ ϧ͢Δඞཁ͕͋Δ • ར༻ऀ͸૿͍͑ͯ͘ͱࢥ͏ • Windows΍Azureʹ΋ରԠ͍ͯ͠Δ໛༷(Chef12͔Β)
  48. πʔϧൺֱ • Ansible • γϯϓϧͰͱͯ΋Α͍ • ͔͠͠ɺyamlͰԿ΋͔΋ॻ͘ͷʹ͸ແཧ͕͋Δ ؾ͕͢Δ • ར༻ऀ͸૿͍͑ͯ͘ͱࢥ͏

    • ΤʔδΣϯτϨε࠷ߴʂ • SSH͑͞Ͱ͖Ε͹Α͍
  49. πʔϧൺֱ • Itamae • Chef͔Βൃ૝ΛಘͨγϯϓϧͰܰྔͳπʔϧ • ೔ຊਓ͕։ൃɻ৘ใΛಘ΍͍͢ • RubyͳͷͰΘ͔Γ΍͍͢ •

    ར༻ऀ͸૿͍͑ͯ͘ͱࢥ͏ • ΤʔδΣϯτϨε࠷ߴʂ
  50. πʔϧൺֱ • γΣϧεΫϦϓτ • ॻ͘ͷ΋ϝϯςφϯε΋େม • Θ͔Γʹ͍͘ͷͱɺႈ౳ੑͷߟྀ͕େม • EC2ͷcloud-initͷΑ͏ʹɺॳظߏஙͰ͸ڧྗ •

    γΣϧͷํݴΛߟྀ͢Δඞཁ͕͋Δ
  51. ·ͱΊ • πʔϧ͕େࣄͰ͸ͳ͍ • ࣗಈԽ΁ࢸΔಓ • ࣗಈԽΛҡ࣋͢Δϓϩηε • ͦͷ্Ͱɺࣗ෼ͨͪͷ૊৫Ͱ͸ͲͷπʔϧΛબͿ͔ •

    จԽͷಋೖ͕େม͕ͩେࣄ • ʢͳͥಋೖ͢Δͷ͔ͱ͍ͬͨʣࣾ಺޲͚ϙΤϜΛॻ͘ ͱ఻ΘΓ΍͍͔͢΋ • ࣄྫΛ஌Γ͍ͨͷͰɺͥͻൃද͍ͯͩ͘͠͞
  52. Q&A • ೖ໳ฤͷൃද͸͜ΕͰऴΘΓͰ͢ • ࣭໰͸͋Γ·͔͢ʁ

  53. ChefɾAnsible౳Λ༻͍ͨ؀ڥͷ ࣗಈߏஙํ๏! ~σϞฤ~ Yutaro Sugai! 2015/2/23

  54. σϞ • Vagrant + Chef soloΛ࢖ͬͯߏங! • vagrantͷػೳͰ͋ΔprovisionerΛར༻! • ChefͷagentΠϯετʔϧ͸Vagrant͕ࣗಈͰ΍ͬͯ͘ΕΔ!

    • ΫοΫϒοΫ! • جຊతʹChef supermarketͷ΋ͷΛར༻! • nginx! • postgresql! • nodejs! • rbenv(RubyͷΠϯετʔϧ΍؅ཧ)! • ࣗલͰॻ͍ͨͷ͸্هΫοΫϒοΫͷݺͼग़͠΍ɺnginxͷݻ༗ઃ ఆͷΈ! • σϓϩΠ͸railsΞϓϦଆ͔ΒcapistranoΛར༻ͯ͠ߦ͏