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

Juniper + CI による ネットワーク運用ワークフロー

Juniper + CI による ネットワーク運用ワークフロー

Juniper Cloud Builder Community 2016 発表資料です.

Juniper デバイスの設定変更レビューの際,実機やVM がなくても "commit check" をCI で実行することができます.GitHub フローと組み合わせると運用ワークフローを効率よく回すことができます,という話をしました.

Shintaro Kojima

December 02, 2016
Tweet

More Decks by Shintaro Kojima

Other Decks in Technology

Transcript

  1. コンフィグのチェック w มߋσόΠε୯ମ w γϯλοΫε จ๏ νΣοΫ w ηϚϯςΟΫε ҙຯ

    νΣοΫ w ྫ w ࢦఆͨ͠QPMJDZTUBUFNFOU͸ఆٛ͞Ε͍ͯΔ͔ w QSFpY͸ҙਤͲ͓Γ͔ w ωοτϫʔΫશମͱͯ͠ w ྫ w ԕ͘ͷϧʔλʔͰͷϕετύε͕ҙਤͲ͓ΓมΘΔ͔ w ҙਤͲ͓ΓύέοτϑΥϫʔυ͢Δ͔
  2. コンフィグのチェック [edit protocols bgp group ebgp] codeout@vsrx# set export redistribute-static

    redistribute-direct ^ syntax error. [edit protocols bgp group ebgp] codeout@vsrx# メンテナンス当日まで 見逃されていると ヒヤッとする
  3. コンフィグのチェック [edit] codeout@vsrx# set protocols bgp group ebgp export redistribute-static

    redistribute-direct ^ syntax error. [edit] codeout@vsrx# set protocols bgp group ebgp peer-as 64601 [edit] codeout@vsrx# set protocols bgp group ebgp neighbor 192.168.0.75 [edit] codeout@vsrx# set policy-options policy-statement redistribute-direct from protocol direct [edit] codeout@vsrx# set policy-options policy-statement redistribute-direct then accept [edit] codeout@vsrx# set policy-options policy-statement redistribute-static from protocol static [edit] codeout@vsrx# set policy-options policy-statement redistribute-static then accept [edit] codeout@vsrx# rollback 0 load complete まとめてコピペすると よりよいスリル
  4. コンフィグのチェック [edit] codeout@vsrx# set protocols bgp group ebgp export redistribute-static

    redistribute-direct ^ syntax error. [edit] codeout@vsrx# set protocols bgp group ebgp peer-as 64601 [edit] codeout@vsrx# set protocols bgp group ebgp neighbor 192.168.0.75 [edit] codeout@vsrx# set policy-options policy-statement redistribute-direct from protocol direct [edit] codeout@vsrx# set policy-options policy-statement redistribute-direct then accept [edit] codeout@vsrx# set policy-options policy-statement redistribute-static from protocol static [edit] codeout@vsrx# set policy-options policy-statement redistribute-static then accept [edit] codeout@vsrx# rollback 0 load complete まとめてコピペすると よりよいスリル ໨ΛࡼͷΑ͏ʹͯ͠ɺલ΋ͬͯ ίϯϑΟάͱ޲͖͋͏ඞཁ͕͋Δ ͕͔͔࣌ؒΔ͠ɺͭΒ͍
  5. お隣さんは既に解決してた w ΞϓϦέʔγϣϯ։ൃͷݱ৔ w ܧଓతΠϯςάϨʔγϣϯ $* ɺܧଓతσϦόϦʔ $%  w

    $*  ܭը͍ͯ͠ΔมߋΛɺࣄલʹࣗಈςετ w $% ςετ͕௨ͬͨ΋ͷΛɺεςʔδϯά؀ڥʹࣗಈσϓϩΠ w ࣄલʹ४උ͍ͯͨ͠ςετγφϦΦΛࣗಈͰճ͢ w શ෦ࣗಈͰ͸ͳ͍ɻ୯७͕ͩ໘౗͍͘͞ςετʹϑΥʔΧε ͜ɺ͜Ε͸Ϛω͍ͨ͠ʂ
  6. 何を⾔ってるのか w ωοτϫʔΫͷςετɺ͞·͟·ͳλΠϓ͕͋Δ w ίϯϑΟάνΣοΫ w Ϣχοτςετ w ωοτϫʔΫσόΠε୯ମ͕ظ଴Ͳ͓Γʹϓ ϩτίϧΛ࿩͠ɺظ଴Ͳ͓ΓʹύέοτϑΥʔ

    ϫʔυ͢Δ͔ w ςετର৅͚ͩԾ૝Խ͢Δͱ͔ w &&ςετ w ωοτϫʔΫશମ͕ظ଴Ͳ͓Γʹʜ ུ w શମԾ૝Խ͠ͳ͍ͱͨͿΜແཧ ॴཁ
 ࣌ؒ ͻΖ͑Δ Τϥʔ ൣғ ୹ ⭕ ޿ ⭕ ௕ ❌ ڱ ❌
  7. 複数のテストを組み合わせる w ྫ͑͹ɺจ๏ޡΓΛ୳͢ͷʹ&&ςετ͸ଛɻॴཁ͕࣌ؒ௕͍ • commit check Ϩϕϧ͕ద੾ w ΤϥʔͷछผʹΑΓɺ࠷దͳςετख๏͕͕ͪ͏ w

    ͲΜͳΤϥʔ͕͋Δ͔෼͔Βͳ͍
 ˠॴཁ࣌ؒͷ୹͍ςετΛΨϯΨϯճ͢ αʔόʔͰ΍Γ·͠ΐ͏
 αʔόʔͰͰ͖Δ͜ͱ͔Β΍Γ·͠ΐ͏
  8. サーバーで commit check codeout/junoser w IUUQTHJUIVCDPNDPEFPVUKVOPTFS w αʔόʔͰcommit checkͰ͖Δ044ϓϩμΫτ w

    OFUDPOGͰ͔ͭ͏YTEΛ΋ͱʹจ๏ղੳ w YTEʹ͸+6/04$-*ͷߏ଄͕͢΂ؚͯ·Ε͍ͯΔ w interfaces"ͷ࣍ʹ͸จࣈྻ͕ଓ͖ɺ
 ͦͷ഑ԼͰ͸description" Λड͚෇͚ΔʜͳͲͳͲ
  9. w ઃఆΛςΩετͱͯ͠HJU؅ཧ w ઃఆมߋ͍ͨ͠ͱ͖  ࡞ۀϒϥϯν τϐοΫϒϥϯν Λ࡞ͬͯมߋ಺༰ΛDPNNJU  1VMM3FRVFTUͰϨϏϡʔ

    ٞ࿦  मਖ਼ͯ͠DPNNJU  ωοτϫʔΫʹσϓϩΠ  1VMM3FRVFTUΛϚʔδ w (JU)VC͡Όͳͯ͘΋0, w (JU-BCͳͲͷ(JU)VCΫϩʔϯ GitHub フロー
  10. 作業ブランチ(トピックブランチ)を作る # gitlab プロジェクトをローカルにもってくる $ git clone ssh://[email protected]:10022/codeout/junos-ci.git $ cd

    junos-ci ... # いま master ブランチにいる junos-ci $ git branch * master # 変更用ブランチをつくる junos-ci $ git checkout -b add-neighbor ...
  11. 変更内容をcommit junos-ci $ git diff diff --git a/config/junos.conf b/config/junos.conf index

    1331682..e860cc4 100644 --- a/config/junos.conf +++ b/config/junos.conf @@ -14,6 +14,8 @@ protocols { } local-address 198.51.100.1; } + neighbor 192.0.2.3; + invalid statement; # わざとエラーを混ぜる } } } junos-ci $ git commit -am "xxxx 開通準備" junos-ci $ git push origin add-neighbor
  12. ネットワークにデプロイ w git diffΛ΋ͱʹset / deleteίϚϯυʹม׵ͯ͠΋͍͍͠ɺ • શମΛload override ͯ͠΋͍͍

    w ͪ͜Β͕Φεεϝ w ϚʔδͷࡍͷίϯϑϦΫτΛආ͚Δ w setͯ͠show configurationˠฒͼॱͳͲ͕มΘΔ͔΋ w ࣗಈ࣮ߦ͠΍͍͢
  13. GitLab 上でマージ w ϚʔδϘλϯΛΫϦοΫ͢Δ͚ͩ w git diffΛ΋ͱʹset / deleteίϚϯυʹม׵͢Δ৔߹ w

    .FSHF3FRVFTU͸ϚʔδͤͣɺΫϩʔζ w ผ్ઃఆΛόοΫΞοϓ w ௚઀NBTUFSʹgit push
  14. GitHub フローのメリット w ߏ੒؅ཧ%#࢖Θͳ͍ ઃఆࣗಈੜ੒͠ͳ͍ ͻͱ޲͚ w ΋ͬͱ΋࣌ؒίετ͕ඞཁͳͷ͸ϨϏϡʔϑΣʔζ  ઃఆͷจ๏ΤϥʔΛ$*Ͱݟ͚ͭΔ

    w ϨϏϡʔΞʔ͸ҙຯ߹͍͚ͩʹϑΥʔΧεͰ͖Δ  ઃఆͷEJ⒎Λೝࣝ͠΍͍͢6* w ϨϏϡʔΞʔ͸ࠩ෼͚ͩʹϑΥʔΧεͰ͖Δ  ٞ࿦͠΍͍͢6* w ޮ཰61⚡
  15. まとめ w ࣄۀεςʔδʹΑͬͯɺద੾ͳࣗಈԽͷཻ౓͸͕ͪ͏ w ͋͑ͯखಈͰ΍Δબ୒ࢶ΋ΞϦ w ͦΕͧΕʹదͨ͠ωοτϫʔΫӡ༻ϫʔΫϑϩʔΛબͼ͍ͨ w ࠓͷͱ͜Ζɺ/FUXPSL"VUPNBUJPOΛ࣮ݱ͍ͯ͠Δࣄۀऀ͸
 গͳͦ͏


    ˠ΋ͬͱ΋࣌ؒίετ͕ඞཁͳͷ͸ϨϏϡʔϑΣʔζ w (JU)VCϑϩʔ $*Ͱޮ཰తͳϫʔΫϑϩʔ͕࣮ݱͰ͖Δ w +VOJQFSͳΒKVOPTFSͰจ๏νΣοΫͰ͖Δ