@fredlackey/devutils 0.0.14 → 0.0.16
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.
- package/README.md +28 -1
- package/package.json +1 -1
- package/src/installs/cloudflare-warp.js +900 -0
- package/src/installs/cloudflare-warp.md +1047 -0
- package/src/installs/comet-browser.js +588 -0
- package/src/installs/comet-browser.md +731 -0
- package/src/installs/dbeaver.js +924 -0
- package/src/installs/dbeaver.md +939 -0
- package/src/installs/dependencies.md +11 -3
- package/src/installs/google-antigravity.js +913 -0
- package/src/installs/google-antigravity.md +1075 -0
- package/src/installs/installers.json +481 -5
- package/src/installs/installers.json.tmp +3953 -0
- package/src/installs/kiro.js +864 -0
- package/src/installs/kiro.md +1015 -0
- package/src/installs/moom.js +326 -0
- package/src/installs/moom.md +570 -0
- package/src/installs/nordvpn.js +892 -0
- package/src/installs/nordvpn.md +1052 -0
- package/src/installs/parallels-desktop.js +431 -0
- package/src/installs/parallels-desktop.md +446 -0
- package/src/installs/tfenv.js +778 -0
- package/src/installs/tfenv.md +1091 -0
|
@@ -0,0 +1,1091 @@
|
|
|
1
|
+
# Installing tfenv (Terraform Version Manager)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
tfenv is a version manager for Terraform, inspired by rbenv. It allows you to install, switch between, and manage multiple versions of Terraform on the same machine. This is essential for developers and DevOps engineers who work on projects requiring different Terraform versions, ensuring compatibility and reducing the risk of applying infrastructure changes with an incorrect Terraform binary.
|
|
6
|
+
|
|
7
|
+
Key capabilities include:
|
|
8
|
+
|
|
9
|
+
- **Version switching**: Easily install and switch between multiple Terraform versions
|
|
10
|
+
- **Automatic version selection**: Use `.terraform-version` files to auto-select the correct version per project
|
|
11
|
+
- **Hash verification**: Automatically validates downloads against HashiCorp's published SHA256 hashes
|
|
12
|
+
- **Signature verification**: Optionally verify PGP signatures using Keybase or GnuPG
|
|
13
|
+
|
|
14
|
+
**Important Platform Note**: tfenv is designed for POSIX-compliant systems (macOS, Linux, WSL). Native Windows support is experimental and limited to Git Bash with known symlink issues. For native Windows environments (PowerShell, Command Prompt), consider using Chocolatey to install specific Terraform versions directly (`choco install terraform --version=X.Y.Z -y`), or use WSL.
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
|
|
18
|
+
### macOS (Homebrew)
|
|
19
|
+
- **Required:**
|
|
20
|
+
- Homebrew package manager - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
|
|
21
|
+
- **Optional:** None
|
|
22
|
+
- **Auto-installed:**
|
|
23
|
+
- `grep` (GNU grep) - Installed automatically as a dependency of the tfenv formula
|
|
24
|
+
|
|
25
|
+
### Ubuntu (APT/Snap)
|
|
26
|
+
- **Required:**
|
|
27
|
+
- `git` - Install via `sudo apt-get install -y git`
|
|
28
|
+
- `curl` - Install via `sudo apt-get install -y curl`
|
|
29
|
+
- `unzip` - Install via `sudo apt-get install -y unzip`
|
|
30
|
+
- **Optional:**
|
|
31
|
+
- `keybase` - For PGP signature verification of Terraform downloads
|
|
32
|
+
- `gnupg` - Alternative for PGP signature verification
|
|
33
|
+
- **Auto-installed:** None (manual git clone installation)
|
|
34
|
+
|
|
35
|
+
### Raspberry Pi OS (APT/Snap)
|
|
36
|
+
- **Required:**
|
|
37
|
+
- `git` - Install via `sudo apt-get install -y git`
|
|
38
|
+
- `curl` - Install via `sudo apt-get install -y curl`
|
|
39
|
+
- `unzip` - Install via `sudo apt-get install -y unzip`
|
|
40
|
+
- **Optional:**
|
|
41
|
+
- `keybase` - For PGP signature verification of Terraform downloads
|
|
42
|
+
- **Auto-installed:** None (manual git clone installation)
|
|
43
|
+
|
|
44
|
+
### Amazon Linux (DNF/YUM)
|
|
45
|
+
- **Required:**
|
|
46
|
+
- `git` - Install via `sudo dnf install -y git` (AL2023) or `sudo yum install -y git` (AL2)
|
|
47
|
+
- `curl` - Install via `sudo dnf install -y curl` or `sudo yum install -y curl`
|
|
48
|
+
- `unzip` - Install via `sudo dnf install -y unzip` or `sudo yum install -y unzip`
|
|
49
|
+
- **Optional:** None
|
|
50
|
+
- **Auto-installed:** None (manual git clone installation)
|
|
51
|
+
|
|
52
|
+
### Windows (Chocolatey/winget)
|
|
53
|
+
- **Required:**
|
|
54
|
+
- WSL 2 with Ubuntu - tfenv does not run natively on Windows; use WSL instead
|
|
55
|
+
- OR Git Bash (experimental, with known limitations)
|
|
56
|
+
- **Optional:** None
|
|
57
|
+
- **Auto-installed:** None
|
|
58
|
+
|
|
59
|
+
### Git Bash (Manual/Portable)
|
|
60
|
+
- **Required:**
|
|
61
|
+
- Git Bash (comes with Git for Windows) - Download from https://git-scm.com/download/win
|
|
62
|
+
- `unzip` - Usually included with Git Bash, or install via `choco install unzip -y` from PowerShell
|
|
63
|
+
- **Optional:** None
|
|
64
|
+
- **Auto-installed:** None
|
|
65
|
+
|
|
66
|
+
**Note on Dependencies**: tfenv requires `git` for installation and updates, `curl` or `wget` for downloading Terraform binaries, and `unzip` for extracting them. On Unix-like systems, these are typically pre-installed or easily available through package managers.
|
|
67
|
+
|
|
68
|
+
## Prerequisites
|
|
69
|
+
|
|
70
|
+
Before installing tfenv on any platform, ensure:
|
|
71
|
+
|
|
72
|
+
1. **Internet connectivity** - Required to clone the tfenv repository and download Terraform versions
|
|
73
|
+
2. **Terminal access** - Command line interface to run installation commands
|
|
74
|
+
3. **Git** - Required to clone the tfenv repository
|
|
75
|
+
4. **No existing tfenv or conflicting tools** - Remove any previous tfenv installations or conflicting version managers like `tenv`
|
|
76
|
+
|
|
77
|
+
**Why use a version manager?** Different Terraform configurations may require different Terraform versions. Using an incompatible version can cause state file corruption, unexpected behavior, or outright failures. A version manager ensures you always use the correct version for each project.
|
|
78
|
+
|
|
79
|
+
## Platform-Specific Installation
|
|
80
|
+
|
|
81
|
+
### macOS (Homebrew)
|
|
82
|
+
|
|
83
|
+
#### Prerequisites
|
|
84
|
+
|
|
85
|
+
- macOS 10.15 (Catalina) or later
|
|
86
|
+
- Homebrew package manager installed
|
|
87
|
+
- zsh shell (default on macOS 10.15+) or bash
|
|
88
|
+
|
|
89
|
+
If Homebrew is not installed, install it first:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Installation Steps
|
|
96
|
+
|
|
97
|
+
**Step 1: Install tfenv via Homebrew**
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
brew install --quiet tfenv
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The `--quiet` flag suppresses non-essential output for automation-friendly installation. This installs tfenv version 3.0.0 (or later) from the official Homebrew formula.
|
|
104
|
+
|
|
105
|
+
**Note**: If you have the conflicting `tenv` package installed, you must remove it first:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
brew uninstall tenv 2>/dev/null || true
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Step 2: Verify tfenv is in your PATH**
|
|
112
|
+
|
|
113
|
+
Homebrew automatically adds tfenv to your PATH. Verify by running:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
which tfenv
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Expected output:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
/opt/homebrew/bin/tfenv
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
(On Intel Macs, the path will be `/usr/local/bin/tfenv`)
|
|
126
|
+
|
|
127
|
+
#### Verification
|
|
128
|
+
|
|
129
|
+
Confirm tfenv is installed correctly:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
tfenv --version
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Expected output (version numbers may vary):
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
tfenv 3.0.0
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Test installing and using Terraform:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
tfenv install latest
|
|
145
|
+
tfenv use latest
|
|
146
|
+
terraform --version
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### Troubleshooting
|
|
150
|
+
|
|
151
|
+
**Problem**: `tfenv: command not found` after installation
|
|
152
|
+
|
|
153
|
+
**Solution**: Ensure Homebrew is in your PATH. Add to your shell profile:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# For Apple Silicon Macs (M1/M2/M3)
|
|
157
|
+
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
158
|
+
|
|
159
|
+
# For Intel Macs
|
|
160
|
+
eval "$(/usr/local/bin/brew shellenv)"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Problem**: Conflict with tenv package
|
|
164
|
+
|
|
165
|
+
**Solution**: tfenv conflicts with tenv (a multi-version manager). Remove tenv before installing tfenv:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
brew uninstall tenv
|
|
169
|
+
brew install --quiet tfenv
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Problem**: `grep: invalid option` errors when using tfenv
|
|
173
|
+
|
|
174
|
+
**Solution**: tfenv requires GNU grep. Homebrew installs it as a dependency, but ensure it is available:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
brew install --quiet grep
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
### Ubuntu/Debian (APT)
|
|
183
|
+
|
|
184
|
+
#### Prerequisites
|
|
185
|
+
|
|
186
|
+
- Ubuntu 20.04 or later, or Debian 10 or later
|
|
187
|
+
- sudo privileges
|
|
188
|
+
- git, curl, and unzip installed
|
|
189
|
+
|
|
190
|
+
**Note**: tfenv is not available in the official Ubuntu/Debian APT repositories. Installation is performed via git clone from the official GitHub repository.
|
|
191
|
+
|
|
192
|
+
First, install required dependencies:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
196
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
#### Installation Steps
|
|
200
|
+
|
|
201
|
+
**Step 1: Clone the tfenv repository**
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
The `--depth=1` flag creates a shallow clone for faster download.
|
|
208
|
+
|
|
209
|
+
**Step 2: Add tfenv to your PATH**
|
|
210
|
+
|
|
211
|
+
For bash (default shell on Ubuntu):
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
cat >> ~/.bashrc << 'EOF'
|
|
215
|
+
|
|
216
|
+
# tfenv configuration
|
|
217
|
+
export PATH="$HOME/.tfenv/bin:$PATH"
|
|
218
|
+
EOF
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Step 3: Reload your shell configuration**
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
source ~/.bashrc
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Alternative: Create symlinks to ~/.local/bin**
|
|
228
|
+
|
|
229
|
+
If you prefer symlinks instead of modifying PATH:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
mkdir -p ~/.local/bin
|
|
233
|
+
ln -sf ~/.tfenv/bin/* ~/.local/bin/
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
This works because `~/.local/bin` is typically already in the default Ubuntu PATH.
|
|
237
|
+
|
|
238
|
+
#### Verification
|
|
239
|
+
|
|
240
|
+
Confirm tfenv is installed correctly:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
tfenv --version
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Expected output (version numbers may vary):
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
tfenv 3.0.0
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Test installing and using Terraform:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
tfenv install latest
|
|
256
|
+
tfenv use latest
|
|
257
|
+
terraform --version
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
#### Troubleshooting
|
|
261
|
+
|
|
262
|
+
**Problem**: `tfenv: command not found` after installation
|
|
263
|
+
|
|
264
|
+
**Solution**: Ensure the PATH configuration was added and the shell was reloaded:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
grep -q "tfenv" ~/.bashrc && echo "Config exists" || echo "Config missing"
|
|
268
|
+
source ~/.bashrc
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
If missing, manually add the configuration:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc
|
|
275
|
+
source ~/.bashrc
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**Problem**: `git: command not found`
|
|
279
|
+
|
|
280
|
+
**Solution**: Install git:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Problem**: `unzip: command not found` when installing Terraform
|
|
287
|
+
|
|
288
|
+
**Solution**: Install unzip:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y unzip
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Problem**: Permission denied errors
|
|
295
|
+
|
|
296
|
+
**Solution**: tfenv should be installed as a regular user, not with sudo. If you installed with sudo, remove and reinstall:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
sudo rm -rf ~/.tfenv
|
|
300
|
+
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
### Raspberry Pi OS (APT)
|
|
306
|
+
|
|
307
|
+
#### Prerequisites
|
|
308
|
+
|
|
309
|
+
- Raspberry Pi OS (Bookworm, Bullseye, or Buster) - 64-bit or 32-bit
|
|
310
|
+
- Raspberry Pi 2 or later
|
|
311
|
+
- sudo privileges
|
|
312
|
+
- git, curl, and unzip installed
|
|
313
|
+
|
|
314
|
+
First, verify your architecture:
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
uname -m
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
- `aarch64` = 64-bit ARM (Raspberry Pi 3/4/5 with 64-bit OS) - Full support
|
|
321
|
+
- `armv7l` = 32-bit ARM (Raspberry Pi 2/3/4 with 32-bit OS) - Full support
|
|
322
|
+
- `armv6l` = 32-bit ARM (Raspberry Pi Zero/1) - Limited Terraform version support
|
|
323
|
+
|
|
324
|
+
**Important**: tfenv automatically detects ARM architecture and downloads the appropriate Terraform binary. For 64-bit Raspberry Pi OS, it uses `linux_arm64` binaries. For 32-bit, it uses `linux_arm` binaries.
|
|
325
|
+
|
|
326
|
+
Install required dependencies:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
330
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
#### Installation Steps
|
|
334
|
+
|
|
335
|
+
**Step 1: Clone the tfenv repository**
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**Step 2: Add tfenv to your PATH**
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
cat >> ~/.bashrc << 'EOF'
|
|
345
|
+
|
|
346
|
+
# tfenv configuration
|
|
347
|
+
export PATH="$HOME/.tfenv/bin:$PATH"
|
|
348
|
+
EOF
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Step 3: Reload your shell configuration**
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
source ~/.bashrc
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
#### Verification
|
|
358
|
+
|
|
359
|
+
Confirm tfenv is installed correctly:
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
tfenv --version
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
Expected output:
|
|
366
|
+
|
|
367
|
+
```
|
|
368
|
+
tfenv 3.0.0
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
Test installing Terraform:
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
tfenv install latest
|
|
375
|
+
tfenv use latest
|
|
376
|
+
terraform --version
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Expected output for ARM64 (version numbers may vary):
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
Terraform v1.14.3
|
|
383
|
+
on linux_arm64
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
#### Troubleshooting
|
|
387
|
+
|
|
388
|
+
**Problem**: `No versions matching 'X.Y.Z' for os 'linux', architecture 'arm64'`
|
|
389
|
+
|
|
390
|
+
**Solution**: Some older Terraform versions do not have ARM64 binaries. For older versions, you can force AMD64 architecture (requires emulation layer):
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
TFENV_ARCH=amd64 tfenv install 0.12.31
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
However, this is not recommended for production use. Prefer using Terraform versions that have native ARM support.
|
|
397
|
+
|
|
398
|
+
**Problem**: Download is very slow
|
|
399
|
+
|
|
400
|
+
**Solution**: Raspberry Pi network and SD card speeds can be limiting. Use a wired ethernet connection and a high-quality SD card (Class 10 or faster), or boot from USB/SSD.
|
|
401
|
+
|
|
402
|
+
**Problem**: `unzip: command not found`
|
|
403
|
+
|
|
404
|
+
**Solution**: Install unzip:
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y unzip
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**Problem**: Out of memory during Terraform operations
|
|
411
|
+
|
|
412
|
+
**Solution**: Add swap space:
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
sudo fallocate -l 2G /swapfile
|
|
416
|
+
sudo chmod 600 /swapfile
|
|
417
|
+
sudo mkswap /swapfile
|
|
418
|
+
sudo swapon /swapfile
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
### Amazon Linux (DNF/YUM)
|
|
424
|
+
|
|
425
|
+
#### Prerequisites
|
|
426
|
+
|
|
427
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
428
|
+
- sudo privileges (typically ec2-user on EC2 instances)
|
|
429
|
+
- git, curl, and unzip installed
|
|
430
|
+
|
|
431
|
+
This is a common setup for managing Terraform versions on AWS EC2 instances.
|
|
432
|
+
|
|
433
|
+
First, install required dependencies:
|
|
434
|
+
|
|
435
|
+
```bash
|
|
436
|
+
# For Amazon Linux 2023
|
|
437
|
+
sudo dnf install -y git curl unzip
|
|
438
|
+
|
|
439
|
+
# For Amazon Linux 2
|
|
440
|
+
sudo yum install -y git curl unzip
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
#### Installation Steps
|
|
444
|
+
|
|
445
|
+
**Step 1: Clone the tfenv repository**
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
**Step 2: Add tfenv to your PATH**
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
cat >> ~/.bashrc << 'EOF'
|
|
455
|
+
|
|
456
|
+
# tfenv configuration
|
|
457
|
+
export PATH="$HOME/.tfenv/bin:$PATH"
|
|
458
|
+
EOF
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
**Step 3: Activate tfenv in the current session**
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
source ~/.bashrc
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
#### Verification
|
|
468
|
+
|
|
469
|
+
Confirm tfenv is installed correctly:
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
tfenv --version
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Expected output:
|
|
476
|
+
|
|
477
|
+
```
|
|
478
|
+
tfenv 3.0.0
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
Test installing and using Terraform:
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
tfenv install latest
|
|
485
|
+
tfenv use latest
|
|
486
|
+
terraform --version
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
Expected output (version numbers may vary):
|
|
490
|
+
|
|
491
|
+
```
|
|
492
|
+
Terraform v1.14.3
|
|
493
|
+
on linux_amd64
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
#### Troubleshooting
|
|
497
|
+
|
|
498
|
+
**Problem**: `tfenv: command not found` after running the install script
|
|
499
|
+
|
|
500
|
+
**Solution**: Source your shell profile:
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
source ~/.bashrc
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
If that does not work, manually add the configuration:
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc
|
|
510
|
+
source ~/.bashrc
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
**Problem**: tfenv not available after EC2 instance restart
|
|
514
|
+
|
|
515
|
+
**Solution**: tfenv is user-specific. Ensure you are logged in as the same user who installed tfenv (typically ec2-user). The installation persists across reboots but requires sourcing the shell profile.
|
|
516
|
+
|
|
517
|
+
**Problem**: `git: command not found`
|
|
518
|
+
|
|
519
|
+
**Solution**: Install git:
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
# For AL2023
|
|
523
|
+
sudo dnf install -y git
|
|
524
|
+
|
|
525
|
+
# For AL2
|
|
526
|
+
sudo yum install -y git
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
**Problem**: Creating an AMI with tfenv pre-installed
|
|
530
|
+
|
|
531
|
+
**Solution**: After installing tfenv and any desired Terraform versions, you can create an AMI from the instance. The AMI will include the tfenv installation. Users of the AMI will need to run `source ~/.bashrc` or start a new shell session to access tfenv.
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
### Windows (Chocolatey/winget)
|
|
536
|
+
|
|
537
|
+
#### Prerequisites
|
|
538
|
+
|
|
539
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
540
|
+
- WSL 2 enabled with Ubuntu distribution installed (recommended)
|
|
541
|
+
- OR Git Bash (experimental, with known limitations)
|
|
542
|
+
|
|
543
|
+
**Critical**: tfenv does not run natively on Windows (PowerShell or Command Prompt). Windows users must use one of these approaches:
|
|
544
|
+
|
|
545
|
+
1. **WSL 2 (Recommended)**: Install tfenv inside WSL Ubuntu - this provides full functionality
|
|
546
|
+
2. **Git Bash (Experimental)**: Limited support with known symlink issues
|
|
547
|
+
|
|
548
|
+
For native Windows Terraform version management without WSL, use Chocolatey to install specific Terraform versions directly:
|
|
549
|
+
|
|
550
|
+
```powershell
|
|
551
|
+
# Install a specific Terraform version on Windows
|
|
552
|
+
choco install terraform --version=1.14.3 -y
|
|
553
|
+
|
|
554
|
+
# Upgrade to a different version
|
|
555
|
+
choco upgrade terraform --version=1.9.0 -y
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
#### Installation Steps (WSL 2 - Recommended)
|
|
559
|
+
|
|
560
|
+
**Step 1: Ensure WSL 2 with Ubuntu is installed**
|
|
561
|
+
|
|
562
|
+
Open PowerShell as Administrator and run:
|
|
563
|
+
|
|
564
|
+
```powershell
|
|
565
|
+
wsl --install -d Ubuntu
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
Restart your computer if prompted, then set up your Ubuntu user account.
|
|
569
|
+
|
|
570
|
+
**Step 2: Install tfenv inside WSL Ubuntu**
|
|
571
|
+
|
|
572
|
+
Open Ubuntu from the Start menu, then run:
|
|
573
|
+
|
|
574
|
+
```bash
|
|
575
|
+
# Install dependencies
|
|
576
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
577
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
|
|
578
|
+
|
|
579
|
+
# Clone tfenv
|
|
580
|
+
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
|
|
581
|
+
|
|
582
|
+
# Add to PATH
|
|
583
|
+
cat >> ~/.bashrc << 'EOF'
|
|
584
|
+
|
|
585
|
+
# tfenv configuration
|
|
586
|
+
export PATH="$HOME/.tfenv/bin:$PATH"
|
|
587
|
+
EOF
|
|
588
|
+
|
|
589
|
+
# Reload shell
|
|
590
|
+
source ~/.bashrc
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
#### Verification
|
|
594
|
+
|
|
595
|
+
In WSL Ubuntu terminal:
|
|
596
|
+
|
|
597
|
+
```bash
|
|
598
|
+
tfenv --version
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
Expected output:
|
|
602
|
+
|
|
603
|
+
```
|
|
604
|
+
tfenv 3.0.0
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
Test installing Terraform:
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
tfenv install latest
|
|
611
|
+
tfenv use latest
|
|
612
|
+
terraform --version
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
#### Troubleshooting
|
|
616
|
+
|
|
617
|
+
**Problem**: tfenv works in WSL but not in Windows PowerShell
|
|
618
|
+
|
|
619
|
+
**Solution**: tfenv installed in WSL is only available within WSL. For Windows terminals, use Chocolatey to install Terraform directly:
|
|
620
|
+
|
|
621
|
+
```powershell
|
|
622
|
+
choco install terraform -y
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
**Problem**: WSL not installed
|
|
626
|
+
|
|
627
|
+
**Solution**: Install WSL 2 from Administrator PowerShell:
|
|
628
|
+
|
|
629
|
+
```powershell
|
|
630
|
+
wsl --install
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
**Problem**: Ubuntu not available in WSL
|
|
634
|
+
|
|
635
|
+
**Solution**: Install Ubuntu distribution:
|
|
636
|
+
|
|
637
|
+
```powershell
|
|
638
|
+
wsl --install -d Ubuntu
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
---
|
|
642
|
+
|
|
643
|
+
### WSL (Ubuntu)
|
|
644
|
+
|
|
645
|
+
#### Prerequisites
|
|
646
|
+
|
|
647
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
648
|
+
- WSL 2 enabled with Ubuntu distribution installed
|
|
649
|
+
- sudo privileges within WSL
|
|
650
|
+
|
|
651
|
+
WSL runs a full Linux environment, so tfenv installation follows the standard Linux procedure.
|
|
652
|
+
|
|
653
|
+
Install required dependencies:
|
|
654
|
+
|
|
655
|
+
```bash
|
|
656
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
657
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
#### Installation Steps
|
|
661
|
+
|
|
662
|
+
**Step 1: Clone the tfenv repository**
|
|
663
|
+
|
|
664
|
+
```bash
|
|
665
|
+
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
**Step 2: Add tfenv to your PATH**
|
|
669
|
+
|
|
670
|
+
```bash
|
|
671
|
+
cat >> ~/.bashrc << 'EOF'
|
|
672
|
+
|
|
673
|
+
# tfenv configuration
|
|
674
|
+
export PATH="$HOME/.tfenv/bin:$PATH"
|
|
675
|
+
EOF
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
**Step 3: Reload your shell configuration**
|
|
679
|
+
|
|
680
|
+
```bash
|
|
681
|
+
source ~/.bashrc
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
**Step 4: Install Terraform**
|
|
685
|
+
|
|
686
|
+
```bash
|
|
687
|
+
tfenv install latest
|
|
688
|
+
tfenv use latest
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
#### Verification
|
|
692
|
+
|
|
693
|
+
Confirm tfenv is installed correctly:
|
|
694
|
+
|
|
695
|
+
```bash
|
|
696
|
+
tfenv --version
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
Expected output:
|
|
700
|
+
|
|
701
|
+
```
|
|
702
|
+
tfenv 3.0.0
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
Verify Terraform installation:
|
|
706
|
+
|
|
707
|
+
```bash
|
|
708
|
+
terraform --version
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Expected output:
|
|
712
|
+
|
|
713
|
+
```
|
|
714
|
+
Terraform v1.14.3
|
|
715
|
+
on linux_amd64
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
#### Troubleshooting
|
|
719
|
+
|
|
720
|
+
**Problem**: `tfenv: command not found` in WSL
|
|
721
|
+
|
|
722
|
+
**Solution**: The PATH was not updated. Manually add the configuration:
|
|
723
|
+
|
|
724
|
+
```bash
|
|
725
|
+
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc
|
|
726
|
+
source ~/.bashrc
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
**Problem**: tfenv works in WSL but not in Windows terminal
|
|
730
|
+
|
|
731
|
+
**Solution**: tfenv installed in WSL is only available within WSL. For Windows terminals (PowerShell, Command Prompt), install Terraform separately using Chocolatey (see Windows section).
|
|
732
|
+
|
|
733
|
+
**Problem**: Different Terraform versions in WSL vs Windows
|
|
734
|
+
|
|
735
|
+
**Solution**: WSL and Windows maintain separate environments. If you need the same Terraform version in both:
|
|
736
|
+
|
|
737
|
+
1. In WSL: `tfenv install 1.14.3 && tfenv use 1.14.3`
|
|
738
|
+
2. In Windows: `choco install terraform --version=1.14.3 -y`
|
|
739
|
+
|
|
740
|
+
**Problem**: File permission issues when accessing Windows files from WSL
|
|
741
|
+
|
|
742
|
+
**Solution**: When working with files on the Windows filesystem (`/mnt/c/...`), Terraform may have permission issues. Store your Terraform configurations in the Linux filesystem (`~/projects/`) for best performance and compatibility.
|
|
743
|
+
|
|
744
|
+
---
|
|
745
|
+
|
|
746
|
+
### Git Bash (Experimental - Manual/Portable)
|
|
747
|
+
|
|
748
|
+
#### Prerequisites
|
|
749
|
+
|
|
750
|
+
- Windows 10 or Windows 11 (64-bit)
|
|
751
|
+
- Git Bash installed (comes with Git for Windows)
|
|
752
|
+
- unzip available (typically included with Git Bash)
|
|
753
|
+
|
|
754
|
+
**Important Warning**: tfenv on Windows Git Bash is experimental and has known symlink issues. The tfenv maintainers note that Windows (64-bit) is "only tested in git-bash and is currently presumed failing due to symlink issues." For production use, strongly recommend using WSL instead.
|
|
755
|
+
|
|
756
|
+
#### Installation Steps
|
|
757
|
+
|
|
758
|
+
**Step 1: Clone the tfenv repository**
|
|
759
|
+
|
|
760
|
+
Open Git Bash and run:
|
|
761
|
+
|
|
762
|
+
```bash
|
|
763
|
+
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
**Step 2: Add tfenv to your PATH**
|
|
767
|
+
|
|
768
|
+
```bash
|
|
769
|
+
cat >> ~/.bashrc << 'EOF'
|
|
770
|
+
|
|
771
|
+
# tfenv configuration
|
|
772
|
+
export PATH="$HOME/.tfenv/bin:$PATH"
|
|
773
|
+
EOF
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
**Step 3: Reload your shell configuration**
|
|
777
|
+
|
|
778
|
+
```bash
|
|
779
|
+
source ~/.bashrc
|
|
780
|
+
```
|
|
781
|
+
|
|
782
|
+
**Step 4: Test tfenv (may have issues)**
|
|
783
|
+
|
|
784
|
+
```bash
|
|
785
|
+
tfenv --version
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
If this works, attempt to install Terraform:
|
|
789
|
+
|
|
790
|
+
```bash
|
|
791
|
+
tfenv install latest
|
|
792
|
+
tfenv use latest
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
#### Verification
|
|
796
|
+
|
|
797
|
+
In Git Bash, confirm tfenv is accessible:
|
|
798
|
+
|
|
799
|
+
```bash
|
|
800
|
+
tfenv --version
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
Expected output (if working):
|
|
804
|
+
|
|
805
|
+
```
|
|
806
|
+
tfenv 3.0.0
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
Test Terraform:
|
|
810
|
+
|
|
811
|
+
```bash
|
|
812
|
+
terraform --version
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
#### Troubleshooting
|
|
816
|
+
|
|
817
|
+
**Problem**: Symlink errors when running `tfenv use`
|
|
818
|
+
|
|
819
|
+
**Solution**: This is a known limitation of tfenv on Windows Git Bash. Git Bash's MinGW environment does not fully support Unix symlinks. Workarounds include:
|
|
820
|
+
|
|
821
|
+
1. **Use WSL instead** (recommended) - Full tfenv functionality
|
|
822
|
+
2. **Run Git Bash as Administrator** - May help with symlink creation:
|
|
823
|
+
Right-click Git Bash shortcut and select "Run as administrator"
|
|
824
|
+
3. **Enable Developer Mode in Windows** - This allows symlink creation without admin rights:
|
|
825
|
+
Settings > Update & Security > For developers > Developer Mode
|
|
826
|
+
|
|
827
|
+
**Problem**: `tfenv: command not found` in Git Bash
|
|
828
|
+
|
|
829
|
+
**Solution**: Git Bash must source `~/.bashrc`. Verify the configuration:
|
|
830
|
+
|
|
831
|
+
```bash
|
|
832
|
+
grep -q "tfenv" ~/.bashrc && echo "Config exists" || echo "Config missing"
|
|
833
|
+
source ~/.bashrc
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
**Problem**: `unzip: command not found`
|
|
837
|
+
|
|
838
|
+
**Solution**: Git Bash typically includes unzip. If missing, install via Chocolatey from PowerShell (Administrator):
|
|
839
|
+
|
|
840
|
+
```powershell
|
|
841
|
+
choco install unzip -y
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
Then restart Git Bash.
|
|
845
|
+
|
|
846
|
+
**Problem**: tfenv works but `terraform` command not found after `tfenv use`
|
|
847
|
+
|
|
848
|
+
**Solution**: The symlink creation likely failed. Check if terraform binary exists:
|
|
849
|
+
|
|
850
|
+
```bash
|
|
851
|
+
ls -la ~/.tfenv/versions/*/terraform.exe
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
If the binary exists but symlinks failed, manually add the version directory to PATH:
|
|
855
|
+
|
|
856
|
+
```bash
|
|
857
|
+
export PATH="$HOME/.tfenv/versions/$(tfenv version-name):$PATH"
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
**Alternative for Windows Git Bash users**: If tfenv proves unreliable, use Chocolatey from PowerShell to manage Terraform versions:
|
|
861
|
+
|
|
862
|
+
```powershell
|
|
863
|
+
# Install Terraform via Chocolatey (from Administrator PowerShell)
|
|
864
|
+
choco install terraform -y
|
|
865
|
+
|
|
866
|
+
# The terraform command will then be available in Git Bash
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
---
|
|
870
|
+
|
|
871
|
+
## Post-Installation Configuration
|
|
872
|
+
|
|
873
|
+
After installing tfenv on any platform, consider these common configurations.
|
|
874
|
+
|
|
875
|
+
### Setting a Default Terraform Version
|
|
876
|
+
|
|
877
|
+
Install and set a default Terraform version:
|
|
878
|
+
|
|
879
|
+
```bash
|
|
880
|
+
# Install the latest Terraform version
|
|
881
|
+
tfenv install latest
|
|
882
|
+
|
|
883
|
+
# Set it as the default
|
|
884
|
+
tfenv use latest
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
### Automatic Version Switching with .terraform-version
|
|
888
|
+
|
|
889
|
+
Create a `.terraform-version` file in your project root to specify the Terraform version:
|
|
890
|
+
|
|
891
|
+
```bash
|
|
892
|
+
echo "1.14.3" > .terraform-version
|
|
893
|
+
```
|
|
894
|
+
|
|
895
|
+
When you navigate to that directory and run any terraform command, tfenv automatically uses the specified version. If the version is not installed, tfenv will install it automatically (when `TFENV_AUTO_INSTALL=true`, which is the default).
|
|
896
|
+
|
|
897
|
+
Supported `.terraform-version` file values:
|
|
898
|
+
|
|
899
|
+
- Exact version: `1.14.3`
|
|
900
|
+
- Latest: `latest`
|
|
901
|
+
- Latest matching regex: `latest:^1.9`
|
|
902
|
+
- Latest allowed by terraform files: `latest-allowed`
|
|
903
|
+
- Minimum required: `min-required`
|
|
904
|
+
|
|
905
|
+
### Listing Available and Installed Versions
|
|
906
|
+
|
|
907
|
+
View all installed Terraform versions:
|
|
908
|
+
|
|
909
|
+
```bash
|
|
910
|
+
tfenv list
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
View all available versions for installation:
|
|
914
|
+
|
|
915
|
+
```bash
|
|
916
|
+
tfenv list-remote
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
### Uninstalling a Terraform Version
|
|
920
|
+
|
|
921
|
+
Remove a specific version:
|
|
922
|
+
|
|
923
|
+
```bash
|
|
924
|
+
tfenv uninstall 1.9.0
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
Remove the latest installed version:
|
|
928
|
+
|
|
929
|
+
```bash
|
|
930
|
+
tfenv uninstall latest
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
### Updating tfenv
|
|
934
|
+
|
|
935
|
+
Update tfenv to the latest version:
|
|
936
|
+
|
|
937
|
+
```bash
|
|
938
|
+
git -C ~/.tfenv pull
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
For Homebrew installations on macOS:
|
|
942
|
+
|
|
943
|
+
```bash
|
|
944
|
+
brew upgrade tfenv
|
|
945
|
+
```
|
|
946
|
+
|
|
947
|
+
### Environment Variables
|
|
948
|
+
|
|
949
|
+
tfenv supports several environment variables for customization:
|
|
950
|
+
|
|
951
|
+
| Variable | Description | Default |
|
|
952
|
+
|----------|-------------|---------|
|
|
953
|
+
| `TFENV_ARCH` | Architecture to download (amd64, arm64) | Auto-detected |
|
|
954
|
+
| `TFENV_AUTO_INSTALL` | Auto-install missing versions | `true` |
|
|
955
|
+
| `TFENV_TERRAFORM_VERSION` | Override .terraform-version file | (none) |
|
|
956
|
+
| `TFENV_CURL_OUTPUT` | Control download progress display | `0` (disabled) |
|
|
957
|
+
| `TFENV_DEBUG` | Enable debug output (0-3 levels) | `0` |
|
|
958
|
+
| `TFENV_REMOTE` | Custom Terraform download source | HashiCorp releases |
|
|
959
|
+
|
|
960
|
+
Example using environment variables:
|
|
961
|
+
|
|
962
|
+
```bash
|
|
963
|
+
# Force AMD64 architecture
|
|
964
|
+
TFENV_ARCH=amd64 tfenv install 1.14.3
|
|
965
|
+
|
|
966
|
+
# Install specific version without .terraform-version file
|
|
967
|
+
TFENV_TERRAFORM_VERSION=1.9.0 terraform init
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
---
|
|
971
|
+
|
|
972
|
+
## Common Issues
|
|
973
|
+
|
|
974
|
+
### Issue: "No installed versions of terraform matched"
|
|
975
|
+
|
|
976
|
+
**Symptoms**: Error when running terraform commands indicating no version is installed or selected.
|
|
977
|
+
|
|
978
|
+
**Solutions**:
|
|
979
|
+
|
|
980
|
+
1. Install a Terraform version:
|
|
981
|
+
|
|
982
|
+
```bash
|
|
983
|
+
tfenv install latest
|
|
984
|
+
tfenv use latest
|
|
985
|
+
```
|
|
986
|
+
|
|
987
|
+
2. Check if a version is selected:
|
|
988
|
+
|
|
989
|
+
```bash
|
|
990
|
+
tfenv version
|
|
991
|
+
```
|
|
992
|
+
|
|
993
|
+
3. Create a `.terraform-version` file in your project:
|
|
994
|
+
|
|
995
|
+
```bash
|
|
996
|
+
echo "latest" > .terraform-version
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
### Issue: "shasum: command not found"
|
|
1000
|
+
|
|
1001
|
+
**Symptoms**: Warning about missing shasum during Terraform installation.
|
|
1002
|
+
|
|
1003
|
+
**Solutions**:
|
|
1004
|
+
|
|
1005
|
+
- On Ubuntu/Debian: shasum is typically available; if not, install perl:
|
|
1006
|
+
|
|
1007
|
+
```bash
|
|
1008
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y perl
|
|
1009
|
+
```
|
|
1010
|
+
|
|
1011
|
+
- On Amazon Linux:
|
|
1012
|
+
|
|
1013
|
+
```bash
|
|
1014
|
+
sudo yum install -y perl-Digest-SHA
|
|
1015
|
+
```
|
|
1016
|
+
|
|
1017
|
+
This is a warning only - tfenv will still install Terraform, but will skip hash verification.
|
|
1018
|
+
|
|
1019
|
+
### Issue: Version Conflicts with System Terraform
|
|
1020
|
+
|
|
1021
|
+
**Symptoms**: Running `terraform --version` shows a different version than `tfenv version`.
|
|
1022
|
+
|
|
1023
|
+
**Solutions**:
|
|
1024
|
+
|
|
1025
|
+
- Ensure tfenv's bin directory is at the beginning of your PATH (before any system directories)
|
|
1026
|
+
- Check for system-installed Terraform:
|
|
1027
|
+
|
|
1028
|
+
```bash
|
|
1029
|
+
which -a terraform
|
|
1030
|
+
```
|
|
1031
|
+
|
|
1032
|
+
- Remove system-installed Terraform or ensure `~/.tfenv/bin` comes first in PATH:
|
|
1033
|
+
|
|
1034
|
+
```bash
|
|
1035
|
+
export PATH="$HOME/.tfenv/bin:$PATH"
|
|
1036
|
+
```
|
|
1037
|
+
|
|
1038
|
+
### Issue: "Permission denied" Errors
|
|
1039
|
+
|
|
1040
|
+
**Symptoms**: Cannot install Terraform versions or access tfenv directory.
|
|
1041
|
+
|
|
1042
|
+
**Solutions**:
|
|
1043
|
+
|
|
1044
|
+
- tfenv should be installed as a regular user, not with sudo
|
|
1045
|
+
- Fix ownership if needed:
|
|
1046
|
+
|
|
1047
|
+
```bash
|
|
1048
|
+
sudo chown -R $USER:$USER ~/.tfenv
|
|
1049
|
+
```
|
|
1050
|
+
|
|
1051
|
+
### Issue: Slow Terraform Downloads
|
|
1052
|
+
|
|
1053
|
+
**Symptoms**: `tfenv install` takes a long time or times out.
|
|
1054
|
+
|
|
1055
|
+
**Solutions**:
|
|
1056
|
+
|
|
1057
|
+
- Check internet connectivity
|
|
1058
|
+
- For corporate networks, configure proxy:
|
|
1059
|
+
|
|
1060
|
+
```bash
|
|
1061
|
+
export HTTP_PROXY="http://proxy.example.com:8080"
|
|
1062
|
+
export HTTPS_PROXY="http://proxy.example.com:8080"
|
|
1063
|
+
```
|
|
1064
|
+
|
|
1065
|
+
- Use a custom mirror with `TFENV_REMOTE` environment variable
|
|
1066
|
+
|
|
1067
|
+
### Issue: ARM64 Version Not Available
|
|
1068
|
+
|
|
1069
|
+
**Symptoms**: `tfenv install` fails on ARM systems for older Terraform versions.
|
|
1070
|
+
|
|
1071
|
+
**Solutions**:
|
|
1072
|
+
|
|
1073
|
+
- Use a Terraform version that supports ARM64 (1.0.0 and later have good ARM support)
|
|
1074
|
+
- Force AMD64 architecture (not recommended for production):
|
|
1075
|
+
|
|
1076
|
+
```bash
|
|
1077
|
+
TFENV_ARCH=amd64 tfenv install 0.12.31
|
|
1078
|
+
```
|
|
1079
|
+
|
|
1080
|
+
---
|
|
1081
|
+
|
|
1082
|
+
## References
|
|
1083
|
+
|
|
1084
|
+
- [tfenv Official GitHub Repository](https://github.com/tfutils/tfenv)
|
|
1085
|
+
- [tfenv Homebrew Formula](https://formulae.brew.sh/formula/tfenv)
|
|
1086
|
+
- [HashiCorp Terraform Downloads](https://releases.hashicorp.com/terraform/)
|
|
1087
|
+
- [Installing tfenv on Ubuntu](https://brain2life.hashnode.dev/how-to-install-tfenv-terraform-version-manager-on-ubuntu-os)
|
|
1088
|
+
- [Installing tfenv with WSL2 on Windows](https://medium.com/azure-terraformer/installing-and-using-tfenv-with-wsl2-on-windows-2f5d442e0ca6)
|
|
1089
|
+
- [How to Use tfenv to Manage Multiple Terraform Versions (Spacelift)](https://spacelift.io/blog/tfenv)
|
|
1090
|
+
- [Manage Multiple Terraform Versions with tfenv (Opensource.com)](https://opensource.com/article/20/11/tfenv)
|
|
1091
|
+
- [tfenv ARM64 Support Issue Discussion](https://github.com/tfutils/tfenv/issues/337)
|