ansible - Packer Ansible 主机受限变量
问题描述
处理打包程序及其 ansible 配置程序中对主机有界变量的需求的正确方法是什么?
Packer 使用 ansible 供应器,但对于 CentOS8 / RHEL8,它必须ansible_python_interpreter
在 CentOS8 主机上设置为 platform-python。但是,我的剧本有本地和远程步骤,所以我只想为该主机设置该变量。通常,我不会在我的供应商中使用库存。
"extra_arguments":
[
"-v",
"-e", "ansible_python_interpreter=/usr/libexec/platform-python"
]
我认为我的选择是
- 弄清楚如何通过 extra_arguments 传递主机变量
- 通过较早的配置程序设置库存并在其中设置变量,以便我以后可以使用它
请让我知道您发现了什么是一个好的解决方案
解决方案
在这种情况下,packer ansible provisioner inventory_directory将是一个关键助手。
- 为 packer ansible provisioner 设置 inventory_directory 选项,以定义ansible 清单目录的位置,ansible在其中创建一个清单文件,将目标主机定义为
default
default
为包含 Centos8/RHEL8 首选 python 解释器的必要变量的主机填充主机变量文件
打包程序供应商
"provisioners": [
{
"type": "ansible",
"playbook_file": "../../../playbooks/linux-agent-provision.yml",
"inventory_directory": "./inventory",
"extra_arguments":
[
"-v",
...
]
},
...
./库存目录
inventory/host_vars
inventory/host_vars/default.yml
库存/host_vars/default.yml
ansible_python_interpreter: /usr/libexec/platform-python
推荐阅读
- docker - Docker-compose:在 Openzipkin 上公开 Prometheus 指标
- javascript - 如何重新运行 Vuex Getter
- label - 仅保留合并变量的标签 - Stata
- java - 为什么程序运行持续时间超过 3 秒?
- javascript - 未捕获的类型错误:无法在 geoLocationInit 读取未定义的属性“getCurrentPosition”
- elasticsearch - 显示两个不同的研究 kibana
- android - ViewModel 在旋转后重新创建;如果直接用 dagger2 注入
- html - 对齐按钮而不影响其他按钮
- javascript - 保留通过追加添加的选择下拉菜单的顺序
- angular - Angular 6 模板驱动的表单和 libphonenumber