てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] Playbookの実行結果(エラー含む)を改行付きで表示する(community.general.yaml コールバックプラグイン編)

はじめに Ansible のエラーメッセージは、改行のない JSON で表示されるため読みにくいという意見を見かけました。確かにデフォルトだとそうです。 Ansible は Playbook 実行結果をコールバックプラグインという仕組みで扱われます。いくつか種類があるので…

[Ansible] pre-commit を使って git commit 前に自動で ansible-lint する

はじめに 先日の記事で、ansible-lint コマンドの即時性を高めるには別途仕組みが必要な旨を書きました。今回は、自動化の仕組みとして pre-commit を使って仕込んでみます。 だいぶシンプルな設定に抑えています。 導入 venv への pre-commit のインストー…

[ansible] ansible-core 2.15 で vars 直下にリストで変数定義すると Deprecated(非推奨)で警告が表示される

はじめに 2023年5月にリリース予定の ansible-core 2.15 で、vars ディレクティブ直下にリストで変数を定義する方法が Deprecated(非推奨)として警告が表示されるようになります。ansible-core 2.15 の Porting Guide にも掲載されています。 言葉にすると…

[Ansible] VS Code の Ansible 拡張経由で ansible-lint する際のチェック範囲

はじめに VS Code には、Ansible Playbook を書く際に便利な拡張があります。 marketplace.visualstudio.com とても便利な拡張で様々な機能があり、ファイル保存時に自動で ansible-lint を実行することもできます。 Playbook の保存時に、そのPlaybook を起…

[Ansible] ansible-navigator 経由で ansible-lint するには基本的に EE 内に ansible-lint が必要

はじめに ansible-navigator は、Playbook を実行するだけでなく ansible-lint を呼び出す機能もあります。 タイトル通り、多分 EE 側に ansible-lint が必要だろうと思っていたものの、一応確かめてみようと思ったので試しました(結果タイトル通りでした)…

[Ansible] ansible-lint でファイル名と無視したいルールを指定する .ansible-lint-ignore

はじめに ansible-lint 6.13.0 で、無視するルールを定義するファイル が導入されました。 定義ファイル名は .ansible-lint-ignore または .config/ansible-lint-ignore.txt です(個人的には後者が好み)。ファイル名の先頭の . 有無や、拡張子の有無が異な…

[Ansible] ansible-lint 経由の yamllint と、直接 yamllint する場合とではデフォルトルールが異なる

はじめに ansible-lint にはは、yamllint を呼んで YAML としてのチェックをする機能があります。 たとえば、1行あたりの文字数が何文字以内であるべきか、真偽値はどう指定するべきか、などのルールです。 うすうす感じていた(?)のですが、ansible-lint …

[Ansible] ansible-navigator で vars_prompt のような対話式入力を有効する --enable-prompts オプション

はじめに ansible-navigator 3.0.0 で、vars_prompt ディレクティブや ansible.builtin.pause モジュール のような、ユーザーの入力を待つ機能と組み合わせて使うためのオプション --enable-prompts (短縮形は --ep )が追加されました。 該当 changelog: A…

[Ansible] インストールされているコレクションから requirements.yml を生成する(Playbook編)

はじめに pip でいう pip freeze で requirements.txt のフォーマットを出力できるのと同じように、Ansible のコレクションでもコレクションの一覧を requirementst.yml のフォーマットで出力できれば便利かもしれないなと思いました。 ansible-galaxy colle…

[Ansible] quay.io/ansible/ansible-runner のイメージの廃止予定と今後の動き(2023年3月地点)

quay.io/ansible/ansible-runner とは venv でははく、コンテナベースの Ansible の実行環境が登場してしばらく経ちました。 AAP を利用するときは registry.redhat.io/ansible-automation-platform-21/ee-supported-rhel8 のようなイメージを見かけますが、…

[Ansible/Azure] azure.azcollection.azure_rm インベントプラグインで、対象リソースグループを環境変数で指定する

はじめに Ansible から Azure の VM の情報を取得して動的にインベントリを生成できる azure.azcollection.azure_rm インベントリプラグインでは、従来から include_vm_resource_groups オプションで、どのリソースグループに所属する VM かを絞り込みできま…

[Ansible/Azure] azure.azcollection コレクションの利用時の Python パッケージ不足によるエラー集

はじめに 各種 Azure リソースを操作する azure.azcollection コレクションのモジュールやプラグインを利用する場合は、依存 Python パッケージをインストールする必要があります。 上手くインストールできてなかったり、認識できていなかったりするとエラー…

[Ansible/Azure] azure.azcollection.azure_rm インベントプラグインでプライベートIPアドレスを接続先にする

はじめに Ansible から Azure の VM の情報を取得して動的にインベントリを生成できる azure.azcollection.azure_rm インベントリプラグインという便利なものがあります。 こちらの issue で、プライベートIPアドレスを接続先にするにはどうしたらよいかとい…

[Ansible] Playbook実行ログにモジュールのオプション値を表示させる設定 DISPLAY_ARGS_TO_STDOUT

はじめに たまに、Ansible の設定項目一覧を眺めるのですが、結構前からあるけど知らない設定を見つけることがあります。 今回は、DISPLAY_ARGS_TO_STDOUT という設定項目。Playbook の実行ログに、モジュールに与えたオプション値を表示させるもののようで…

YAML におけるノルウェー問題(The Norway Problem)

いろいろな書き方ができる真偽値 たとえば Ansible の Playbook では、真偽値を指定する時に、true/false 、yes/no などいろいろな書き方ができてしまいます。 去年、Ansible のコミュニティでは、ドキュメント上どう統一するのがいいかの投票がありました。…

