てくなべ

ネットワーク、自動化などの技術的なことを書いていきます。Ansible、StackStorm等

ansible

Ansible 2.7 で導入予定のネットワークモジュール cli_configを試す

■ はじめに 現在開発中の Ansible 2.7 (develブランチ) で、ネットワーク機器への 設定系 コマンドを投入するモジュール cli_config が登場しました。 なお、同じく Ansible 2.7 で開発中の 参照系 コマンドを実行するモジュール cli_command については過去…

【Ansible】ping 系モジュールまとめ(ping/win_ping/ios_ping/nxos_ping/net_ping)

Ansible には ping モジュールや net_ping モジュールなど、モジュール名に ping が含まれるものがいくつかあります。 名前は似ていますが、どこからどこへの ping なのか、何のプロトコルを使うのか、などの点で性質が異なります。 例えば、 公式ドキュメン…

【Ansible】when はタスクの最後に指定しなくても良い

(このツイートのブログ版です) どこで聞いたか覚えてないのですが、Ansible の Playbook のタスクで 「when による条件をつけるとき、タスクの最後に指定するのが違和感がある。プログラムの if 分だと頭につけるが。」という意見があって、when はどこで…

【Ansible】junos_facts でバージョン情報が取得できない場合の対処

■ はじめに Ansible には junos_facts という Juniper Junos の機器のファクトを収集するモジュールがあります。 通常であれば、 ansible_net_version または、 ansible_facts.net_version という変数で、Junos のバージョンを取得できるのですが、(そそら…

【Ansible】公式ドキュメントの対応バージョンの確認と切り替え方法

■ はじめに Ansible の調べ物をしていて、モジュールの説明ページなどを見るときは、そのドキュメントの対応バージョンを気にするようにしています。 使っている Ansible バージョンでそのモジュールが使えるかどうか、など。 この記事では、対応バージョン…

【Ansible】net_get モジュールで SCP でコンフィグをバックアップする

■ はじめに Ansible 2.6 で SCP/SFTP でネットワーク機器とファイルを送受信する net_get モジュールと、 net_put モジュール ができました。 このうち、この記事ではファイルを受信する net_get モジュールを使って、Cisco IOS の startup-config のバック…

【Ansible】 junos モジュール使用時にエラー "'NoneType' object has no attribute 'startswith'" になる場合の対処

■ 現象 junos_command や junos_config モジュールを netconf 接続で使用時に、Playbook などの書き方の不備により fatal: [172.16.0.1]: FAILED! => {"msg": "'NoneType' object has no attribute 'startswith'"} というエラーになってしまうことがあります…

Ansible 2.7 で導入予定のネットワークモジュール cli_command を試す

■ はじめに 現在開発中の Ansible 2.7 (develブランチ) で、ネットワーク機器への 参照系コマンドを実行するモジュール cli_command が登場したことを知りました。 Ansible 2.7 New Modules2018/08/07cli_command名前の通り、ネットワークデバイスに対して、…

Ansible Night in Fukuoka 2018.08 で「Ansibleではじめるネットワーク自動化」という発表をしてきました

■ はじめに 【祝】初福岡開催! Ansible Nitght (旧Meetup)は2017年までは東京でのみの開催でしたが、2018年は他の場所でも開催されています。 7月には大阪で、そして8月3日には福岡で Ansible Night in Fukuoka 2018.08 が開催されました。 ansible-users.c…

Ansible もくもく会 (第4回)にメンターとして参加してきました #ansiblejp

Ansible ユーザー会主催の、Ansible もくもく会 (第3回)にメンター参加してきました。 ブログ枠で参加したわけではないですが、メンターって意外とハードル低いですよ、という感じを共有したく思います。 ansible-users.connpass.com Ansibleもくもく会へ…

Ansible でインベントリファイルを用意せずに対象ホストを指定する方法

-i にカンマ区切りで直接ホストを指定できる 通常、 ansible-playbook コマンドや ansible コマンドのオプション -i オプションでは、イベントリファイル名を指定することが多いと思います。 この -i オプションですが、インベントリファイルを用意すること…

docker run で Ansible の Playbook を実行する

ansible のリポジトリに ansible-runner なるものを見つけました。 github.com デモ用に docker で ansible を動かす例が載っていました。 docker run -it --rm -e RUNNER_PLAYBOOK=test.yml ansible/ansible-runner:latest 手元に ansible がない環境で doc…

日本のネットワーク機器ベンダーの Ansible 対応状況(Alaxala・APRESIA)

■ はじめに Ansible は Cisco、Juniper、ARISTAなどのネットワーク機器にも対応しています。 公式ドキュメント上のネットワークモジュールの一覧ページを確認すると分かりますが、日本のネットワーク機器に対応するモジュールは標準モジュールにはありません…

Ansible の loop は flatten されない(with_items ではなく with_list と同じ)

■ はじめに Ansible 2.5 で with_* の代わりに利用できる loop キーワードが利用できるようになりました。 参考: 2.5.0 CHANGELOG 今まで with_items と同じと思い込んでいたのですが、そうではなく with_list と同じ、ということに気がついたのでまとめます…

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 時点では、…

Ansible ネットワークモジュールにおける facts の扱い

■ はじめに Ansible のネットワークモジュールは、通常のモジュールとは facts の扱いが異なります。 この記事では、ネットワークモジュール固有の facts の扱い方についてご紹介します。 想定バージョンは Ansible 2.5.2 です。 ■ 通常の facts は ネットワ…

Ansible 2.5 から facts は ansible_facts.* という名前空間配下でも参照可能

はじめに Ansible 2.5 から facts は ansible_facts.* という名前空間配下でも参照可能になりました。 例 ansilbe_distribution であれば ansible_facts.distribution でも参照可能 ansilbe_nodename であれば ansible_facts.nodename でも参照可能 そのため…

Ansible Network Team によってメンテナンスされているネットワークモジュール一覧

Ansible Network Team によってメンテナンスされているネットワークモジュール一覧は以下のページにまとめられています。 Modules Maintained by the Ansible Network Team — Ansible Documentation (参考リンク) www.redhat.com What networking platforms …

Ansible ネットワークモジュールの aggregate オプションによる繰り返し処理の特徴

■ はじめに Ansible 2.4 から、ネットワークモジュールの一部で、繰り返しを伴う設定を効率的に投入できる aggregate というオプションが利用できるようになりました。 この記事では、既存の with_items による繰り返しとの比較を通じて、動作の紹介をします…

Ansible Night in Tokyo 2018.04 で「Junosモジュールのコネクションタイプの使い分け」という発表をしてきました

■ はじめに 2018/04/26 に開催された Ansible Night in Tokyo 2018.04 で「Junosモジュールのコネクションタイプの使い分け」という発表をさせていただきました。 ansible-users.connpass.com Ansible 2.5 で、ネットワークモジュール向けに network_cli 、 …

JANOG41.5 で「もっと気軽に始めるAnsible」という発表をしてきました

■ はじめに 2018/04/20 に開催された JANOG41.5 Interim Meeting で「もっと気軽に始めるAnsible」という発表をさせていただきました。 janog.connpass.com Ansible はネットワーク機器にも対応しています。YAML形式の定義ファイル(Playbook)を書かずに、…

ansible Ad-Hoc コマンドの callback plugin の指定時は bin_ansible_callbacks = True も必要

■ はじめに Ansible には callback plugin という仕組みがあり、結果出力の形式を変更したりすることができます。 ansible-playbook コマンドでは、ansible.cfg で stdout_callback の指定を、ansible コマンドではこれに加え bin_ansible_callbacks = True …

Ansible の ios_command の出力結果でパスワードが ******** でマスクされる

■ はじめに Ansible には Cisco IOS へ show コマンドを実行できる ios_command モジュールが用意されています。 このモジュールは設計上、コマンド実行結果にパスワードで指定した文字列が含まれる場合、パスワードに関係ない箇所でも******** でマスクする…

Ansible ネットワークモジュールのプチ社内勉強会をしました

■ 目的 本日、社内でAnsibleのネットワークモジュールのプチ勉強会をしました。 本当にプチと言う感じで参加者は数人、資料もほとんど既存資料のリンク集でした。 初めての人には、実際にAnsibleを他人が動かしてるところを見たり、自分で動かしたりすること…

Ansible の panos_object モジュール使用時のエラー「Missing required libraries.」の対策

■ はじめに Ansible には PaloAlto (PAN-OS) 用のモジュールがいくつかあります。これらのモジュールを利用するにあたって、別途Pythonライブラリが必要なものもあります。 たとえば、 アドレスやサービスオブジェクトを操作する panos_object モジュール の…

Ansible の Playbook Debugger を常に起動させる方法(Ansible 2.5 から)

■ はじめに Ansible には Playbook Debugger というPlaybook の実行を途中で止めて、変数の内容を表紙したり変更したりできる機能があります。 これまでは、エラー発生時のみ Debugger を起動させることできたのですが、次期バージョン Ansible 2.5 から、オ…