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"
  ]

我认为我的选择是

请告诉我您找到了什么好的解决方案

在这种情况下,packer ansible provisioner inventory_directory 将成为关键帮手。

  1. 为 packer ansible provisioner 设置 inventory_directory 选项来定义 ansible inventory directory 的位置,ansible 在其中创建一个清单文件,将目标主机定义为 default
  2. default 主机填充主机变量文件,其中包含 Centos8/RHEL8 的首选 python 解释器
  3. 所需的变量

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