首页 > 解决方案 > Packer Ansible 主机受限变量

问题描述

处理打包程序及其 ansible 配置程序中对主机有界变量的需求的正确方法是什么?

Packer 使用 ansible 供应器,但对于 CentOS8 / RHEL8,它必须ansible_python_interpreter在 CentOS8 主机上设置为 platform-python。但是,我的剧本有本地和远程步骤,所以我只想为该主机设置该变量。通常,我不会在我的供应商中使用库存。

  "extra_arguments":
  [
    "-v",
    "-e", "ansible_python_interpreter=/usr/libexec/platform-python"
  ]

我认为我的选择是

请让我知道您发现了什么是一个好的解决方案

标签: ansiblepackeransible-inventory

解决方案


在这种情况下,packer ansible provisioner inventory_directory将是一个关键助手。

  1. 为 packer ansible provisioner 设置 inventory_directory 选项,以定义ansible 清单目录的位置,ansible在其中创建一个清单文件,将目标主机定义为default
  2. 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

推荐阅读