Share
Embed
OkinawaOpendays2016_ネットワーク運用コード化への取り組み
komeinw
December 13, 2016
Transcript
38 slides
-
ࣗݾհ Okinawa Open Days 2016 ΞυςΫຊ෦ͷΠϯϑϥΤϯδχΞɻ ओʹΦϯϓϨͷωοτϫʔΫ(ཧ/Ծ)͓Αͼ OpenStackͷҰ෦Λ୲ɻ • SDN
Japan 2016 ΞυςΫʹඞཁͳSDN • IT PRO EXPOʮωοτϫʔΫΛࢹ͢ΔZabbix ͷ׆༻ࣄྫʯ • Interop Tokyo 2015 / 2016 ͳͲ https://speakerdeck.com/komeiy/ ϓϩϑΟʔϧ@komeinw -
SDNͰղܾʁ Okinawa Open Days 2016 ɹSDNͱɺίϯϐϡʔλωοτϫʔΫΛߏ͢Δ௨৴ػثΛ୯ҰͷιϑτΣΞʹΑͬͯूதతʹ ੍ޚ͠ɺωοτϫʔΫͷߏߏɺઃఆͳͲΛॊೈʹɺಈతʹมߋ͢Δ͜ͱΛՄೳͱ͢Δٕज़ͷ૯শɻ ɹ·ͨɺͦͷΑ͏ͳٕज़ʹΑΓɺωοτϫʔΫͷஔͷஔઢͳͲͷཧతߏͱ͋Δఔಠཱ ʹɺతʹԠͯ͡ෳͷԾతͳωοτϫʔΫΛߏங͢Δ͜ͱɺͦͷΑ͏ʹͯ͠ߏங͞Εͨωοτϫʔ Ϋͷ͜ͱɻ͜ΕʮωοτϫʔΫԾԽʯͱݺΕɺݫີʹSDNͷԠ༻ͷҰͭͰ͋Γɺ·ͨɺ
SDNʹΑΒͣผͷٕज़ʹΑ࣮ͬͯݱ͢Δख๏͋ΔͨΊɺSDNͦͷͷͱ۠ผ͢Δඞཁ͕͋Δɻ ग़ల: http://e-words.jp/w/SDN.html ཁ͢Δʹɺ͍ΘΏΔίϯτϩʔϥʹ૬͢Δͷ͕ϓ ϥΠϕʔτΫϥυج൫ͷσʔλϕʔεͱ࿈ܞͯ͠ಈ తʹωοτϫʔΫͷઃఆΛ࣮ߦ͢ΕOK -
ฐࣾͷωοτϫʔΫߏ Okinawa Open Days 2016 • SDN ͳڥ͋Δɻ ৽ͨʹ࡞ͬͨҰ෦ͷڥͰ࠾༻ •
ඞཁʹԠͯͦ͡ͷ࣌ʑͰ࠷దͳϋʔυΣΞΛબ͠࠾༻͍ͯ͠Δ • ࠾༻͍ͯ͠ΔϋʔυΣΞʹ͍ͭͯϚϧνϕϯμʔͰߏ ͳΔ͘Φʔϓϯͳٕज़ͰSDNͳ ڥͱͦ͏Ͱͳ͍ڥͷ྆ํΛέ Ξ͢Δඞཁ͕͋Δ -
ҰൠతͳωοτϫʔΫΤϯδχΞͷ͓ࣄ • VLANՃ/มߋ • ϧʔςΟϯάՃ/มߋ • ϩʔυόϥϯαʔઃఆՃ • ACLՃ •
τϥϑΟοΫ֬ೝ • VPNϢʔβՃ/มߋ Okinawa Open Days 2016 • ૿ڧͳͲͷߏมߋ • ৽ٕज़ͷݕূ • τϥϒϧγϡʔτ • ߏཧ • ϕϯμʔίϯτϩʔϧ etc… ΤϯδχΞͱͯ͠ɺ ͜͜ʹྗ͍ͨ͠ -
ԿΛ࡞ͬͨʁͲΜͳޮՌʁ • ެ։༻API Gateway • AWS CLI gcloud Έ͍ͨͳίϚϯυϥΠϯͷఏڙ
• গਓͰͷӡ༻ΛΧόʔ • ৽نαʔϏεͷ্ཱͪ͛εϐʔυΛଛͳΘͳ͍Έ • ͭ·Βͳ͍࡞ۀۃྗΓͨ͘ͳ͍ μϝɻ࡞ۀϛεɺϦϦʔεͷӨڹɺΤϯδχΞͷϞνϕʔγϣϯԼ Okinawa Open Days 2016 ͜ͷೋ͕ͭ͋ΕࣗಈԽɾηϧϑαʔϏεԽଅਐͰ͖Δ -
Okinawa Open Days 2016 ϓϥΠϕʔτΫϥυͷૢ࡞Πϝʔδ • ֶशίετ͕͍ʢΞϓϦέʔγϣϯͷ։ൃऀ͕ ɹ֤ݻ༗ͷίϚϯυΛ֮͑Δඞཁ͕ͳ͍ʣ • ؆୯ʹJOBʹΈࠐΜͩΓ͢Δ͜ͱ͕Մೳ
• ࢥཱ͍ͬͨͱ͖ʹ͙͢Πϯϑϥͷૢ࡞͕Ͱ͖Δ • ϚϧνϕϯμʔͳڥͰϢʔβҙࣝ͠ͳ͍ ͜Μͳײ͡ͰͷϧʔλɾεΠονɾϩʔ υόϥϯαʔɺNeutronͷઃఆ͕Ͱ͖ Δɻ Regionͷ֓೦͍࣋ͨͤͯ·͢ -
Okinawa Open Days 2016 αʔϏεϝχϡʔ • ৽نαʔϏε্ཱ͕͕ͪΔ͝ͱʹ૿͑Δ ͷૢ࡞͢ΔͷΛجຊʹߏ • جװܥͷ࡞ۀಛఆͷϢʔβݖݶͷΈͰ͠
͔৮Εͳ͍Α͏ʹ੍ޚ • αʔϏεϝχϡʔӈهҎ֎ʹෳଘࡏ • DCͷϩʔΧϧϨϙδτϦ͔Β -
ߏΠϝʔδͱ༻ٕज़ Okinawa Open Days 2016 • ݴޠ Python Shell Script
• ιϑτΣΞ ɹ Flask Nginx Gunicorn ͦͷଞ API Server ग़లɿhttps://dzone.com/articles/learn-python-overtakes-learn-java "Learn Python" Overtakes "Learn Java" on Google Trends ೝՄɾೝূ REST API REST API REST API SSH command ଞʹɾɾɾ -
@api.route('/pool/<poolname>/member', methods=['POST']) def poolmemberpost(poolname): if not request.json: abort(400) if 'name'
not in request.json: abort(400) return b.memberpost(g.bigip_partition, poolname, request.json) • apiΛϧʔςΟϯά͢Δ͚ͩͷͷͦͷ··ྲྀ͢ɻՃ͕ඞཁͳͷ ɺదٓσʔλͷ append ਖ਼ੑνΣοΫΛ͍ͯ͠Δ • api ඇରԠσόΠεͱɺ pexpect Λར༻ APIαʔόͷΠϝʔδ • Python ͷ؆қ WEB ΞϓϦέʔγϣϯͰ͋Δ FLASK Λ༻ Okinawa Open Days 2016 -
APIαʔόͷΠϝʔδ " API αʔόʹ֤ϝʔΧʔͷૢ࡞༻ͷεΫϦϓτ͕֨ೲ͞Ε͍ͯΔ ྫʣneutron ͷ port list / port
show / port update Λ·ͱ·ͨͷ ɹɹL3 SWͷΞΫηεϦετೖͱΞυϨενΣοΫΛ࣮ߦ͢Δͷ " GitHub (ࣾ Organization) ެ։͠ɺisuue pull request ϕʔεͰϢʔ β͔ΒͷཁΛऔΓࠐΈ " ݖݶ FLASK ଆͰཧ͍ͯ͠ΔͨΊɺςφϯτͷ֓೦͕ͳ͍ઃఆઌʹ ʹରͯ͠ݖݶΛ֬ೝ͠దͳૢ࡞͚ͩʹ੍ݶ͍ͯ͠Δ " API Λެ։͢Δ͚ͩͩͱؾܰʹར༻ͯ͠Β͑ͳ͍ͨΊɺίϚϯυϥΠ ϯπʔϧΛఏڙͯ͠རศੑͷ্ΛਤΔ Okinawa Open Days 2016 -
REST APIͷ Okinawa Open Days 2016 • Τϥʔॲཧָ͕ ɹɹͳͷͰɺώϡʔϚϯΤϥʔ͞Α͏ͳΒʹۙͮ͘ •
ωοτϫʔΫΤϯδχΞҎ֎Ͱૢ࡞͍͢͠ ɹɹͳͷͰɺެ։͢Εͬͯ͘Εͦ͏ • વɺߏཧπʔϧͱ͔ͱҧ͏ • దࡐదॴͰ͍·͠ΐ͏ ΞϓϦέʔγϣϯϓϩάϥϛϯάΠϯλϑΣʔε (APIɺӳ: Application Programming Interface) ͱɺιϑτΣΞί ϯϙʔωϯτ͕ޓ͍ʹΓͱΓ͢Δͷʹ༻͢ΔΠϯλϑΣʔεͷ༷Ͱ͋Δɻ APIʹɺαϒϧʔνϯɺσʔλߏɺΦ ϒδΣΫτΫϥεɺมͳͲͷؚ༷͕·ΕΔɻ ग़లɿAPI - ΟΩϖσΟΞ https://ja.wikipedia.org/wiki/ΞϓϦέʔγϣϯϓϩάϥϛϯάΠϯ λϑΣʔε -
Okinawa Open Days 2016 • άϥϑΟΧϧͳ෦ChatͰͰ͖ΔΑ ͏ʹ͓ͯ͘͠ͱҎ֎ͱศརɻ • “པ·ΕΔଆ”
”པΉଆ” ʹऔͬͯε τϨεϑϦʔ • ଞʹՄࢹԽͱ؆୯ͳϓϩϏδϣϯͰ ׆༻ • JobʹΈࠐΜͩΓ͢ΔՄೳੑ͕͋Δ ͷɺCLIͳ͍͠APIͰఏڙͨ͠ํ ͕Α͍ APIԽ͢ΔͱChatOpsָ͕ʹͳΔ -
Okinawa Open Days 2016 • ࢹ Zabbix ͕ࣗಈͰरͬͯ͘Δ • Zabbix͕ϝʔΧׂΛผͯ͠άϧʔϐϯά͢Δ
• ωοτϫʔΫཧऀ DNS ͷొͱ ZTP ͷ४උ͚͓ͩͯ͘͠ • όοΫΞοϓͷδϣϒ Jenkins ͕ຖ൩࣮ߦͯ͠ɺ͋Ε Slack Ͱ௨ • όοΫΞοϓର Zabbix ͷ API Λ Jenkins ͔Βୟ͍ͯ࠷৽Λऔ ಘ • VLAN ࡞ͳͲͷ JOB Zabbix ͷ࠷৽Λݩʹੜ͞ΕΔ ଞʹ͜Μͳͱ͜ΖͰAPI͕ɾɾɾ -
ۤ࿑ͨ͠ϙΠϯτ Okinawa Open Days 2016 • APIͳ͠ͷػثΛૢ࡞͢Δ߹ɺexpectͰରԠͤ͟ΔΛಘͳ͍ ɹɹˠॲཧ్͕தͰࢭ·Δͱ͔ɾɾɾ ɹɹɹෛ୲ʹͳΒͳ͍ఔͷΤϥʔॲཧΛɻ •
͕͋ͬͨ࣌ͷΓ͚ΛͲ͏͢Δ͔ ɹɹˠ DebugΦϓγϣϯΛ࣮ɻClientଆͰऔΕΔΑ͏ʹɻ ɹɹɹ APIͷΤϥʔίʔυͱϝοηʔδΛΫϥΠΞϯτଆग़ྗ • REST APIͷઃܭ ɹɹˠ ૉਓ͕ͬͨͷͰԚ͍ɻۤ࿑ͨ͠ํ͕ྑ͔ͬͨϙΠϯτɻ ɹɹɹ ޙչɻ -
Θ͔ͬͨ͜ͱ Okinawa Open Days 2016 • ݖݶपΓࣗͰ࡞ͬͨ΄͏͕͍͍ ɹɹˠ ֤ػثͷػೳࠩΛٵऩ͢Δඞཁ͋Γ •
༻ʹཔΓ͗ͯ͢ϕϯμʔϩοΫΠϯʹͳΒͳ͍Α͏ҙ ɹɹˠ ίϯτϩʔϥʔཚཱͪΐͬͱɾɾɾ • Ͱࣗ࡞ͰଐਓԽʹҙɻΤϯδχΞʹҰఆͷϨϕϧΛ ɹɹˠ νʔϜ։ൃͰ͖ΔڥΛ -
Interop Tokyo 2016 ෭࢈తͳͷͰ͕͢ɾɾɾ • ωοτϫʔΫػثͱͯ͠ɺσϓϩΠπʔϧͱͯ͠ɺӡ༻πʔϧͱͯ͠ɺط ͷιϑτΣΞΛ׆༻͢Δ͜ͱͰΦʔϓϯͳωοτϫʔΫʹۙͮ͘͜ͱ͕Ͱ͖Δ • ࣮ࡍͷωοτϫʔΫΛ੍ޚ͢ΔஔͷมΘΓʹιϑτΣΞͰωοτϫʔΫ ΛΉʢϋʔυͱιϑτͷʣ͜ͱ͋Δ
• σϓϩΠपΓͰɺదٓඞཁͳΈΛࣾͰ࡞ͬͯӡ༻ΛΧόʔ͍ͯ͠Δ έʔε͋ΔʢPython෦ͰதؒϨΠϠʔ࡞ͬͯHWͷࠩΛٵऩ͍ͯ͠·͢ʣ • Ͳ͜Ͳ͜ͷίϯτϩʔϥΛങ͏ͷ͔ɺࣗͰͦΕͬΆ͍ΈΛ࡞Δͷ͔ ɺϙϦγʔ࣍ୈͰஅ Okinawa Open Days 2016 -
·ͱΊ Okinawa Open Days 2016 • ϨΨγʔͳڥͰ SDN ͷΑ͏ʹརศੑͷ্Λࢦ͢͜ ͱՄೳ
• ωοτϫʔΫΑΓαʔόଆͷٕज़ֵ৽͕ਐΜͰ͓ΓɺΦʔ ϓϯͳٕज़Λར༻͍ͯ͠ΔͷͰඇৗʹࢀߟʹͳΔ 5ͷख࡞ۀΑΓ15ͰίʔυΛॻ͖·͠ΐ͏ ʢͦΜͳ࣌ʁʣ Automation is the new skillset that network engineers need to pick up. Much like sysadmins have had to learn how to use new tools like Chef and Puppet, network engineers are learning that they just can't do things manually anymore. With examples in each chapter, this practical book provides you with baseline skills in network programmability and automation, using a range of technologies including Linux, Python, JSON, and XML. No previous knowledge of software development, programming, automation, or DevOps is required.