Ansible - 更新 vars_file 中的变量并在剧本中再次调用它不起作用

问题描述 投票:0回答:1

请看下面我的剧本。我在 1 个剧本中调用了不同主机上的 2 次执行。

第一次执行更改了 vars 文件中的一些变量,这些变量将在下次执行时使用(创建新的备份文件夹并将其名称更新为另一个 vars 文件)

第二次执行尝试使用2个vars文件做备份任务(使用角色)。我在这里遇到的问题是 vars 文件值加载的是旧值而不是更新后的值。似乎所有定义的 vars 文件都是在所有主机上执行任务之前加载的,并且在运行任务期间更新不起作用。

我可以将这个剧本分成 2 个剧本,并且都按预期运行良好,但我正在尝试合并 1 个剧本。谁能告诉我如何在正确执行任务/角色时重新加载 vars 文件?我确实希望第二次执行在运行角色之前加载更新的 vars 文件。

## backup playbook
---
- hosts: ftpserver01
  gather_facts: no
  ignore_errors: yes
  vars_files:
    - ./vars_files/lab1.yml
    - ./vars_files/global_vars.yml
  roles:
    - create_define_backup_folder  
# this role will create new backup folder and update its name in ./vars_files/global_vars.yml
- hosts: terminal02
  become: yes
  become_method: su
  gather_facts: no
  ignore_errors: yes
  vars_files:
    - ./vars_files/lab1.yml
    - ./vars_files/global_vars.yml
  roles:
    - backup_feature01
    - backup_feature02

预期:在主机 terminal02 上运行任务时使用更新的 global_vars.yml

实际结果:terminal02 上的所有任务都使用旧值而不是 global_vars.yml vars_files 的更新值

variables ansible
1个回答
2
投票

在第二局使用include_varsinclude_role

- hosts: terminal02

  become: yes
  become_method: su
  gather_facts: no
  ignore_errors: yes

  tasks:

    - include_vars: vars_files/lab1.yml
    - include_vars: vars_files/global_vars.yml
    - include_role:
        name: backup_feature01
    - include_role:
        name: backup_feature02
© www.soinside.com 2019 - 2024. All rights reserved.