如何设置一个变量,以便可以在我的 ansible-playbook 中的任何位置访问它

时间:2021-03-17 12:01:15

标签: ansible devops

这是我的剧本 main.yml。我想在 import_playbook 模块中使用 playbook_name 变量。但我无法访问它。有什么办法可以访问这个变量吗?

---

- hosts: localhost
  connection: local
  tasks:
  - name: Get playbook_name 
    shell: <command>
    register: playbook_name
    ignore_errors: yes
    become: yes

  - debug: var=hostvars['localhost']['playbook_name']
    ignore_errors: True
    
- name: Include playbook based on playbook_name
  import_playbook: "{{ hostvars['localhost']['playbook_name']['response'] }}"

1 个答案:

答案 0 :(得分:0)

我建议在您的清单下创建一个新文件,例如 inventory/internal_vars,然后将您的变量放入其中。然后,您可以使用 vars_files 手册中的 main.yml 模块将该文件作为变量导入,如下所示:

- hosts: localhost
  connection: local
  vars_files:
    - inventory/internal_vars
  tasks:
  - name: Get playbook_name 
    shell: <command>
    register: playbook_name
    ignore_errors: yes
    become: yes

注意:文件的路径必须是从您的剧本到库存/internal_vars 文件的相对路径。上面的代码假设剧本和清单文件夹位于基本级别文件夹中。

参考:https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#defining-variables-in-included-files-and-roles