vagrant-terraform 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e305adfd79a1c56e8812dd068a5b2502a34236603ba57e1285597459d3e6387
|
4
|
+
data.tar.gz: db6c7c8e2235700b96fe3b548265b40fcb1624259e22f2efa036aabd293e6208
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa6c9c6524467a8adf146fb8e41110df58d877e9f02de05252cfa776a6d37e0189b32c0ee1c1e342e4841155344791ffe28af32ea45f24625eb9491d663a364a
|
7
|
+
data.tar.gz: 246a8498c3cfa9ff61cf48fe713ccc1f838fe774858021c7194d5699d96dec3890b6aaf727ac8ffe27b361a1efef0b15937fa059ab336d0c4205a34f5016580f
|
@@ -172,6 +172,8 @@ END
|
|
172
172
|
|
173
173
|
File.write(terraform_main_file, main_tf)
|
174
174
|
|
175
|
+
# Avoid downloading the provider every time even when it's in the cache
|
176
|
+
ENV['TF_PLUGIN_CACHE_MAY_BREAK_DEPENDENCY_LOCK_FILE'] = "1"
|
175
177
|
retryable(on: Errors::TerraformError, tries: 100, sleep: 1) do
|
176
178
|
begin
|
177
179
|
terraform_execute(env, 'terraform init')
|
@@ -191,7 +193,33 @@ END
|
|
191
193
|
|
192
194
|
retryable(on: Errors::TerraformError, tries: 10, sleep: 1) do
|
193
195
|
begin
|
194
|
-
|
196
|
+
lockfile = '.vagrant/terraform/lock'
|
197
|
+
max_retries = 300
|
198
|
+
retry_delay = 2
|
199
|
+
|
200
|
+
File.open(lockfile, 'w') do |file|
|
201
|
+
retries = 0
|
202
|
+
|
203
|
+
# VM creation can't be done in parallel because multiple VMs might get the same ID
|
204
|
+
# Get a lock before creating VM with 'terraform apply'
|
205
|
+
until file.flock(File::LOCK_EX | File::LOCK_NB)
|
206
|
+
if retries >= max_retries
|
207
|
+
raise Errors::CreateVMError,
|
208
|
+
:error_message => "Failed to acquire lock after #{max_retries} attempts. Exiting."
|
209
|
+
end
|
210
|
+
|
211
|
+
@logger.debug("Lock is currently held. Retrying in #{retry_delay} seconds...")
|
212
|
+
retries += 1
|
213
|
+
sleep(retry_delay)
|
214
|
+
end
|
215
|
+
|
216
|
+
begin
|
217
|
+
terraform_execute(env, "terraform apply -auto-approve")
|
218
|
+
ensure
|
219
|
+
file.flock(File::LOCK_UN)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
195
223
|
rescue Errors::TerraformError => e
|
196
224
|
# ==> vm_one: terraform stderr: ╷
|
197
225
|
# ==> vm_one: │ Error: can't lock file '/var/lock/qemu-server/lock-100.conf' - got timeout
|
@@ -233,12 +261,18 @@ END
|
|
233
261
|
raise e
|
234
262
|
end
|
235
263
|
|
236
|
-
#
|
237
|
-
if e.message.gsub(ansi_escape_regex, '') =~ /.*unable to create image .* No such file or directory/
|
264
|
+
# Terraform error message was "clone failed: unable to create image: qemu-img: /mnt/pve/qnap-nfs/images/105/vm-105-cloudinit.qcow2: Could not create '/mnt/pve/qnap-nfs/images/105/vm-105-cloudinit.qcow2': No such file or directory"
|
265
|
+
if e.message.gsub(ansi_escape_regex, '') =~ /.*unable to create image: .* No such file or directory/
|
238
266
|
env[:ui].info("Clone failed, retrying. Error was: #{e.message}")
|
239
267
|
raise e
|
240
268
|
end
|
241
269
|
|
270
|
+
# Terraform error message was 'Request cancelled'
|
271
|
+
if e.message.gsub(ansi_escape_regex, '').include?("Request cancelled")
|
272
|
+
env[:ui].info("Proxmox error: Request cancelled")
|
273
|
+
raise e
|
274
|
+
end
|
275
|
+
|
242
276
|
if e.message.gsub(ansi_escape_regex, '') =~ /.*Error: [0-9 ]*unable to create VM [0-9]*: config file already exists/
|
243
277
|
env[:ui].info("Proxmox ID conflict, retrying")
|
244
278
|
raise e
|
@@ -22,6 +22,7 @@ module VagrantPlugins
|
|
22
22
|
# dir_name = env[:root_path].basename.to_s.dup.gsub(/[^-a-z0-9_]/i, "")
|
23
23
|
begin
|
24
24
|
Dir.mkdir(File.dirname(terraform_dir)) unless File.exist?(File.dirname(terraform_dir))
|
25
|
+
FileUtils.touch("#{File.dirname(terraform_dir)}/lock")
|
25
26
|
rescue => e
|
26
27
|
retry if e.message =~ /File exists/
|
27
28
|
env[:ui].error("terraform init failed: #{e.message}")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mika Båtsman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: filesize
|