[Ansible] インベントリの警告「[WARNING]: No inventory was parsed (略)」の表示有無を切り替える設定 INVENTORY_UNPARSED_WARNING

はじめに ansible-core 2.14.0 の changelog を眺めてて始めて気がついたのですが、INVENTORY_UNPARSED_WARNING という設定項目が追加されていました。 インベントリファイルを読み込めなかったときに表示される警告、[WARNING]: No inventory was parsed, o…

JANOG51 Meeting 参加レポート

はじめに 2023/01/25-27 に山梨県富士吉田市で開催(現地とオンラインのハイブリッド)された JANOG51 Meeting にオンラインで参加しました。 はじめて JANOG Meeting に参加したのが JANOG41 だったので、今回で10回目となりました。 現地は、満席で立ち見…

[Azure] いろんなツールでNSGを作ってみた(Azure CLI / Bicep / ARM テンプレート / Ansible / Terraform / CDKTF)

はじめに Azure の操作を自動化するとき、みなさんどんなツール使うことが多いのかなと思い、先日こんなアンケートをとってみました。 (アンケートです)Azure リソース操作の自動化で主に使ってるもの(選択肢1/2)— よこち (@akira6592) 2023年1月11日 (…

[Azure/Ansible] 関連付けされていない NSG を Ansible で洗い出してまとめ削除する

はじめに 先日、関連付けされていない NSG を Azure CLI で洗い出してまとめ削除するという記事を投稿しました。 tekunabe.hatenablog.jp これを Ansible でもやってみようとおもって、やってみました。 環境 ansible-core 2.12.1 azure.azcollection 1.14.0…

[Azure] 関連付けされていない NSG を Azure CLI で洗い出してまとめ削除する

はじめに セキュリティグループ(NSG)の設定の自動化を試しているうちに、どのサブネット、どのネットワークインターフェースにも関連づいていない不要な NSG がちらほらできてしまいました。これらを洗い出したり、まとめ削除したいなと思うことがありまし…

[Azure] ネットワークセキュリティグループ(NSG)のルールのプロトコルの大文字小文字事情

はじめに 先日、以下の記事を拝見しました。 zenn.dev そこで、ネットワークセキュリティグループのルール内のプロトコル(TCP など)の大文字小文字が、ポータルから設定するときと、Ansible から設定するときとで異なることを知りました。 気になったので…

[Azure] Azure CLI が叩いてる REST API のリクエストやレスポンスを確認する方法(--debug、ログファイル有効化)

はじめに Azure 情報さまざまなリソースをコマンドラインで操作できる Azure CLI というツールがあります。 裏では Azure REST API を叩いていたりするようです。ときどき、Azure CLI による操作がどういう API を叩いてるのか(エンドポイント、ボディ)、…

[Ansible] aws_ec2 インベントプラグインで CloudFormation のスタック名でグループ化やフィルターする

この記事は、Ansible Advent Calendar 2022 (Adventar 版) の 24日目の記事です。 はじめに Ansible には AWS の EC2 インスタンスの情報を取得し、動的なインベントリとして扱える amazon.aws.aws_ec2_inventory というインベントリプラグインがあります。 …

[Ansible] 2022年の Ansible 関連リリースまとめ

この記事は Ansible Advent Calendar 2022 23日目の記事です。 はじめに 2022年もAnsible関連で様々なリリースがありました。ansible-core や AAP も予定通りバージョンアップされてきました。 ansible-rulebook(developer preview)もインパクトがありまし…

[Ansible] ansible-galaxy collection install がオフライン環境で少し便利になった(ansible-core 2.13.5 以上)

この記事は、Ansible Advent Calendar 2022 (Adventar 版) の 23日目の記事です。 はじめに コレクションをインストールするための ansible-galaxy collection install というコマンドがあります。 コレクション名(cisco.ios など)を指定して、オンライン…

[Ansible] community.zabbix 内のモジュールを httpapi で使うとエラー「Invalid JSON response」となる場合の対処

この記事は、Ansible Advent Calendar 2022 (Adventar 版) の 22日目の記事です。 はじめに community.zabbix コレクション内のモジュールは、最近のバージョンでは httpapi コネクションプラグインに対応してきたようです。 これにより、各タスクで server_…

[Ansible] URLの文字列をチェックするテストプラグインをためしてた

この記事は、Ansible Advent Calendar 2022 (Adventar 版) の 21日目の記事です。 はじめに ansible-core 2.14.0 で、URL、URI、URN の文字列をチェックするテストプラグインが追加されました。 url uri urn 使用例は、それぞれのドキュメントページの Examp…

[Ansible] ディクショナリのキーを元に、残す、除外する、置き換えるフィルターをためしてみた

この記事は、Ansible Advent Calendar 2022 (Adventar 版) の 20日目の記事です。 偶然ですが、同日 Qiita 版に同じフィルターを扱った記事がアップされています。こちらも是非ご覧ください。 ansible.utilsコレクションのフィルタ(keep_keys/remove_keys/re…

[Ansible] 公式ドキュメントの更新状況を追う

この記事は、Ansible Advent Calendar 2022 (Adventar 版) の 19日目の記事です。 はじめに Ansible の公式ドキュメントは、GitHub のリポジトリ ansible/ansible 上で追加や修正されています。 devel ブランチのコミットを追っても分かるといえば分かるので…

[Ansible] インベントリ変数、set_fact、include_vars などで定義した変数の評価タイミング

この記事は、Ansible Advent Calendar 2022 (Adventar 版) の 18日目の記事です。 はじめに あらためて考えると「あれ、どうだっけ?」となることの一つに、変数の評価タイミングがあります。 インベントリ変数や、Play変数、vars_files 、set_fact、include…