LoginSignup
4

More than 3 years have passed since last update.

tips: ansible block内でのset_factの影響範囲は?

Last updated at Posted at 2020-02-09

ansible block内でのset_factはblock外にも影響するか

検証用playbook

site.yml
---
- hosts: all
  gather_facts: false
  tasks:
  - set_fact:
      foo: 外側
  - block:
    - set_fact:
        foo: 内側
    - debug:
        var: foo
  - debug:
      var: foo

実行結果

$ ansible-playbook -i localhost, -c local site.yml 

PLAY [all] *********************************************************************

TASK [set_fact] ****************************************************************
ok: [localhost]

TASK [set_fact] ****************************************************************
ok: [localhost]

TASK [debug] *******************************************************************
ok: [localhost] => {
    "foo": "内側"
}

TASK [debug] *******************************************************************
ok: [localhost] => {
    "foo": "内側"
}

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

結論: blockは(予想通り)set_factによる変数設定を隠蔽しない

set_factによる設定はグローバル相当

そもそも全てのplayで参照可能!!

インベントリ、varsプラグイン、またはset_factやinclude_varsなどのモジュールを使用して定義された変数は、「ホストスコープ」変数と呼ばれ、すべてのプレイで使用できる。

公式: Variable scope: how long is a value available?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4