Ansible 配置程序在 Packer 中的 Shell 配置程序之前运行

问题描述 投票:0回答:0

我有一个 Packer 构建文件,我正在尝试运行一个 Ansible playbook,该剧本从 Packer 机器传输到正在构建的 AWS 机器上,然后使用 Ansible 配置程序执行。

这是我们的来源:

source  "amazon-ebs" "rhel8" {
    source_ami_filter {
        filters = {
            virtualization-type = "hvm"
            name                = "RHEL-8.*_HVM-*-x86_64-56-Hourly2-GP2"
            virtualization-type    = "hvm"
        }
        owners      = ["219670896067"]
        # source: https://access.redhat.com/solutions/15356
        most_recent = true
    }
    region = var.aws_region

    ami_name       = "my-new-ami"
    ami_regions    = [var.aws_region]
    ami_org_arns   = [var.org_id]
    instance_type  = "t3.small"
    subnet_id      = var.my_subnet
    vpc_id         = var.my_vpc


     communicator   = "ssh"
     ssh_username   = "ec2-user"

    tags = {
        "OS_Version": "Red Hat",
    }
}

build {
  sources = [
    "source.amazon-ebs.rhel8",
    ]

    provisioner "file" {
    destination = "/tmp/ansible-script.yml"
    source      = "ansible-script.yml"
    }

    provisioner "shell" {
      inline = [
        "cat /tmp/ansible-script.yml",
      ]
    }

    provisioner "ansible" {
    playbook_file  = "/tmp/ansible-script.yml"
    }
}

运行此命令后,我几乎立即收到以下错误 -

Error: Failed preparing provisioner-block "ansible" ""
  on build.pkr.hcl line 178:
  (source code not available)
1 error(s) occurred:
* playbook_file: /tmp/ansible-script.yml is invalid: stat /tmp/ansible-script.yml: no
such file or directory

为什么

Ansible
配置程序在
shell
/
file
配置程序之前运行? Hashi 的文档说它按顺序运行它们。

在新机器构建完成后,是否无法使用 Ansible 配置程序在新机器上运行 playbook?这些新机器上没有

ansible-script.yml
剧本,这就是为什么我们首先使用
file
配置程序将它们转移。

谢谢

ansible packer
© www.soinside.com 2019 - 2024. All rights reserved.