ansible - 如何设置一个变量,以便可以在我的 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'] }}"
解决方案
我建议在您的库存下启动一个新文件,例如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 文件夹位于基本文件夹中。
推荐阅读
- flutter - Flutter + Firebase:“QuerySnapshot”类没有实例获取器“文档”
- regex - 正则表达式禁止字符串中任何具有捕获组的字符
- selenium - 无法从“TO”下拉列表中选择值
- android - 关于通过 FCM 向其他应用发送通知
- dataweave - Mulesoft dataweave 外连接
- node.js - 前端和后端在不同端口上运行时,Socket.io 客户端请求失败
- swift - 在 SwiftUI 的 NavigationBar 中仍然没有简单的方法来自定义 Back-button 吗?
- c# - 将 IConfiguration 绑定到 C# 记录类型
- firebase - Nuxt 中间件:如何访问 vuex 商店?
- phpstorm - PHP 语言级别缺少最新(版本 7.3 是最高的)