てくなべ (tekunabe)

ansible / network / automation

automation

ネットワーク自動化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…

[Ansible] ios_config モジュールの src で指定するファイルの内容には正しいインデントが必要

これは Ansible Blogger 2018 (sponsored by Red Hat) Advent Calendar 2018 の22日目の記事です。 ■ はじめに Ansible には、 Cisco IOS ネットワーク機器に対して設定変更コマンドを実行できる ios_config モジュールがあります。 ios_config モジュール…

[Bolt] エージェントレスなインフラ自動化ツール「Puppet Bolt」かんたんチュートリアル

■ はじめに Puppet Bolt はエージェントレスなインフラ自動化ツール Ansible や Chef などとよく比較される Puppet という構成管理ツールがあります。 Puppet といえばエージェント型のイメージがありますが、2018年10月にエージェントレス型の別ツール「Pup…

[nornir] 指定できるプラットフォーム名(ios / junos / eos / vyos など)

■ はじめに Python 製自動化フレームワークライブラリ nornir は、ネットワーク機器への接続に、 NAPALM や netmiko をデフォルトで利用できます。 接続の際のコネクションパラメーターとして、どのプラットフォームに接続するかを示す platform ( nornir 1.…

[Ansible] 2018年のAnsible ネットワークモジュールのアップデートまとめ(詳細版)

これは Ansible Advent Calendar 2018 の15日目の記事です。 ■ はじめに 2018年、Ansible は 2.5、2.6、2.7 とバージョンアップを重ねてきました。ネットワーク関連では、新規対応プラットフォームやモジュールの追加の他にも、ネットワークモジュール用コネ…

[Ansible] グループ変数を活用したネットワーク機器への Syslog サーバー追加

この記事は、Software Design 2018年12月号 の 特集1「[超速]入門 Ansible」内の「第3章:Ansibleでネットワーク作業も自動化」(以下、基本編)の続きです。 ソフトウェアデザイン 2018年12月号作者: 中島倫明,横地晃,齊藤秀喜,楠正憲,三廻部大,鷲北賢,くつ…

[Batfish] 重複したインターフェースのIPアドレスを検出する(Cisco IOS編)

ネットワーク機器のコンフィグ解析ツール Batfish には、重複したインターフェースのIPアドレスを検出する機能があります。 Batfish の Python ライブラリpybatfish でいう ipOwners() に、パラメータ duplicatesOnly=True を与えたときの動作です。 以下に…

[Batfish] ネットワーク機器のコンフィグを読み込んでルーティングなどの様々な検証ができるツール「Batfish」の紹介

■ Batfish とは: 実機に接続することなくコンフィグを検証 Batfish は、ネットワーク機器のコンフィグの様々な検証ができるツールです。 実機に接続する必要はありません。 準備したコンフィグファイルを読み込んでパースし、解析して内部でネットワーク機器…

[nornir] Python 製自動化フレームワーク「nornir」かんたんチュートリアル(Ansibleと比較しながら)

※2018/12/18 更新: nornir 2.0.0 リリース に伴い、全面的に 2.0.0 対応に更新しました。 ■ nornir とは nornir は、Python 製の新しい自動化フレームワークです。 netmiko や NAPALM も取り込んでいるため、ネットワーク機器にも対応しています。 この記事…

ネットワーク自動化 Python ライブラリ NAPALM 2.3.3 リリース、公式 Docker イメージ追加など

■ NAPALM 2.3.3 リリース github.com 2018/10/15 にネットワーク自動化 Python ライブラリである NAPALM 2.3.3がリリースされました。詳細は 2.3.3 CHNGELOG に記載があります。 この記事では、個人的に気になった Docker イメージの追加と、モックの利用法…

自動化を考える前に読んでおきたいプレゼン資料たち

はじめに 以前こんな記事を書きました。(ほぼリンク集ですが・・) tekunabe.hatenablog.jp 今回はこれのプレゼン資料版のような記事です。ここ半年くらいの資料を対象にしています。 具体的なツールの使い方などのスキルとは別に、考え方についても備えて…

StackStorm の Ansible Pack で利用するPythonパッケージの追加インストール方法

はじめに StackStorm の Ansible Pack を利用して Junos のルーターに接続しようとしたところ、 ncclient is not installed というエラーになってしまいました。 このエラー自身はAnsible 単体で利用した時にも見かけたことがあったので対処方法を知っていま…

StackStorm と Ansible で Cisco IOS ルーターに設定を投入する(st2 run編)

■ はじめに StackStorm と Ansible 連携を試すために、Cisco IOS ルーターに設定を投入する方法を確認しました。 この記事では、環境の準備と st2 run コマンドによる簡単な Ansible 連携の方法をご紹介します。 ■ StackStorm側の準備 StackStorm 本体のイン…

Ansible 2.5.3 で ios_config モジュールのコンフィグバックアップ時に defaults オプションを参照するようになった

■ はじめに ios_config モジュールには、コンフィグのバックアップファイルを生成する際に利用するコマンドを show running-config にするか、show running-config all または full (以降 show run all) にするかを決める、defaults というオプションがあり…

[Ansible] ios_config モジュールで意図せず chaneged になってしまうバグが 2.5.3 で修正された

はじめに Ansible 2.5.0 - 2.5.2 の ios_configモジュールには、コンフィグが変更されていないにもかかわらず意図せず changed になってしまうバグがありました。2018/05/18 にリリースされた Ansible 2.5.3 で修正されましたので、簡単な動作確認をします。…

Ansible でNW機器のインターフェースが意図通りのVLANに所属しているかチェックする(associated_interfaces)

■ はじめに Ansible 2.4 から、ネットワークモジュールに、設定だけでなく「意図した状態か」チェックする Declarative Intent という機能が追加されました。 参考 https://www.ansible.com/blog/networking-features-in-ansible-2-4 Ansible 2.4 時点では、…