首页 > 解决方案 > 如何设置一个变量,以便可以在我的 ansible-playbook 中的任何位置访问它

问题描述

这是我的剧本 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'] }}"

标签: ansibledevops

解决方案


我建议在您的库存下启动一个新文件,例如inventory/internal_vars,然后将您的变量放在那里。然后,您可以使用playbook中的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

注意:文件的路径必须是从 playbook 到 inventory/internal_vars 文件的相对路径。上面的代码假设 playbook 和 inventory 文件夹位于基本文件夹中。

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


推荐阅读