【发布时间】:2022-01-15 14:40:12
【问题描述】:
在使用 local-exec 配置器运行 Ansible 剧本时,我在 Terraform 上遇到了竞争条件问题。在某一时刻,该剧本必须安装 APT 包。
但首先,我正在运行在 user_data 参数中指定的云配置文件 init.yml,它也安装了一个包。
因此,我收到以下错误:
Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
如何防止这种情况发生?
# init.yml
runcmd:
- sudo apt-get update
- sudo apt-get -y install python python3
# main.tf
resource "digitalocean_droplet" "hotdog" {
image = "ubuntu-18-04-x64"
name = "my_droplet"
region = "FRA1"
size = "s-1vcpu-1gb"
user_data = file("init.yml")
provisioner "local-exec" {
command = "ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i '${self.ipv4_address},' ./playbook.yml"
}
}
【问题讨论】: