Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

block 內的特定 task 不明原因被跳過,為什麼? #52

Open
brlin-tw opened this issue Aug 12, 2020 · 4 comments
Open

block 內的特定 task 不明原因被跳過,為什麼? #52

brlin-tw opened this issue Aug 12, 2020 · 4 comments

Comments

@brlin-tw
Copy link

brlin-tw commented Aug 12, 2020

問題重現 playbook

- name: repro
  hosts: all
  tasks:
    - name: 查詢 IPwatchD 當前最新釋出版本
      when: >
        ipwatchd_version is not defined
        or ipwatchd_version is none
        or ipwatchd_version == 'auto-detected'
      rescue:
        - name: 如果區塊內任一工作失敗視為區塊失敗
          fail:
            msg: 錯誤:查詢 IPwatchD 當前最新釋出版本期間發生錯誤
      block:
        - name: 查詢 IPwatchD 當前最新釋出版本:自 GitHub Releases API 查詢 IPwatchD 最新釋出資訊
          register: ipwatchd_version_latest_raw
          uri:
            url: https://api.github.com/repos/jariq/IPwatchD/releases/latest

        - name: 查詢 IPwatchD 當前最新釋出版本:自釋出資訊解析出當前 IPwatchD 最新版本
          set_fact:
            ipwatchd_version: '{{ ipwatchd_version_latest_raw.json.tag_name | replace("v", "") }}'

        - name: 查詢 IPwatchD 當前最新釋出版本:顯示查詢結果
          debug:
            msg: '當前最新釋出版本:{{ ipwatchd_version }}'

測試方式

ansible-playbook --connection=local -i localhost, playbook.yml 

預期結果

「查詢 IPwatchD 當前最新釋出版本:顯示查詢結果」task 有被執行

目前結果

「查詢 IPwatchD 當前最新釋出版本:顯示查詢結果」顯示為 skipped

環境

  • Ansible 2.9.9
  • Ubuntu 20.04
  • Python 3.8.2
@tsengeagle
Copy link

tsengeagle commented Aug 12, 2020

或許是變數名稱重複

        - name: 查詢 IPwatchD 當前最新釋出版本:自釋出資訊解析出當前 IPwatchD 最新版本
          set_fact:
            version: "{{ ipwatchd_version_latest_raw.json.tag_name | replace('v','') }}"

        - name: 查詢 IPwatchD 當前最新釋出版本:顯示查詢結果
          debug:
            msg: '當前最新釋出版本:{{ version }}'

結果:

TASK [查詢 IPwatchD 當前最新釋出版本:自釋出資訊解析出當前 IPwatchD 最新版本] ***********************************************************************************************************************************************************
ok: [localhost]

TASK [查詢 IPwatchD 當前最新釋出版本:顯示查詢結果] *****************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "當前最新釋出版本:1.3.0"
}

@linzeyan
Copy link

linzeyan commented Aug 13, 2020

when 的關係。
set_fact 之後,就不在 when 的條件之下了。

@brlin-tw
Copy link
Author

brlin-tw commented Oct 19, 2020

when 的關係。
set_fact 之後,就不在 when 的條件之下了。

抱歉未能即時回應
所以 block 下的每個步驟都會檢查 when 的條件嗎?有官方文件的相關描述嗎?

@brlin-tw brlin-tw changed the title task 不明原因被跳過,為什麼? block 內的特定 task 不明原因被跳過,為什麼? Oct 19, 2020
@elleryq
Copy link

elleryq commented Jul 22, 2021

只要有 set_fact 或者是重新指定變數都會導致後面的 task 不執行
如果直接引用,就可以

        - name: 查詢 IPwatchD 當前最新釋出版本:顯示查詢結果
          debug:
            msg: '當前最新釋出版本:{{ ipwatchd_version_latest_raw.json.tag_name | replace("v", "") }}'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants