path - Ansible - 将环境路径设置为库存变量
问题描述
Osmc 媒体播放器需要一个特定的 playbook 路径 https://github.com/osmc/osmc/issues/319
environment:
PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin"
我想知道是否可以将其设置为这些机器的库存中的环境变量,而不是在每个剧本中都有它或创建单独的剧本。
通常使用 - 如果在非 osmc 安装上实现,该路径是否可能会导致一般 *nix 机器出现问题?
如果您不能将其设置为库存变量:这仅仅是因为它没有实现/对大多数人有用吗?或者因为库存与路径无关 - 例如,它当时没有被调用?
或者将所有这些作为角色中特定于机器的变量/任务的更好方法?请问那看起来怎么样?
ansible 新手,但仍在尝试理解一些概念。
解决方案
如前所述,environment
关键字只能在任务或剧本级别使用。
您将能够使用标准剧本,只需添加以下内容:
---
- name: Environment
hosts: localhost
connection: local
gather_facts: False
tasks:
- name: Setup
setup:
gather_subset:
- "!all"
或者
---
- name: Environment
hosts: localhost
connection: local
gather_facts: True
gather_subset:
- "!all"
如果调试变量:
---
- name: Environment
hosts: localhost
connection: local
gather_facts: False
tasks:
- name: Setup
setup:
gather_subset:
- "!all"
- name: Debug
debug:
var: ansible_env.PATH
你会得到类似的东西:
TASK [Setup] *******************************************************************************************************************************************************
ok: [localhost]
TASK [Debug] *******************************************************************************************************************************************************
ok: [localhost] => {
"ansible_env.PATH": "/Users/imjoseangel/source/venv/ansible/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
}
如果您想将该变量传递给另一个具有不同库存的游戏怎么办?
做就是了hostvars.localhost.ansible_env.PATH
- name: Environment2
hosts: windows
connection: local
gather_facts: False
tasks:
- name: Debug
debug:
var: hostvars.localhost.ansible_env.PATH
所以
environment:
PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin"
仅对已定义清单下的 gather_facts 或 setup 模块有效,但您不需要拆分剧本。
推荐阅读
- c++ - 这两个声明之间最好的操作符 == 函数是哪个?
- python - 显然,我的 if 语句中的“:”是无效语法
- keyboard - 有没有办法在处理过程中一次检测多个键输入?
- java - 使用 Chudnovsky 算法计算 pi 的错误结果
- angular - 将 Angular 应用程序和 ASPNET Core 发布到 IIS 后出现 CORS 策略错误
- sql - STUFF 只有唯一值以及对另一列进行排序
- javascript - 如何淡出导航栏的最右侧并向其添加新按钮
- reactjs - React JS DateTimePicker 问题 - 更改时间 12:01 pm 和 1:59 pm - 更新到下一个日期
- swift - SwiftUI NavigationView NavigationLink 完成回调
- oracle - 如何从 Spotfire 库数据库中获取信息链接查询