🎃

import_role内で実行したタスクの結果をregisterで取得できない

1 min read

背景

import_roleでインポートしたタスクのchangedの情報をもとに処理を分岐させたい

実行環境

  • ansible 2.10.3

import_roleを用いて、特定のロールに含まれるタスクを実行する

まずimport_roleを用いてロールのインポート+タスクの実行を行う

公式docをもとにmyrole以下のタスク(tasks/other.yaml)を呼び出すplaybookを作成する(参考

- name: Run tasks/other.yaml instead of 'main'
  import_role:
    name: myrole
    tasks_from: other

特定のロールに含まれるタスクの差分(changed)を取得したい

task実行時の情報をregisterで取得できないか試してみる

- name: Run tasks/other.yaml instead of 'main'
  import_role:
    name: myrole
    tasks_from: other
  register: foo # fooにtask実行時の情報を格納してほしい

# (こんなイメージで実行したい)
#- name: exec whoami
#  shell: whoami
#  register: foo

- name: debug message
  debug:
    msg: "{{ foo }}"
    #msg: "{{ foo.changed }}" # タイトル的にはこれがほしい

結果

foo is undefinedとなる。import_roleでインポートしたrole内のtaskの情報は取得できない

まとめ

import_roleを用いて間接的にtaskを実行した際にchangedをもとにした処理の分岐ができないことがわかった

Discussion

ログインするとコメントできます