てくなべ (tekunabe)

ansible / network / automation

ansible

[Ansible/AWX] アドホック実行画面の追加変数欄では ansible_ で始まる変数名を指定できない

はじめに Ansible Tower / AWX には、Playbook をジョブテンプレートとして実行する機能の他にも、アドホックな ansible コマンドを実行する機能もありま -e オプションに相当する、追加変数の設定欄がありますが、指定できる変数が制限されています。 具体…

[Ansible/AWX] アドホック実行画面で選択できるモジュールを追加する

はじめに Ansible Tower / AWX には、Playbook をジョブテンプレートとして実行する機能の他にも、アドホックな ansible コマンドを実行する機能もあります。 デフォルトでは利用できるモジュールが限られていて、たとえばネットワーク機器に対して有効なモ…

[Ansible] Playbook に手を加えずにデバッガーを有効にする(ENABLE_TASK_DEBUGGER)

はじめに Ansible には Playbook Debugger というがあります。 Playbook の途中のタスクで処理を止めて、変数の値を確認したり書き換えたりできるデバッグ機能です。Play や Task に debbuger: 止める条件 という指定すると有効になります。 たとえば、以下…

[Ansible] Tower/AWXのジョブテンプレートやワークフロージョブテンプレートを専用モジュールで起動する

はじめに Ansible Tower / AWX の操作に対応する awx.awx コレクションには、ジョブテンプレートやワークフロージョブテンプレートを起動するモジュールがあります。 この記事では、簡単なサンプルをもとに使用例をご紹介します。 検証環境 AWX 11.0 ※ Ansib…

[Ansible] 各タスク内で実行するホストの順番を指定する(order)

はじめに 各タスク内で、どのようなホストの順番で実行されるのか、を指定する order というディティブがあります。 先日たまたま知ったので、せっかくなので、検証します。 [2020/08/02 追記] order で指定できるのは、実行開始の順であって、結果の表示順…

[Ansible] awx コマンドでジョブの実行を終了までリアルタイムに見届ける(--monitor オプション)

はじめに Ansible Tower、AWX をコマンドで操作できる awx コマンドというツールがあります。 tekunabe.hatenablog.jp このコマンドツールのドキュメントの Creating and Launching a Job Template を見ていたときに、ジョブ起動時に --monitor というオプシ…

[Ansible/AWX] ワークフロー内の一連のジョブの実行ログをファイルで保存するPlaybook

はじめに Ansible Tower / AWX では、Playbook の実行ログがサーバー内に自動的に保存されます。 いつだれが実行してどうなったかを追跡するのに便利です。 そのログを、ファイルとしてダウンロードすることもできます。 出力のダウンロード 数個ログだった…

[Ansible] Tower や AWX をコマンドで操作できる awx コマンドのインストール、設定、動作確認

