てくなべ (tekunabe)

ansible / network / automation

ansible

[Ansible] json_query フィルターの実体は JMESPath

Ansible で複雑な構造の変数から特定の値を抽出する際、select や map 、list などのフィルターを駆使することがあります。 参考 Ansibleのselectattrとmapとlist - yuhei.kagaya 【Ansible】データから「select * from users where name="hoge"」的な抽出が…

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

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

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

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

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

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

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

[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 フィルターは、リスト内の要素の重複を排除してユニークにするフィルターです。 簡単なサンプルでご紹介しま…

[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-ryn)という機能があります。 これまでは、通常実行時も 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] ロール呼び出しに指定したタグはロールの各タスクに継承される

問題 突然ですが、問題です。 以下のようにタグのついた 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…

[Ansible] Ansible Tower / AWX のワークフロー定義を YAML で表示する(tower-cli編)

はじめに Ansible Tower / AWX では、ワークフロービジュアライザーという画面で、ワークフローを可視化できます。 ワークフローの定義 ビジュアル的に可視化されていると直感的で分かりやすいです。一方で、複数のワークフロー定義を比較したいなどの場合、…

[Ansible] Ansible で Ansible Tower / AWX のワークフローを作成する(tower_workflow_template モジュール編)

■ はじめに Ansible には Ansible Tower の各オブジェクトを管理するモジュールがあります。 ワークフローを管理するモジュールは tower_workflow_template です。 環境 Ansible 2.9.0 AWX 7.0.0 ■ 環境の準備 Ansible 側に ansible-tower-cli が必要なので…

[Ansible] ネットワーク機器に接続する条件はバージョンやコネクションブラグインによって異なる

はじめに Ansible では、ネットワークモジュール向けに主に以下の専用コネクションプラグインが用意されています(組み合わせはこちら)。 network_cli netconf httpapi Ansible のバージョンや、利用するコネクションプラグインによって、ネットワーク機器…

[Ansible] F5 BIG-IP への接続確認には ping モジュールではなく bigip_* を利用するしかないのではという話

はじめに 先日開催された Ansibleもくもく会 (サーバ編 & NW編)2019.11では、ネットワーク編の環境として F5 BIG-IP の環境を割り当ていただきました。 書いていく Playbook は、こんな感じものでした(引用元)。 --- - name: GRAB F5 FACTS hosts: f5 co…

[Ansible] Ansible 2.9 リリース、便利機能や注意点まとめ

■ はじめに ■ 共通 Ansible Galaxy / Ansible Collections 制御 / 変数 その他 ■ Package ■ Service ■ Cloud、VMware ■ Network ■ Windows ■ Database ■ Storage ■ Crypto ■ まとめ おまけ ■ はじめに 2019/10/31 に Ansible 2.9.0 がリリースされました。60…