てくなべ (tekunabe)

ansible / network automation / 学習メモ

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

自動化よりも設計・管理対象を減らすということ

はじめに 「業務の整理、手順書整備、体制作り・・」など、自動化の以前にすることとしてよく聞きます。 今年は「技術面で自動化以前にできること」に気付かされた年でした。それは、自動化よりも設計・管理対象を減らすということです。 ピンときた2つの資…

[Ansible] Pull Request のコードを試す方法

はじめに Ansible は GitHub 上で日々開発が進められています。 バグや要望などは Issue にあげられ、実装は Pull Request にあげられます。 Pull Request にあげられた追加、修正コードのうち、ansible/ansible リポジトリ にマージされていないものは、そ…

[Python] 2つファイルの内容をリストにして差分を表示する

はじめに こちらの記事を拝見し、紹介されている Python のコードの別解を考えてみます。 fugulog.hatenablog.com 動作確認環境 Python 3.6.7, 3.7.5 やっていること 背景はここでは割愛しますが、docker イメージ名がリスト化された2つのファイル checklist…

[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…

[Ansible] Hackey でイルミネーションをつくる

はじめに Hackeyという、カギをひねると HTTP をしゃべる機器があります。 cerevo.com この機器のもう一つの機能として、内蔵の5色の LED を光らせるというものがあります。 HTTP GET を叩いて光らせるので、curl でも何でもいいのですが、たまたま手元にあ…

[Ansible] 指定した文字数以内に文字を切り詰める truncate フィルター

はじめに Ansible が内部で利用しているテンプレートエンジンの Jinja2 には、指定した文字数以内に切り詰める truncate フィルターがあります。 Ansible の filter のドキュメントページ には載っていないので知らなかったのですが、Jinja2 のリファレンス…

[Ansible] Python の str.format() のようなことをする

はじめに Ansible ではテンプレートエンジンとして Jinja2 を利用しています。 Jinja2 書式内で、Python の str.format()のようなことをする方法を2つ紹介します。 検証環境 Ansible 2.9.1 Python 3.6 方法1: .format() メソッドを利用する Python の str.fo…

[Ansible] 新バージョンの Ansible が出るときにどこで情報を得ればよいか

これは Ansible Advent Calendar 2019 の22日目の記事です。 ■ はじめに Ansible は年に1〜2回ほどバージョンアップを重ねています。毎回大量のモジュールが追加されたり、様々な機能追加や変更がなされています。 個人的にはどのような変化があるのか気にな…

[Ansible] モジュールの探し方

はじめに 先日開催された「Ansibleもくもく会 ( サーバ編 ) 2019.12 in 札幌」に、リモートメンターとして参加させていただきました。 その際、参加者の方から以下のご質問をいただきました。 モジュールの数が多いためやりたいことに適したモジュールを探す…

[Ansible] NetBox をインベントリーとして利用する

これは Ansible 3 Advent Calendar 2019 の21日目の記事です。 ■ はじめに NetBox を インベントリーとして利用する 以前「[Ansible] NetBox モジュールで Site や Device を登録する(Collection モジュール編) - てくなべ (tekunabe)」で、Ansible から N…

[Ansible] 今年もよくつまづいたねランキング2019

これは Ansible 3 Advent Calendar 2019 の20日目の記事です。 はじめに みなさま、Playbook を書いて一発で意図通り正常に動かすことはできますでしょうか? 私は、そうそうできません。 今年もよくいろいろなところでつまづきました。この記事では、個人的…

[Ansible] 今日のラッキーモジュールを表示する(Ansible占い)

Ansible のラッキーモジュールを表示するPlaybook つくりました。 pic.twitter.com/X0fnAzFXoI— よこち(yokochi) @ Ansible実践ガイド 第3版 (@akira6592) 2019年12月19日 ■ はじめに Ansible には 3,000 を超えるモジュールが標準で含まれています。 ここま…

[Ansible] NetBox モジュールで Site や Device を登録する(Collection モジュール編)

これは エーピーコミュニケーションズ Advent Calendar 2019 の15日目の記事です。 ■ はじめに NetBox とは、IPAM、ラックやデバイス管理機能を持ったWeb UI 付きのオープンソースのソフトウェアです。 Device 管理画面 API を備えていて、Ansible の NetBox…

2020年2月開始の Cisco DevNet 認定「DevNet Associate (DEVASC 200-901)」のリンクまとめ

はじめに 2020/02/24 に、Cisco 技術者認定試験の大きな改定が予定されています。 CCNA が1本化されたり、いきなり上位試験を受けられるようになったりなど、なかなかの大改訂です。 その中でも私が一番気になっているのが、ネットワークプログラマビリティ…

[Ansible] 【別解】 Ansibleの呼吸 肆ノ型 フィルター芸「0,1反転」

これは Ansible 3 Advent Calendar 2019 の6日目の記事です。(さかのぼり投稿) ■ はじめに 当アドベントカレンダーの 5日目の記事は、既存の 0,1 が書かれているファイルを反転させて別のファイルを生成するという記事でした。 qiita.com おもわず別解を考…

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 から続々と追加…

[Ansible] YAML のキー重複時の挙動を DUPLICATE_YAML_DICT_KEY で設定する

これは Ansible 2 Advent Calendar 2019 の7日目の記事です。 はじめに Playbook は YAML というフォーマットで記述します。ときどき、ミスによって YAML のディクショナリのキーの重複して書いてしまうこともあるかと思います。 これまではキーの重複時は、…

[Ansible] リスト内の要素の重複を排除してユニークにする unique フィルター

これは Ansible 2 Advent Calendar 2019 の5日目の記事です。 はじめに Ansible には、値に対して様々な処理をするフィルターがあります。 unique フィルターは、リスト内の要素の重複を排除してユニークにするフィルターです。 簡単なサンプルでご紹介しま…

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

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

[Ansible] 変数の値が指定の範囲内の数値であることを assert モジュールでチェックする

これは Ansible 2 Advent Calendar 2019 の3日目の記事です。 ■ はじめに assert モジュールの that オプションで >= や <= などを利用することで、数値の範囲をチェックできます。 この記事では、簡単なサンプルをもとに説明します。 ■ 【要件1】 1〜1000 …

[Ansible] ansible-doc コマンドで Collection のモジュールのドキュメントを表示する

■ はじめに Ansible 2.9 から Ansible Collection という新しいコンテンツ配布形式が始まりました。(Ansible 2.8では実験的サポート) ロールのほかにも、モジュールやプラグインを含めて配布できるのが特徴です。 Collection でインストールするものは、An…

[Ansible] check モードの実行ログに [CHECK MODE] という印をつける方法

■ はじめに Ansible には、Playbook 実行時に予めどのような変更がせれるかを、実際に変更を加えることなくチェックできる、check モード (Dry-run)という機能があります。 これまでは、通常実行時も check モード実行時も、実行ログ上は特に変わりはありま…

[Ansible] Ansible 2.9 からデフォルトでネットワークの fact も収集される

■ はじめに fact といえば、サーバー系モジュールの場合は、gather_facts: yes(デフォルト)で収集されましたが、ネットワークモジュールの場合は事情が異なりました。 具体的には、gather_facts: yes では、Ansible コントロールノード自身の fact が収集…

[Ansible] role の vars ディレクトリ配下に複数の変数ファイルを配置してまとめて読み込む方法

■ はじめに role を構成する際、vars ディレクトリ配下に main.yml を作成して、変数を読み込ませます。 普通に考えると、vars/main.yml という1つのファイルしか読み込めなさそうですが、複数のファイルに分割しておきたいこともあるかもしれません。 公式…

[Ansible] Playbook の書き出しを - hosts か hosts か迷ったら

■ はじめに このツイートの詳細です。 めちゃくちゃわかります。Playbook は Play をまとめたもの、と意識するようになってから、 - hosts がぱっとでてくるようになりました。 https://t.co/E6VX3oRPF8— よこち(yokochi) @ Ansible実践ガイド 第3版 (@akira…

[Ansible] Ansible Tower / AWX の設定済みオブジェクトをエクスポート、編集、インポートする(ワークフロー編)

はじめに Ansible Tower / AWX で画面から設定を続けていくと、自動化したくなるのではないでしょうか。 これから新たに設定する分は、Ansible で Ansible Tower / AWX の各オブジェクトを管理できる tower_* モジュールを利用するのも手かと思います。 では…

[Ansible] ロール呼び出しに指定したタグはロールの各タスクに継承される(roles/import_role)

問題 突然ですが、問題です。 以下のようにタグのついた Playbook、role があるとします。 tag_playbook.yml - hosts: localhost gather_facts: no roles: - role: testrole tags: - tag_parent roles/testrole/tasks/main.yml - name: task1 debug: msg: "t…