てくなべ (tekunabe)

ansible / network / automation

automation

自動化に適したプログラマブルなホスト名を考える

はじめに ホスト名の付け方には、視認性や区別のしやすさ向上等の目的で、様々な工夫をされているかと思います。 自動化を前提と場合に、何か考慮するべき点があるか考えてみたのまとめます。 多く分けて以下の 2点です。 機械的に読み込みやすくしておく 機…

[nornir] NETCONF で Cisco IOS XE 機器のコンフィグや状態の情報を取得する

はじめに Python 製自動化フレームワーク nornir は、接続方法として netmikoや、NAPALM の他に、NETCONF にも対応しています。 この記事では NETCONF 経由で、Cisco IOS XE 機器の runnin-config、インターフェース、ルーティングテーブを取得するサンプル…

[Ansible] VyOS モジュール利用のことはじめ

はじめに Ansible は VyOS にも対応していて、設定の変更や、各種 show コマンドの実行による情報取得ができます。 この記事では、VyOS モジュールを利用するためのインベントリファイルの作成、認証情報の定義などの準備と、簡単な show コマンドを実行する…

[Ansible] Junos の interface の状態を debug で表示する(display json 編)

はじめに 以前の記事で、gather_facts を利用して Junos のインターフェースの状態を取得して debug で表示するという Playbook をご紹介しました。 tekunabe.hatenablog.jp 今回は普通に show interfaces terse コマンドを利用します。ただし、せっかく JSO…

[Ansible] Junos の interface の状態を debug で表示する(gather_facts 編)

はじめに 以下の記事で、Junos のインターフェースの状態を取得して debug で表示するという Playbook が紹介されていました。 qiita.com 面白いネタだなと思って、拝見しました。特に、以下のディクショナリをループする書き方が参考になりました。 with_it…

ネットワーク設定自動化で、いつ、何を確認するか(JANOG45 の Fastly さんの発表から学ぶ)

はじめに JANOG45 Meeting in Sapporo で、Fastly の土屋さんから「急成長を支えるFastlyスケーラブル・グローバルネットワーク」という発表がありました。 www.janog.gr.jp シンプルさを追及した設計や、自動化の話があって大変興味深いものでした。 なかで…

[Ansible] OSPF 設定後にネイバーが張られるまで待つ(until の活用)

はじめに Ansible には、指定した条件を満たすまでタスクを繰り返す until というループ機能があります。 until を利用すると、ネットワーク機器に設定を投入した後に、期待した状態になるまで待つ、といった処理を Playbook で実現できます。 この記事では…

[Ansible] "[WARNING]: Ignoring timeout(10) for ios_facts" の正体とタイムアウトの設定方法

はじめに Ansible 2.9 から、ネットワークモジュールの fact 収集は、gather_fact の指定(デフォルト yes)に基づくように仕様変更されました。 有効の場合は、内部で ios_facts、eos_facts などの、ベンダー別の *_facts モジュールが呼ばれます。 https:/…

[200-901勉強記] 書籍 Understanding and Using APIs を読んだ

はじめに Cisco Certified DevNet Associateの勉強の一環で以下の書籍を読みました。 Understanding and Using Application Programming Interfaces (APIs): Cisco DevNet Associate (DEVASC) 200-901 V1.0 Exam Guide Series (English Edition)作者:Muhamma…

[200-901勉強記] Cisco DevNet Associate (DEVASC 200-901) の勉強をはじめました

はじめに 2020/02/24 に始まる、Cisco DevNet Associate (DEVASC 200-901) の勉強をはじめした 試験情報リンクまとめ tekunabe.hatenablog.jp 今後のブログでも、勉強途中のトピックを書いていきたいと思います。 当面の学習コンテンツ 公式のガイドは、2020…

DevNet Express for DNA [Tokyo] イベント参加レポート: Python と Postman と API たち

■ はじめに 2019/12/10-11 に開催された、DevNet Express for DNA [Tokyo] に参加してきました。 ネットワークプログラマビリティをテーマにした、ハンズオンを含むインベントです。 「for DNA」とついているのは、Cisco DNA Center という製品を中心とした…

[Ansible] Network Resource Module の state: overridden の使い所を考えてみた

これは Ansible 3 Advent Calendar 2019 の9日目の記事です。 ■ はじめに Ansible 2.9 から Network Resource Module という新しいタイプのモジュールが続々と追加されています。 config オプションで設定内容を指定し、state というオプションで4種類の操…

[Ansible] Junos のスタティックルート設定モジュール junos_static_routes の概要と state オプションの仕様

これは Ansible 3 Advent Calendar 2019 の8日目の記事です。 ■ はじめに 開発中の Ansible 2.10 では、Juniper Junos 向けのスタティックルート設定モジュール junos_static_routes モジュール (末尾 s あり)が追加されます。 Ansible 2.9 から続々と追加…

netmiko で Juniper ScreenOS(SSG)の状態取得と設定変更を試してみる

これは ネットワーク自動化 Advent Calendar 2019 の4日目の記事です。 ■ はじめに ネットワーク自動化 Python ライブラリ netmiko は、Cisco、Juniper、Arista など様々なネットワークOSに対応しています。 開発状況を眺めていると、Juniper ScreenOS (SSG)…

[Ansible] Fortigate (fortiosモジュール)を httpapi コネクションプラグイン経由で触ってみた

はじめに Ansible 2.8 以降、400以上大量に増えている fortios モジュール。Ansible 2.9 では httpapi コネクションプラグインにも対応しました。 httpapi コネクションプラグインに対応することにより、以下のようなメリットがあります。 Playbook がスッキ…