はじめに Ansible Tower / AWX は GUI の他にも、REST API 機能があります。API を利用すると、プログラムから操作しやすくなったり、CLI 化しやすくなったリします。 AWX には、API をラッピングしたような awx という CLI ツールがあります。 (ここでは A…

[Ansible] 他のホスト変数を参照、設定する(hostvars、delegate_to/delegate_facts)

はじめに Ansible で他のホストのホスト変数を参照、設定したりする方法ご紹介します。 ■ 他のホスト変数を参照する 他のホスト変数を参照するには hostvars を利用します。 Playbook サンプル Playbook です。 localhost、rt1 が実行対象で、rt1 のタスクの…

[Ansible] AWX11.0 リリースによる tower モジュールの変更点

はじめに 2020/04/16 に AWX 11.0 がリリースされました。 Release Release 11.0.0 · ansible/awx · GitHub Ansible 2.9 まで、Ansible 本体に標準で付属していた tower_* モジュールは、AWX 側で開発され、awx.awx collection として配布されています。 tek…

[Ansible] register や set_fact した変数は Play を跨げる

はじめに (聞かれると「あれ、どうだったかな・・」と不安になるシリーズ) 以下の記事を拝見して思ったのですが、 zaki-hmkc.hatenablog.com register や set_fact した変数は Play を跨いで有効です。 言い換えると Playbook スコープです。 set_fact モ…

[Ansible] 「ERROR! failed to combine variables, expected dicts but got a 'dict' and a 'AnsibleUnicode'」発生時の対処

遭遇したエラー 先日、ansible-playbook コマンド実行時に、以下のエラーに遭遇しました。 $ ansible-playbook -i inventory.ini test.yml PLAY [sv] ***************************************************************************************************…

[Ansible] Tower 上のインベントリを CLI Ansible のダイナミックインベントリとして利用する

はじめに Ansible は、Inventory Plugin という機能によって、様々な形式のインベントリを利用できるようになっています。 よくある INI や YAML 形式のスタティックなファイル以外にも、ダイナミックにインベントリ情報を取得することもできます。 たとえば…

[Ansible] インベントリ変数で指定した秘密鍵のパスはクレデンシャルの秘密鍵データより優先される

はじめに 2020/04/14 に開催された Ansible もくもく会にメンターとして参加させていただきました。 サーバー編、ネットワーク編とあるうちのネットワーク編を主に見ていました。 実際に自分自身もハンズオンで試してみると、Ansible Tower のパートで、ネッ…

[Ansible] VyOS で任意のファイル名で save するには、cli_config モジュールを利用する

はじめに VyOS では、コンフィギュレーションモードで save コマンドを実行すると、コンフィグを機器内に保存できます。 Ansible としては、vyos_config モジュールの save オプションの指定により、同じことができます。 一方で save my_config.txt のよう…

[Ansible] vyos_config モジュールで VyOS の設定変更をする

はじめに 前回の記事で、Ansible で VyOS を扱うための準備や、簡単な show コマンドを実行する方法をご紹介しました。 tekunabe.hatenablog.jp この記事では、vyos_config モジュールを利用した設定変更の Playbook をご紹介します。 動作確認環境 Ansible …

[Ansible] VyOS モジュール利用のことはじめ

はじめに Ansible は VyOS にも対応していて、設定の変更や、各種 show コマンドの実行による情報取得ができます。 この記事では、VyOS モジュールを利用するためのインベントリファイルの作成、認証情報の定義などの準備と、簡単な show コマンドを実行する…

[Ansible] molecule でネットワーク機器の設定後のテストを自動化する(いまいち編)

はじめに molecule とは molecule は、Ansible のロールをテストするフレームワークです。 これまで、バージョンアップするごとに結構インパクトの大きい変更があって、やや敬遠気味でした。バージョン 3.0 で、デフォルトの verifier(実際にテストを担うも…

[Ansible] yum モジュールで特定のパッケージがインストール済みであることを確認する

はじめに 特定のパッケージがインストール済みであることを確認する Playbook です。 仕組みは以下のとおりです。 yum モジュールの state オプションで installed を指定する このタスクをチェックモードで実行する 結果の changed が false であればインス…

[Ansible] ロールを引数ありの関数のように使う

はじめに Playbook を書いていて処理のかたまりをロール化したとき、一部の処理だけ変数で挙動を変えたいときはないでしょうか。この記事ではロールを引数ありの関数のように使う方法を紹介します。 Python でいうと以下のようなコードです。 greeting は、…

[Ansible] PaloAlto(PAN-OS)の API を uri モジュールで実行する

はじめに Ansible には PaloAlto(PAN-OS) 向けのモジュールがあります。Ansible 2.8 までは標準モジュールとして付属していました。2.9 では Deprecated(非推奨)となり、Collection モジュールを利用することになっています。 ですが、モジュールが用意さ…

[Ansible/AWX] AWX でカスタムの仮想環境(venv)パスを認識させる方法

はじめに AWX や Ansible Tower では、デフォルトで用意されている venv (/var/lib/awx/venv/ansible)の他に、でカスタムした Ansible 環境を用意して利用できます。 参考: Ansible Tower のドキュメント 「設定 > システム 」画面の「カスタムの仮想環境…

[Ansible] Jinja2 構文を展開せずに文字列そのままとして指定する

通常は変数展開される tower_credential_type モジュールを利用して、カスタムクレデンシャルの injectors オプションを利用して、以下のような値を投入する Playbook を作ろうと思ったことがありました。 こういうのを登録したい しかし、以下の「ここ」の…

[Ansible/AWX] デフォルトで利用されている venv 環境のパッケージ一覧の調べ方

はじめに AWX では、デフォルトの Python 環境として /var/lib/awx/venv/ansible が利用されています。 以前から不思議だったのですが、コマンドライン版の Ansible では 2.8 から、ネットワーク機器への接続に別途 paramiko をインストールする必要があるの…

[Ansible] tower_workflow_job_template_node モジュールでノード定義とリンク定義をうまくやる

はじめに 以前の記事で、Collection 版の tower モジュールである、tower_workflow_job_template、tower_workflow_job_template_nodeを利用してワークフローを作成する Playbook をご紹介しました。 tekunabe.hatenablog.jp そのなかで、 本当はノードの作成…

[Ansible] Ansible Tower / AWX のワークフローで別のジョブテンプレートに変数を渡せる set_stats と 追加変数の関係

はじめに Ansible Tower / AWX のワークフローで、別のジョブテンプレートに変数を渡せる set_stats モジュールがあります。 set_stats に登録した変数は、かなり優先度が高く、追加変数(Extra Variables)を上書きするケースもあります。 この記事では一例…

[Ansible] Collection 版の tower モジュールでワークフローを作成する(tower_workflow_job_template/tower_workflow_job_template_node)

はじめに 以前の記事で、Ansible Tower / AWX の各種オブジェクトを作成、管理できる tower モジュールのうち、Collection 版のモジュールについてご紹介しました。 tekunabe.hatenablog.jp Collection 版のモジュールでは、ワークフローを扱うモジュールと…

[Ansible] junos モジュールで netconf 利用時のエラー「name 'known_hosts_lookup' is not defined」の対策

エラー内容 junos モジュールを、netconf コネクションプラグインで利用する際、以下のエラー "name 'known_hosts_lookup' is not defined" が発生することがあります。 $ ansible-playbook -i inventory.ini 01_show.yml PLAY [vmx] **********************…

[Ansible] tower モジュールの最近の事情と Collection 版モジュールの使い方(AWX10.0時点)

■ はじめに Ansible には、Ansible Tower / AWX の各オブジェクトを作成、管理するための tower_* モジュール郡があります。GUI 操作を自動化できるのでとても便利です。 これらのモジュールは転換期を迎えています。 この記事では、最近の tower_* モジュー…

[Ansible/AWX] ワークフローですべてのジョブが正常で収束したときみ処理を進めるには(CONVERGENCEオプション)

はじめに Ansible Tower と、そのアップストリーム版である AWX には、ワークフローという機能があります。 ワークフローは、ジョブテンプレート(Playbook + α のオブジェクト)を複数つなぎあわせて、一連の処理を組み上げる機能です。 ワークフローは以下…