てくなべ (tekunabe)

ansible / network automation / 学習メモ

ansible

[ansible] AAP (Ansible Automation Platform) が指すもの

私や私の周辺では、Ansible Automation Platformのことを、よく略して AAP と呼んでいます。 しかし、人によって AAP が指す範囲が微妙に違うように感じることがあります。 特に AAP 2 のリリース以降です。AAP は AAP 1 時代から AAP ですが(変な言い方で…

[Ansible] pip install ansible で一緒にインストールされるコレクション群はどこで議論されて決まるのか

議論される場所 Ansible community package (pip install ansible でインストールされる方)は、ansible-core に加えて、さまざまなコレクションがインストールされます。 インストールされるコレクションは、公式ドキュメントの Collection Indexや、リポジ…

[Ansible] ansible 2.9 でコレクションの一覧とバージョンを grep で表示する

ansible 2.9 では、コレクション一覧を表示する ansible-galaxy collection list コマンドが利用できません(ansible-base 2.10から)。 そのため、コレクションの一覧やバージョンを確認するには、別の方法が必要です。 デフォルトのコレクションインストー…

[Ansible] ansible 2.9 を取り巻く現状(2022年7月現在)

コミュニティとしてはすでに EOL Ansible 2.10 で大きくパッケージング、配布の方式が変わったからなのか、前のバージョン Ansible 2.9 の開発がしばらく続いていました。ですが、2021年10月の 2.9.27を最後にリリースが止まっています。 コミュニティとして…

[Ansible] cisco.ios.ios_config モジュールの冪等性に関する警告 "To ensure idempotency and correct diff the input configuration lines should be similar to how they appear if present in the running configuration on device" について

はじめに Cisco IOS のネットワーク機器に任意のコンフィグを投入する、cisco.ios.ios_config というモジュールがあります。 本モジュールを使ったPlaybookを実行して changed になると、以下のような冪等性に関する警告が表示されます。 % ansible-playbook…

[Ansible] ansible 6.0.0 で ansible-community コマンドが追加された

少しややこしい ansible まわりのバージョン表記 ansible 2.10 から、ansible-base(2.10)や、ansible-core(2.11から)というコア部分のパッケージと、各種コレクションも含むパッケージ(Ansible community packageと呼ばれたりします)が登場しました。 pip …

[ansible] copy や template モジュールで相対パスが指定されたらどこを探すか

Ansibleもくもく会 2022.6に参加しました。 そこで、copy モジュールの src オプションで相対パスで指定されたファイルはどこから探してくるか、という話題がありました。 files ディレクトリを先に探しに行くことは知っていたのですが、細かく公式ドキュメ…

[Ansible] aws_ec2 インベントリープラグインのinclude_filtersのand/or条件の指定方法

はじめに AWS上のEC2インスタンスの情報を動的にインベントリとして利用できる、amazon.aws.aws_ec2というインベントリープラグインがあります。 その中に、include_filtersというオプションがあり、Nameタグの情報などで抽出条件を指定できます。 include_f…

[Ansible] 変数を利用する際にクォーテーションで囲う必要がある理由

はじめに Ansibleもくもく会 2022.5にて、質疑応答を担当するメンターにて参加させていただきました。 "" で書こう意味について質問いただいたので、分かる範囲でお答えしました。その内容についてまとめます。 ディクショナリと区別するために "" で囲う Pl…

[ansible] あのモジュール、どのコレクションにいった?を探す

はじめに Ansible(-base) 2.10 から、多くのモジュールはコレクションという管理、配布方式に移行しました。 その関係で「前あったあのモジュール、プラグインはどのコレクションにいったんだ?」と気になることがあるかもしれません。 正確には、しれません…

[Ansible] azure.azcollection.azure_rm インベントリプラグインで停止中のVMも対象にする

はじめに Ansible から Azure の VM の情報を取得して動的にインベントリを生成できる azure.azcollection.azure_rm インベントリプラグインという便利なものがあります。 こちらの issueを見てなるほどと思ったのですが、デフォルトだと実行中(running)で…

[Ansible] Ansible から HashiCorp Vault のシークレットを取得する

はじめに 前回の記事で、HashiCorp Vault の kv シークレットエンジンを使ってシークレットの登録をしました。 今回は、そのシークレットを Ansible から取得して表示したり、機器への接続パスワードに利用することを試します。 Ansible の community.hashi_…

[Ansible] Ansible 3 以降のモジュール一覧のページ

はじめに Ansible のモジュールの一覧を確認したいときは、よく公式ドキュメントを参照します。Ansible 2.9 までは、Module Indexというページがあり、さらにカテゴリごとのページに飛べます。また、All modules というページでは全モジュールの一覧が表示さ…

[Ansible] スキップされたタスクの結果は is skipped でもあり is succeeded でもある

はじめに Ansible では、タスクの実行結果を変数に保存し、その結果を後続のタスクで確認する機能があります。 docs.ansible.com そういえばどうなんだろうシリーズといいますか、「スキップされたタスクって succeeded 扱いだっけ?」と思ったことがありま…

[Ansible] もくもく会コンテンツのリポジトリにある資料「Ansible Best Practices」

Ansible ユーザー会では定期的にもくもく会というハンズオンイベントを開催しています。 次回は 2022/04/21 です。 コンテンツは以下のリポジトリにあります。 github.com 先日見つけたのですが、Ansible Best Practicesという資料がありました。 こうかいて…

[Ansible] Automation Controller 上で実行環境コンテナ内のコレクション一覧を確認する(やや力技)

はじめに AAP 2.x になってから、Ansible の実行環境が Python の venv から、コンテナに変わりました。 コンテナの中に、利用するコレクションを仕込んでおくわけですが、Automation Controller を触ってるときに、コンテナ内のコレクション一覧を確認した…

[Ansible/AAP] Automation mesh でコントロールノードと実行ノードの分離を試してみた

はじめに ■ 1. Automation mesh におけるノードの種類 ■ 2. 今回の環境 (コントロールノードと実行ノードの分類) ■ 3. 下準備 3.1. subscription-manage による作業 3.2. SSHキーの接続 ■ 4. インストール 4.1. インストーラーの準備 4.2. inventory の修…

[Ansible] ansible-lint 6.0.0 のインストールで ansible-core 2.12.3 も一緒にインストールされる

はじめに 先日 ansible-lint 6.0.0 がリリースされました。 github.com .config/ansible-lint.yml を読み込むようになったり、ansible 2.9 や Python3.6、3.7 がサポートされなくなったり、フォーマット機能がつくなど変更がありました。 また、インストール…

[Ansible] よく見る公式ドキュメントのページ5選

はじめに チーム内で、Ansible の公式ドキュメントの見方についての話になったときに、よく参照するドキュメントはどこかという話に発展しました。 5つ紹介します。対象プラットフォームに限定しないものを取り上げています。 1. 各モジュールの説明ページ …

[Ansible] 「つまずき Ansible 【Part35】ロールの実行に必要な変数をチェック」ふりかえり

はじめに 動画 ロールと変数とチェック Role argument validation 必須チェック エラーになるケース 正常なケース チェックの無効化 型チェック 選択肢チェック validate_argument_spec モジュール チェックモードでもvalidateされる ansible-docによるargum…

[Ansible] 安全側に倒す ansible.cfg の設定

はじめに 意図しないまま実行を進めないようにするため、ちょっとしたことでもエラーに倒して早めに処理を止める設定の紹介です。インベントリ周りが中心です。 ansible.cfg [defaults] duplicate_dict_key=error [inventory] host_pattern_mismatch=error a…

[Ansible] --vault-password-file で指定するファイルはスクリプトでも可なので環境変数も参照できる

--vault-password-file オプションとは Ansible にはパスワードなどの機密情報を暗号化する ansible-vault という機能があります。 Playbook 実行時には何かしらの方法で復号パスワードを指定する必要があります。ansible-playbook コマンドにも関連オプショ…

[ansible] ansible-navigator で --step や vars_prompt によるインタラクティブな操作をする

はじめに ansible-navigator は、Playbookの実行、ドキュメントなどの情報が表示できる TUI ツールです。 Playbook の実行に関しては、ansible-playbook コマンドでできることはだいたいできると思ってよさそうです。 ansible-playbook コマンドの各オプショ…

Azure の公式ドキュメントを修正してみた

はじめに Azure の公式ドキュメントには、Ansible から操作するための情報が多く載っていてありがたいです。 docs.microsoft.com 眺めていたら、Get Started: Configure Ansible on an Azure VMというページで、インデントがおかしいところがありました。 イ…

[Ansible/Azure] azure_rm インベントリプラグインでインベントリ名を仮想マシン名に合わせる

はじめに azure.azcollection.azure_rm というインベントリプラグインは、AzureのVMの情報を動的に取得できます。 対象のリソースグループ名やグループ化の仕方、変数の持ち方などをYAMLで定義します。 このインベントリプラグイン利用時に、インベントリ名…

[Ansible] 2021年のAnsibleリリースまとめ

はじめに 2020年は、ansible-base (現 ansible-core) と collection に分かれての配布が始まったことが大きな出来事でした。 2021年も、ansible-core も、コミュニティが選別したcollectionをセットにしたパッケージもそれぞれアップデートされていきました…

[Ansible] ansible-plyabook コマンドでインベントリを複数指定する

はじめに ansible-playbook コマンドの -i オプションは複数のインベントリを指定できます。 例 ansible-playbook -i inventory01.ini -i inventory02.ini playbook.yml この記事ではかんたんなサンプルと実行例を紹介します。 動作確認環境 ansible 5.1.0 (…

[Ansible/Azure] 含まれるリソースまるごとリソースグループを削除する

はじめに azure.azcollection.azure_rm_resourcegroupモジュールは、Azureのリソースグループを作成したり削除したりできます。 削除したいときは、state: absent を指定しればよいですが、リソースグループ内にリソースが含まれていると削除できません。 ど…

[Ansible] Azure Virtual Machines を generalize(一般化)する

はじめに azure.azcollection.azure_rm_virtualmachineモジュールの generalized オプションを利用すると、VMを generalize できます。 Azure CLI でいう az vm generalize 、PowerShell でいうSet-AzVm -Generalizedです。(後述しますが、VMの状態遷移の挙…

[Ansible] FQCN で省略系のモジュール名を指定できる仕組み(cisco.ios.ios_config を cisco.ios.config で)

この記事は、Ansible Advent Calendar 2021 (Adventar版) 20日目の記事です。 はじめに 先日 Ansible もくもく会に参加させていただきました。(参加レポート) ネットワーク編のコンテンツでは、たびたび cisco.ios.config のような、少しモジュール名を省…