ネットワーク自動化Pythonライブラリ netmiko、NAPALM が Python 2系サポートの最終バージョンをリリース

はじめに ネットワーク自動化Pythonライブラリである、netmiko、NAPALMが、Python 2系 サポートの最終バージョンをリリースしました。それぞれ、netmiko 2.4.2、NAPALM 2.5.0 です。 次回のリリースからは Python 3.6 以降のみのサポートととしています。 バ…

[Ansible] Cisco ACI モジュールの REST API ログイン処理の流れ

はじめに Ansible には Cisco ACI 対応のモジュールが多数用意されています。 ACI の REST API を利用しているのだろうな、という予想はすぐついたのですが、実際のログインの処理を覗いてみたくなりました。 ACI モジュール共通だと思いますが、ここでは代…

[Ansible] 変数 ansible_network_os に指定できる値 (eos/ios/nxos/junosなど)

変数 ansible_network_os とは Ansible のネットワークモジュールでは、多くの場合ansible_network_os という変数に、どのプラットフォーム(Cisco IOS、Arista EOS など)を対象とするか指定する必要あります。 サンプルの Playbook でも見かけることは多い…

[Ansible] restconf_config モジュールで Cisco IOS XE のSyslogサーバー設定追加・削除してみる

■ はじめに Ansible 2.8 では、RESTCONF でネットワーク機器の情報を取得したり、設定を変更したりできる RESTCONF モジュールが導入されました。 以前、本ブログでは、モジュールを利用してIOS-XE へ RESTCONF でアクセスしてインターフェース情報の取得を…

show コマンド結果をパースする方法あれこれ(TextFSM / Genie Parser と Netmiko / Ansible の組み合わせ)

2019/09/05 に、ネットワークプログラマビリティ勉強会 #18で、「show コマンド結果をパースする方法あれこれ」という発表をさせていだきました。サンプルコードが中心だったため、コピペしやすいように、ブログ記事として書きおこします。 ■ 1. はじめに ■ …

JANOG44 レポートその2【登壇編】ここからはじめよう、運用自動化

はじめに 2019/07/24-26 に兵庫県神戸市の神戸国際展示場で開催された JANOG44 Meeting in Kobe に参加、登壇してきました。 本ブログでは、2回に分けてレポートします。 その1 参加編 その2 登壇編 ここからはじめよう、運用自動化 (本記事) その2である本…

[Ansible] restconf_get モジュールで Cisco IOS XE のインターフェース情報を取得してみる

■ はじめに Ansible 2.8 では、RESTCONF でネットワーク機器の情報を取得したり、設定を変更したりできる RESTCONF モジュールが導入されます。(本記事執筆時現在 RC段階) この記事では restconf_get モジュールを利用して、IOS-XE へ RESTCONF でアクセスし…

[Batfish] JANOG43.5 で「ネットワークコンフィグ分析ツール Batfish との付き合い方」という発表をしてきました

■ はじめに 2019/04/26 に開催された JANOG43.5 Interim Meeting で「ネットワークコンフィグ分析ツール Batfish との付き合い方」という発表をさせていただきました。 janog.connpass.com togetter.com Batfish は、ネットワーク機器のコンフィグのさまざま…

ネットワーク設定自動化に利用するインプット形式の分類(範囲、処理形式、表現形式別)

はじめに ネットワーク機器の設定変更を自動化するあたって考慮するポイントの1つは、設定情報のインプットをどのような形式にするかです。 設定情報のインプット形式は? たとえば、機器が解釈できるコマンドを直接インプットする方法もあれば、パラメータ…

ネットワーク自動化しにくい機器(TELNET/WebUI/踏み台の向こう)

はじめに netmiko、NAPALM、Ansible のように、既存のネットワークを自動化できるOSSが増えてきました。 それでもやはり、自動化しやすい機器としにくい機器があるなと考えています。 この記事では機器使用面、環境面含めてそれぞれれまとめます。 (当たり…

JANOG43 レポートその2【登壇編】自動化の行き着く先は?

はじめに 自動化の行き着く先は? 2019/01/23-25 に山梨県甲府市のコラニー文化ホール(山梨県立県民文化ホール)で開催された JANOG43 Meeting in Yamanashi に参加してきました。(ハッカソンは1/22) 本ブログでは、3回に分けてレポートします。 その1 参…

ネットワークのテスト自動化に利用できそうなツールまとめ

はじめに サーバーのテスト自動化といえば、 Serverspec や Testinfra 、infrataster などが有名ですが、ネットワークのテスト自動化については、みんなが口をそろえて名前を出すものがないような印象です。一方で、リスクの観点から設定変更の自動化より先…

[Ansible] Junos の設定投入後に commit せずに candidate config を取得する

■ はじめに Ansible は、Juniper Junos のネットワーク機器に対応していて、情報の取得や設定変更ができます。 Junos は設定投入後に commit することによって、実際の動作に反映されます。設定変更の流れの中で、commit 前の candidate config を確認したい…

ネットワーク自動化ツールの選定ポイント(Ansible、Netmiko、NAPALM、Nornir)

はじめに 近年、ネットワーク機器への作業を自動化するOSS のツールやライブラリが増えてきています。この記事では、こんな観点でツールを検討するのが良いのでは、という自分の案をまとめてみます。 例示するツールとしては、Python で実装されている Ansib…

netmiko と TextFSM を利用してネットワーク機器の show コマンド結果をパースする

■ はじめに ネットワーク自動化 Python ライブラリ netmiko では、状態表示のための show コマンドや、設定変更のコマンドを実行できます。 TextFSM というパーサーと連携して、 show コマンド結果を パース して扱う事ができます。 パースされた Junos の s…