てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] FQCN へのリダイレクト定義とansible とセットの collection の定義

はじめに

Ansible 2.10 で Collection 運用が本格的に始まったことにより、本体側にも新しい仕組みができました。

わりと重要そうだけど埋もれそうな情報として以下の2点のリンクを掲載ます。

  1. Ansible2.9までにあったモジュールを装飾なし表記(FQCNでない)した場合の FQCNへのリダイレクト先の定義
  2. ansibleansible-base とどのcollection をセットにしているかの定義

1. FQCN へのリダイレクト定義

Ansible 2.9 から 2.10 への移行容易性(おそらく)のため、これまであったモジュール名などを、装飾なし(FQDNでない)で指定したときに、リダイレクト先FQCNを定義したデータです。

  • ansible_builtin_runtime.yml

github.com

たとえば、

    ios_config:
      redirect: cisco.ios.ios_config

であれば、ios_config と表記したときに FQCN cisco.ios.ios_config にリダイレクトされることが分かります。リダイレクトの様子は ansible-playbook コマンドで -vvv のように v を3つ以上つけたときに redirecting (type: action) ansible.builtin.ios to cisco.ios.ios のようなログとして確認できます。(対象の collection がインストールされていることが前提です)

なお、このデータは間違いがあるときもあるので、うまく呼び出せないときは疑ったほうがいいです。呼び出せない場合は Playbook 実行時に以下のようなエラーになります。

ERROR! couldn't resolve module/action 'ios_config'. This often indicates a misspelling, missing collection, or incorrect module path.


2. ansible とセットの collection の定義

ansible は ansible-base と collection のセットで構成されます。

どのようなセットかを定義するデータはこちらです。

github.com

たとえば、ansible 2.10.0rc1 であれば、2.10/ansible-2.10.0rc1.deps を参照します。

_ansible_base_version: 2.10.1

とあるのでは、 ansible-base は 2.10.1 を利用することが分かります。

ほか、たとえば、

cisco.ios: 1.0.3

であれば、cisco.ios collection の v1.0.3をセットにすることが分かります。