26
⼿順書作成⾃動化したいLT (Junoser使ってみた) JANOG 41 @ 広島

⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

⼿順書作成⾃動化したいLT(Junoser使ってみた)

JANOG 41 @ 広島

Page 2: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

⾃⼰紹介• shogo san• 所属: mixi, Inc.

• 2017/10に新卒⼊社(4ヶ⽉⽬くらい)• NWエンジニア⾒習いをしてます。• JANOG参加は2回⽬• 厳島神社⾏きたい(⼩学⽣並みの感想)

Page 3: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

最初に任された仕事

Page 4: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

IPv6 の eBGPピア収容

Page 5: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

Config書いて・・・レビューもらって・・・

修正して・・・

なんとか完成!

Page 6: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

と思ったら⼿順書作成というタスクが

Page 7: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

え、これ・・・⼿順書作成って差分まとめるだけなら

⾃動⽣成でいいのでは

Page 8: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

⼿順書作成⾃動化したい

•弊社の環境

• Juniper機器が多い

•GithubでConfigを管理してる

•Configを修正してプルリクとして出している。

Page 9: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

あったら嬉しいスクリプト

•⼿順書テンプレートの⾃動⽣成• Commit前とCommit後の⼿順書を投げたら、差分を⾒て勝⼿に良い⼿

順書を⽣成してくれるスクリプト・・・

•⼿順書の検証• ⾃分で書いた⼿順書が期待通りに反映されるかを知れるスクリプ

ト・・・

Page 10: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

⼿順書テンプレートの⾃動⽣成• Commit前とCommit後の⼿順書を投げたら、差分を⾒て勝⼿に良い⼿

順書を⽣成してくれるスクリプト・・・set interfaces em0 unit 0 family inet address 1.1.1.1/32set interfaces em0 unit 1 family inet mtu 1500set interfaces em0 unit 1 family inet6set interfaces em1 unit 0

set interfaces em0 unit 0 family inetset interfaces em1 unit 0 family inet address 2.2.2.2/32

delete interfaces em0 unit 0 family inet address 1.1.1.1/32delete interfaces em0 unit 1set interfaces em1 unit 0 family inet address 2.2.2.2/32

Page 11: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

⼿順書の検証• ⾃分で書いた⼿順書が期待通りに反映されるかを知れるスクリプト・・・

set interfaces em0 unit 0 family inet address 1.1.1.1/32set interfaces em0 unit 1 family inet mtu 1500set interfaces em0 unit 1 family inet6set interfaces em1 unit 0delete interfaces em0 unit 0 family inet address 1.1.1.1/32delete interfaces em0 unit 1

set interfaces em0 unit 0 family inetset interfaces em1 unit 0

Page 12: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

set⽂のみだったら、⽂字列操作だけで⾏けそうだが・・・

Page 13: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

delete⽂問題delete⽂は、適⽤先のConfigによって挙動が違うという問題

Page 14: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

delete⽂問題の例set interface em0 unit 0 family inet address 1.1.1.1/32delete interface em0 unit 0 family inet address 1.1.1.1/32

↓set interfaces em0 unit 0 family inet

set interface em0 unit 0 family inet address 1.1.1.1/32set interface em0 unit 0 family inet mtu 1550delete interface em0 unit 0 family inet address 1.1.1.1/32

↓set interfaces em0 unit 0 family inet mtu 1550

Page 15: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

だから、ただ単に

s/^-set/delete/g

しただけだと、うまくいかない⼿順書になる。

Page 16: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

delete⽂問題の解決策

•構⽂解析できないと無理。

Page 17: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

Junoserがありました

Page 18: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

Junoserとは

•Kojima Shintaro(@codeout)さんがメンテナをしているJunos PEGパーサOSS。

•機器にログインせずにcommit checkとか出来る!

Page 19: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

Junoserに

・⼿順書テンプレートの⾃動⽣成・⼿順書の検証

この2つの機能を追加しよう!

Page 20: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

Junoserに新コマンドを実装する• JunoserはRubyで書かれている。•Githubにある。•ということでjunoser-squashコマンドを実装• これで、junoserにConfig投げるだけでdeleteが可能に!

set interfaces em0 unit 0 family inet address 1.1.1.1/32set interfaces em0 unit 1 family inet mtu 1500set interfaces em0 unit 1 family inet6set interfaces em1 unit 0delete interfaces em0 unit 0 family inet address 1.1.1.1/32delete interfaces em0 unit 1↓set interfaces em0 unit 0 family inetset interfaces em1 unit 0

Page 21: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

Junoserに新コマンドを実装する• junoser-compareコマンドを実装• これで、junoserに2つのConfig投げるだけで、差分を実現す

るset⽂(delete⽂)を出⼒可能に!

• ↓

set interfaces em0 unit 0 family inet address 1.1.1.1/32set interfaces em0 unit 1 family inet mtu 1500set interfaces em0 unit 1 family inet6set interfaces em1 unit 0

set interfaces em0 unit 0 family inetset interfaces em1 unit 0 family inet address 2.2.2.2/32

delete interfaces em0 unit 0 family inet address 1.1.1.1/32delete interfaces em0 unit 1set interfaces em1 unit 0 family inet address 2.2.2.2/32

Page 22: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

実演(時間があれば)

Page 23: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

コマンド⼀つで⼿順書テンプレが出てくる幸せ

Page 24: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

Junoser‒squash,compare について

• Junoser-squash,compareは開発中の機能です。

• Junoserにプルリクを出しつつ交渉しています。• もし使いたい⽅がいたら・・・少々お待ちください・・・• (マージされるように頑張ります)

Page 25: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

皆さんに質問したいです!• どのような機能があったら嬉しいですか?

• 弊社ではGithubでConfigの差分管理や⼿順書管理などをしていますが、皆さんはどのようにされていますか?

• その上で、実際にJunoserや⼿順書作成スクリプトを使うと考えたとき、こんな機能があったら嬉しい/楽になる というものはありますか?

Page 26: ⼿順書作成⾃動化したいLT (Junoser使ってみた) · 2018. 1. 3. · Junoser‒squash,compareについて •Junoser-squash,compareは開発中の機能です。 •Junoserにプルリクを出しつつ交渉しています。

ご清聴ありがとうございました!