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

NW自動化を開発エンジニアがやってみた話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for tomo tomo
November 20, 2019
3.6k

 NW自動化を開発エンジニアがやってみた話

Avatar for tomo

tomo

November 20, 2019
Tweet

Transcript

  1. あらかじめご了承ください • 本資料で説明している製品のバージョンは以下の前提です(古い) • Ansible Core : . . •

    Ansible Tower : . . • 古いバージョンですので、最新のバージョンでは仕様、及び機能名が異なる可能性がありま す。 2
  2. —- - name : tomo assert: msg: - DBA in

    SIer twitter: - @tomomo with_itemes: - あかずきん&グラレコの⼈ - Ansible何も分からない - NW何も分からない - コンテナ何も分からない - DB何も分からない  Who are you?
  3. なぜNWを⾃動化したいのか NWエンジニア サーバエンジニア 開発エンジニア DBエンジニア どれになりたい? AI/機械学習系エンジニア Cloudエンジニア セキュリティエンジニア Webエンジニア

    NWエンジニア サーバエンジニア 開発エンジニア DBエンジニア どれになりたい? 10年以上前 最近 エンジニアの種類が増えた (⺟数が増えてる/フルスタックエンジニアってなんやねん) 8
  4. なぜNWを⾃動化したいのか • ⼈材不⾜の状態で、今の開発〜運⽤の維持することは不可能 • クラウドやコンテナ等の技術の多様化に伴い、インフラレイヤに求められる要件も複 雑になっている • NWの技術⾃体もの進化を遂げ続けている(SDN、NFV、etc .) •

    全てが新しくなっているのではなく、物理レイヤや既存システムの対応など、所謂 「泥臭いこと」もまだまだ必要 NWエンジニアに求められる技術は、さらに多様/複雑化へ 10
  5. なぜNWを⾃動化したいのか 設計 新技術/システム 構築/保守等 設計 新 構築/保守等 • 業務時間の割合(例) •

    構築/保守等の業務に対する軽減化をすることで、設計検討の時間や新技術/システムの学習時間に当て られる • NW設計の考慮漏れはシステムに多⼤な影響を与える為、 少なくとも設計>構築/保守の時間割合にした い ˣཧ૝ ˣݱ࣮ 11
  6. なぜNWを⾃動化したいのか • なぜ「NW」にフォーカスしたのか? • 作業対象台数が基本的に多く、構築/保守業務を⾃動化することによる効果が得やすい • 設定変更作業が⼀般的には多いレイヤ • 同じ作業を複数台に繰り返し実施していることが多い •

    障害時、復旧に同じ作業を繰り返していることが多い • コマンドと結果が⽐較的⼀意で、エラー判断がしやすい • 設定ファイルが複数ある、等のサーバやアプリケーションと⽐較するとまだ判断しやすい • 正し全てのエラーは判断できないので、そこは肝に命じておく(NW⽢くみちゃダメ) 12
  7. 実案件的な話 • 物理レイヤの環境差分の違い • Playbookの開発環境(Ciscoの場合) 社内検証環境 ‧仮想iOS ‧AnsibleTower ‧GitLab on

    VMware 顧客検証環境 ‧実機NW機器 ‧AnsibleTower ‧GitLab 顧客商⽤環境 ‧実機NW機器 ‧AnsibleTower ‧GitLab 16
  8. show runの結果確認 18 - name: 設定内容を取得する iosxr_command: commands: show running-config

    interface {{ this_router.port }} register: result_show_run_config - name: 取得結果をデバッグ debug: var=result_show_run_config.stdout_lines[ ] - name: 設定内容確認 assert: msg: “ERROR- : {{ inventory_hostname }} に対する設定値が正しく設定できていません {{ check_string }}" that: - check_string | search(item) vars: check_string: "{{ result_show_run_config.stdout[ ] }}" with_items: - "description {{ this_router.description }}" - "shutdown" - "mtu {{ this_router.mtu }}" - "service-policy output XXXXXXX" - "ipv address {{ this_router.ip }} {{ this_router.mask }}" - "ipv nd suppress-ra" - "ipv enable" - "carrier-delay up {{ this_router.carrier_dly_up }} down {{ this_router.carrier_dly_down }}" - "flow ipv monitor XXXXXXXXXXXXX " - "flow ipv monitor XXXXXXXXXXXXX " - "flow mpls monitor XXXXXXXXXXXXX “ - "dampening {{ this_router.damp_harf_life }} {{ this_router.damp_reuse }} {{ this_router.damp_suppress }} {{ this_router.damp_max_suppress_time }} {{ this_router.damp_restart_penalty }}" カードの違いで ここの設定が増減…
  9. 余談:CiscoのNW機器に対する切り戻し⽅法 19 - name: 設定を切戻し!! iosxr_config: parents: "interface {{ this_router.port

    }}" lines: - no description - shutdown - no mtu - no service-policy output Core-Qos - no ipv address - no ipv nd suppress-ra - no ipv enable - no carrier-delay - no flow ipv monitor XXXXXXXXXXXXX - no flow ipv monitor XXXXXXXXXXXXX - no flow mpls monitor XXXXXXXXXXXXX - no dampening 設定変更箇所を全部クリアにする 設定途中でエラーが出ても 切り戻しで全部クリアされるので 「どこまで設定⼊ってる?」の 確認不要
  10. 実案件的な話 • Ansible Towerの単語の説明 • 「ジョブ」「ワークフロー」「サーベイ」の説明 21 Inventory グループ名 ホスト名

    付属情報 ワークフロー情報 サーベイ 付属情報は ホスト毎に変えたい 変数を設定 ワークフロー内で 共通化したい値
  11. 実案件的な話 • Ansible Towerの単語の説明 • 「ジョブ」「ワークフロー」「サーベイ」の説明 22 Inventory testNW interface=TenGigE

    port= / / / mtu= ip_add= . . . ワークフロー情報 testNW ‧Inventory ‧以下の情報を格納するDBみたいなもの ‧グループ(ホストの集合体) ‧ホスト名 ‧ホスト毎のパラメータ(変数) ‧サーベイ ‧ワークフロー内で共通化したい変数 ‧例えば「ホスト名」にした場合、サーベイ       からホスト名をキーにして、Inventoryから       付属情報(interface,port,mtu,ip_add)を       検索し、ワークフロー内の Playbook に対し       変数を割り当てる Select
  12. 実案件的な話 • とある作業に対する⾃動化コスト • 体制:PM 名、開発2名(初Ansible開発)、NW 名、RHコンサルさん • 作成Playbook数:約50ファイル •

    作成期間:検証期間込みで、約2ヶ⽉(PoCでベースの Playbookがある前提) • 導⼊製品:AnsibleTower, GitLab • その他:機能を補填する為のPythonプログラム数個 • 導⼊効果(社内) • 開発2名が、何をするにもAnsibleで⾃動化するようになっていた(頼んだ覚えはない) • ⼀緒のチームメンバーが数名上記に巻き込まれ、気づけば Playbook書いていた • 他部署から⾃動化相談が来るようになった 23
  13. NW⾃動化を開発エンジニアとやるとき • 単語の意味に気をつける • 同じ単語を⾔っているのに、意図している内容が異なる可能性があります • 例えば、「冗⻑」という単語を聞いて、頭の中に何を浮かべますか。ブリッジ、VRRP等のNW機 能を思い起こす⽅もいるかもしれません • 開発のエンジニアが思う「冗⻑」がこれと同じとは限りません。OSバックアップのこと、

    Lifekeeper等のミドルウェアによるファイルの冗⻑、DBやストレージのデータ冗⻑のことかもし れません • 同じ単語でいずれも誤りではないのですが、単語が持つ意味の差分によって、お互い話が平⾏線 になることがあるかもしれません。その場合は、ホワイトボードや紙に図⽰してみてください。 おそらく、Slackで何⼗分もかけて認識合わせをするより、ずっと簡単に認識差異を埋めることが できます 27