Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 封隔器可解析主机有限变量_Ansible_Packer_Ansible Inventory - Fatal编程技术网

Ansible 封隔器可解析主机有限变量

Ansible 封隔器可解析主机有限变量,ansible,packer,ansible-inventory,Ansible,Packer,Ansible Inventory,在packer及其ansible provisioner中处理主机有界变量需求的正确方法是什么 Packer使用ansible provisioner,但对于CentOS8/RHEL8,它必须将CentOS8主机上的ansible_python_解释器设置为平台python。但是,我的playbook既有本地步骤也有远程步骤,所以我只想为该主机设置该变量。通常,我不会在我的供应器中使用库存 "extra_arguments": [ "-v", "-e", "ansible

在packer及其ansible provisioner中处理主机有界变量需求的正确方法是什么

Packer使用ansible provisioner,但对于CentOS8/RHEL8,它必须将CentOS8主机上的ansible_python_解释器设置为平台python。但是,我的playbook既有本地步骤也有远程步骤,所以我只想为该主机设置该变量。通常,我不会在我的供应器中使用库存

  "extra_arguments":
  [
    "-v",
    "-e", "ansible_python_interpreter=/usr/libexec/platform-python"
  ]
我认为我的选择是正确的

  • 了解如何通过额外的参数传递主机变量
  • 通过先前的provisioner设置库存,并在其中设置变量,以便以后使用

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

在这种情况下,包装商和供应商将是关键的帮助者

  • 为packer ansible provisioner设置inventory_目录选项,以定义ansible创建目录文件的in的位置,该目录文件将目标主机定义为
    default
  • default
    host填充主机变量文件,该文件包含Centos8/RHEL8首选python解释器所需的变量
  • 包装供应员 /库存目录 库存/主机变量/default.yml
    "provisioners": [
      {
        "type": "ansible",
        "playbook_file": "../../../playbooks/linux-agent-provision.yml",
        "inventory_directory": "./inventory",
        "extra_arguments":
        [
          "-v",
          ...
        ]
      },
      ...
    
    inventory/host_vars
    inventory/host_vars/default.yml
    
    ansible_python_interpreter: /usr/libexec/platform-python