我有一个 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
配置程序将它们转移。
谢谢