てくなべ (tekunabe)

ansible / network automation / 学習メモ

2018-01-01から1年間の記事一覧

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

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

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

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

【StackStorm】様々な Pack の更新状況をWebで確認する

StackStorm には Ansible や Zabbix、Slackなどのツールと連携するための Pack という機能単位があり、StackStorm Exchange というサイトで一覧が確認できます。 新しい Pack が追加されたときは公式ブログで紹介されるので気がつけるのですが、既存の Pack …

【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名前の通り、ネットワークデバイスに対して、…

社内技術イベントで「無料で仮想Junos環境を手元に作ろう」という発表をしました

はじめに 弊社では年に数回、AP Tech Fest という社内向けの技術イベントを開催しています。(参考:2017年11月開催分) 大体毎回何かしらの発表しているのですが、2018/07/18 開催分では「無料で仮想Junos環境を手元に作ろう」という発表をしました。 資料 最…

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

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

それでも SlideShare を使う理由

■ はじめに 私は普段、発表資料を SlideShare へアップロードしています。 www.slideshare.net しかし、2017年に SlideShare はスライドが差し替えができない仕様に変わってしまいました。 私の観測範囲ではこの頃から Speaker Deck へ移行する方がちらほら…

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

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

【JANOG42】私にとっての「つなぐ、つたえる、つみあげる」

■ はじめに 2018/07/11 - 13 に三重県津市で開催された JANOG42 Meeting in Mie(ホスト:株式会社ZTV様)に参加してきました。 今回のテーマは開催地である津(つ)市にちなんで「つなぐ、つたえる、つみあげる」でした。 そこで、それぞれの点で簡単に振り…

【JANOG42】Ansible ネットワーク自動化チュートリアルを発表してきました

■ はじめに 2018/07/11 - 13 に三重県津市で開催された JANOG42 Meeting in Mie(ホスト:株式会社ZTV様)で「Ansible ネットワーク自動化チュートリアル」を発表してきました。 Ansible ネットワーク自動化 チュートリアル :: JANOG42 Ansibleの初心者向け…

Interact 2018 に参加してきました(k8s / MS SDN / Ansible / Azure)

■ はじめに Interact 2018 というイベントに参加してきました。私は今回がはじめての参加でしたが、今年で5年目だそうです。 interact.connpass.com twitter.com マルチセッション形式だったのですが、私は以下の4セッションに参加しました。 今からはじめる…

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

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

Ansible 目線で見た Interop Tokyo 2018

■ はじめに 2018/06/13 -15 に幕張メッセで開催された Interop Tokyo 2018 に参加してきました。 www.interop.jp 今回は、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…

Vagrant で手軽に VM ごと StackStorm の環境を準備する

■ はじめに StackStorm の環境を準備するには、インストールスクリプトを実行する方法や Ansible の Playbook を実行する方法などがありますが、先日の公式ブログでは vagrant で VMごと StackStorm の環境を準備する方法が紹介されていました。 stackstorm.…

日本のネットワーク機器ベンダーの 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 で Slack 投稿時に特定のアクションをするルールを作ってみた

■ はじめに 以前のエントリで、 StackStorm の Slack Pack の Action を利用して、Slack への投稿を試しました。 tekunabe.hatenablog.jp 今回は、Action ではなく、Trigger や Sensor を使って Slack 上のイベントを拾って何かする、という機能を試してみま…

はじめて StackStorm の Action を作ってみた

■ はじめに 2018/05/29 に開催された、Tech Night @ Shiodome # 8の中で「明日からできる、st2のActionの作り方」という発表がありました。 まだActionは作ったことがなかったのですが、これを聞いて簡単なものを作ってみようと思ってやってみました。 speak…

StackStorm 経由で Slack に投稿する(準備 ~ st2 run編)

■ はじめに StackStorm には Slack と連携するための Pack が用意されています。 この記事では、環境の準備と、簡単な動作確認としてSlackへの手動投稿を試します。 ■ 環境の準備 StackStorm 本体のインストール 今回は 以下の方法でインストールします。 te…

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 で修正されましたので、簡単な動作確認をします。…

devel ブランチの Ansible を pip でインストールする方法

pip install git+https://github.com/ansible/ansible.git@devel

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 です。 [2019/11/14追記] Ansible 2…

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

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