以下の内容はhttps://tekunabe.hatenablog.jp/entry/2026/03/02/ansible_reserbed_tagより取得しました。


[Ansible] tagged, untagged, all タグを Playbook 内で適用すると警告が表示されようになった(ansible-core 2.20.0 から)

はじめに

Ansible には、Playbook 内の実行するタスクを細かく制御するためのタグという機能があります。例えば、ansible-playbook コマンドのオプションで --tags sakana を指定したら、sakana というタグが適用されているタスクのみが実行される、というものです。(厳密にはタスク以外に Play などの単位でもタグを適用できる)

タグは基本的に任意の文字列を使えますが、いくつか特殊な用途として予約されたタグがあります。たとえば、ansible-playbook コマンドのオプションで指定するタとしては、taggeduntaggedall という予約されたタグがあります。

  • tagged: 何かしらのタグが適用されているタスクを実行
  • untagged: タグが適用されていないタスクを実行
  • all: すべてのタスク(ただし never 以外)を実行

これら 3つの予約されたタグは、ansible-playbook コマンドのオプションで指定する特殊なタグなので、Playbook 内には適用できません。正確には「適用(tags ディレクティブに指定)すること自体はできるけど、適用した人の意図通りの挙動にはならない」という状態でした。つまり、うっかり taggeduntaggedall というタグを Playbook 内で適用できてしまう状態でした。

2025年11月にリリースされた ansible-core 2.20.0 では、こんなうっかりを発見できるように、警告が表示されるようになりました。親切設計ですね。

  • ansible-core 2.20.0 CHANGELOGより引用
    • tags now warn when using reserved keywords.

    • ansible now warns if you use reserved tags that were only meant for selection and not for use in play.

どういう警告が表示されるのか、簡単に試してみたのでその結果をまとめます。

  • 検証環境
    • ansible-core 2.20.0

検証 Playbook

以下のように、taggeduntaggedall をそれぞれ適用した3つのタスクを準備しました。

---
- name: Tag Test Play
  hosts: localhost
  gather_facts: false

  tasks:
    - name: Tag test tagged
      ansible.builtin.debug:
        msg: "This task is tagged with 'tagged'"
      tags:
        - tagged

    - name: Tag test untagged
      ansible.builtin.debug:
        msg: "This task is tagged with 'untagged'"
      tags:
        - untagged

    - name: Tag test all
      ansible.builtin.debug:
        msg: "This task is tagged with 'all'"
      tags:
        - all

実行結果

Playbook を実行したところ、意図しない結果を生むのでおすすめしませんという警告(WARNING)が冒頭に表示されました。

$ ansible-playbook -i localhost, tag_test.yml
[WARNING]: Found reserved tagnames in tags: ['tagged'], we do not recommend doing this as it might give unexpected results
Origin: /home/sakana/ansible/ac220/tag_test.yml:11:9

 9         msg: "This task is tagged with 'tagged'"
10       tags:
11         - tagged
           ^ column 9

[WARNING]: Found reserved tagnames in tags: ['untagged'], we do not recommend doing this as it might give unexpected results
Origin: /home/sakana/ansible/ac220/tag_test.yml:17:9

15         msg: "This task is tagged with 'untagged'"
16       tags:
17         - untagged
           ^ column 9

[WARNING]: Found reserved tagnames in tags: ['all'], we do not recommend doing this as it might give unexpected results
Origin: /home/sakana/ansible/ac220/tag_test.yml:23:9

21         msg: "This task is tagged with 'all'"
22       tags:
23         - all
           ^ column 9


PLAY [Tag Test Play] *******************************************************************************

TASK [Tag test tagged] *****************************************************************************
ok: [localhost] => {
    "msg": "This task is tagged with 'tagged'"
}

TASK [Tag test untagged] ***************************************************************************
ok: [localhost] => {
    "msg": "This task is tagged with 'untagged'"
}

TASK [Tag test all] *********************************************************************************
ok: [localhost] => {
    "msg": "This task is tagged with 'all'"
}

PLAY RECAP *****************************************************************************************
localhost   : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

比較のため、ansible-core 2.18.11 で実行したらエラーにはなりませんでした。

おわりに

taggeduntagged は、ネットワークの VLAN の文脈で使ってしまうことはあり得るかもしれません。all もまぁまぁ使ってしまうかもしれません。

意図しない挙動を誘発させてしまう状況では、警告やエラーでお知らせしてくれたほうがいいので、ありがたい変更でした。




以上の内容はhttps://tekunabe.hatenablog.jp/entry/2026/03/02/ansible_reserbed_tagより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14