Packer Ansible 主机限制变量
Packer Ansible host limited variables
在 packer 及其 ansible provisioner 中处理主机边界变量需求的正确方法是什么?
Packer 使用 ansible provisioner 但对于 CentOS8 / RHEL8,它必须在 CentOS8 主机上将 ansible_python_interpreter
设置为平台-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 inventory directory 的位置,ansible 在其中创建一个清单文件,将目标主机定义为
default
- 为
default
主机填充主机变量文件,其中包含 Centos8/RHEL8 的首选 python 解释器 所需的变量
Packer Provisioner
"provisioners": [
{
"type": "ansible",
"playbook_file": "../../../playbooks/linux-agent-provision.yml",
"inventory_directory": "./inventory",
"extra_arguments":
[
"-v",
...
]
},
...
./库存目录
inventory/host_vars
inventory/host_vars/default.yml
inventory/host_vars/default.yml
ansible_python_interpreter: /usr/libexec/platform-python
在 packer 及其 ansible provisioner 中处理主机边界变量需求的正确方法是什么?
Packer 使用 ansible provisioner 但对于 CentOS8 / RHEL8,它必须在 CentOS8 主机上将 ansible_python_interpreter
设置为平台-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 inventory directory 的位置,ansible 在其中创建一个清单文件,将目标主机定义为
default
- 为
default
主机填充主机变量文件,其中包含 Centos8/RHEL8 的首选 python 解释器 所需的变量
Packer Provisioner
"provisioners": [
{
"type": "ansible",
"playbook_file": "../../../playbooks/linux-agent-provision.yml",
"inventory_directory": "./inventory",
"extra_arguments":
[
"-v",
...
]
},
...
./库存目录
inventory/host_vars
inventory/host_vars/default.yml
inventory/host_vars/default.yml
ansible_python_interpreter: /usr/libexec/platform-python