Terraform Version Manager inspirado en RBENV
Actualmente TFENV admite los siguientes sistemas operativos
Instalar a través de Homebrew
brew install tfenv
Instalar a través del repositorio de usuarios de Arch (AUR)
yay --sync tfenv
Instalar a través de Puppet
Uso del módulo de marionero Sergk-tfenv
include ::tfenv
${HOME}/.tfenv
) git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
~/.tfenv/bin
a su $PATH
de la forma que deseeintento:
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile
ZSH:
$ echo ' export PATH="$HOME/.tfenv/bin:$PATH" ' >> ~ /.zprofile
Para usuarios de WSL:
echo ' export PATH=$PATH:$HOME/.tfenv/bin ' >> ~ /.bashrc
OSX/Linux Only!
O puede hacer scripts tfenv/bin/*
en una ruta que ya se agrega a su $PATH
( /usr/local/bin
.
ln -s ~/.tfenv/bin/* /usr/local/bin
En Ubuntu/Debian Touching /usr/local/bin
puede requerir acceso de sudo, pero puede crear ${HOME}/bin
o ${HOME}/.local/bin
y al siguiente inicio de sesión se agregará a la sesion $PATH
o corriendo . ${HOME}/.profile
Se agregará a la $PATH
de la sesión de shell actual.
mkdir -p ~/.local/bin/
. ~/.profile
ln -s ~/.tfenv/bin/* ~/.local/bin
which tfenv
Instale una versión específica de Terraform.
Si no se pasa ningún parámetro, la versión para usar se resuelve automáticamente a través de TFENV_TERAFORFORM_VERSION Variable de entorno o archivos .terraform-version, en ese orden de precedencia, es decir, tfenv_terraform_version, entonces .terformeform-version. El valor predeterminado es 'último' si no se encuentran ninguno.
Si se pasa un parámetro, opciones disponibles:
xyz
Semver 2.0.0 especificando la versión exacta para instalarlatest
es una sintaxis para instalar la última versiónlatest:<regex>
es una sintaxis para instalar la última versión de coincidencia de regex (utilizado por grep -e)latest-allowed
es una sintaxis para escanear sus archivos de Terraform para detectar qué versión está al máximo.min-required
es una sintaxis para escanear sus archivos Terraform para detectar qué versión es mínimamente necesaria.Ver Docios requeridos_version. Consulte también la sección requilada y la última a continuación.
$ tfenv install
$ tfenv install 0.7.0
$ tfenv install latest
$ tfenv install latest:^0.8
$ tfenv install latest-allowed
$ tfenv install min-required
Si shasum
está presente en el camino, TFENV verificará la descarga contra el hash SHA256 publicado por Hashicorp. Si KeyBase está disponible en la ruta, también verificará la firma de los hashes publicados utilizando la clave pública publicada de Hashicorp.
Puede optar por usar herramientas Gnupg para la verificación de firma PGP si KeyBase no está disponible:
Donde TFENV_INSTALL_DIR
es, por ejemplo, ~/.tfenv
o /usr/local/Cellar/tfenv/<version>
echo 'trust-tfenv: yes' > ${TFENV_INSTALL_DIR}/use-gpgv
tfenv install
La directiva trust-tfenv
significa que la verificación utiliza una copia de la tecla Hashicorp OpenPGP que se encuentra en el repositorio TFENV. Saltar esa directiva significa que la clave Hashicorp debe estar en las claves de confianza predeterminadas existentes. Use el archivo ${TFENV_INSTALL_DIR}/use-gnupg
para invocar la herramienta gpg
completa y ver el estado de web de confianza; Tenga en cuenta que la falta de ruta de confianza no causará una falla de validación.
Si usa un archivo .terraform-version, tfenv install
(sin argumento) instalará la versión escrita en él.
Tenga en cuenta que no realizamos un análisis de rango de versiones semánticas, pero usamos la primera versión encontrada como candidato para uno mínimamente requerido. Depende del usuario mantener la definición razonable. Es decir
// this will detect 0.12.3
terraform {
required_version = " <0.12.3, >= 0.10.0 "
}
// this will detect 0.10.8 (the latest 0.10.x release)
terraform {
required_version = " ~> 0.10.0, <0.12.3 "
}
TFENV_ARCH
Cadena (predeterminada: amd64
)
Especificar arquitectura. La arquitectura que no sea la AMD64 predeterminada se puede especificar con la variable de entorno TFENV_ARCH
Nota: El valor predeterminado cambia a arm64
para versiones que tienen compilaciones ARM64 disponibles cuando $(uname -m)
coincide con aarch64* | arm64*
TFENV_ARCH=arm64 tfenv install 0.7.9
TFENV_AUTO_INSTALL
Cadena (predeterminada: verdadero)
En caso de que tfenV instale automáticamente Terraform si la versión especificada por defecto o un archivo .terraform-version no está instalado actualmente.
TFENV_AUTO_INSTALL=false terraform plan
terraform use <version that is not yet installed>
TFENV_CURL_OUTPUT
Entero (predeterminado: 2)
Establezca el mecanismo utilizado para mostrar el progreso de descarga al descargar versiones de Terraform desde el servidor remoto.
-#
para rizar-s
a rizo TFENV_DEBUG
Entero (predeterminado: 0)
Establezca el nivel de depuración para TFENV.
TFENV_REMOTE
Cadena (predeterminada: https://releases.hashicorp.com)
Para instalar desde un control remoto que no sea el predeterminado
TFENV_REMOTE=https://example.jfrog.io/artifactory/hashicorp
TFENV_REVERSE_REMOTE
Entero (predeterminado: 0)
Al usar un control remoto personalizado, como Artifactory, en lugar de los servidores Hashicorp, la lista de versiones de Terraform devueltas por el rizo del directorio remoto puede invertirse. En este caso, la latest
funcionalidad no funcionará como se esperaba porque espera que las versiones se enumeren en orden de la fecha de lanzamiento de la más nueva a la más antigua. Si su control remoto está proporcionando una lista que sea Oldes-First, establezca TFENV_REVERSE_REMOTE=1
y se restaurará la funcionalidad.
TFENV_REVERSE_REMOTE=1 tfenv list-remote
TFENV_CONFIG_DIR
Ruta (predeterminada: $TFENV_ROOT
)
La ruta a un directorio donde existen las versiones y archivos de configuración de Terraform locales.
TFENV_CONFIG_DIR="$XDG_CONFIG_HOME/tfenv"
TFENV_TERRAFORM_VERSION
Cadena (predeterminada: "")
Si no es una cadena vacía, esta variable anula la versión Terraform, especificada en archivos .terform -ver-version. latest
y latest:<regex>
sintaxis también son compatibles. tfenv install
y el comando tfenv use
también respeta esta variable.
p.ej
TFENV_TERRAFORM_VERSION=latest:^0.11. terraform --version
TFENV_NETRC_PATH
Cadena (predeterminada: "")
Si no es una cadena vacía, esta variable especifica el archivo de credenciales utilizado para acceder a la ubicación remota (útil si se usa junto con tfenv_remote).
p.ej
TFENV_NETRC_PATH="$PWD/.netrc.tfenv"
BASHLOG_COLOURS
Entero (predeterminado: 1)
Para deshabilitar la coloración de la salida de la consola, establecido en 0.
BASHLOG_DATE_FORMAT
Cadena (predeterminado: + %f %t)
El formato de visualización para la fecha pasada al binario date
para generar un campamento de datos utilizado como prefijo para:
FILE
Líneas de archivo de registro.BASHLOG_EXTRA=1
BASHLOG_EXTRA
Entero (predeterminado: 0)
Por defecto, la salida de la consola de TFENV no imprime un sello de fecha o severidad del registro.
Para habilitar esta funcionalidad, haciendo que la salida normal sea equivalente a la salida del registro de archivos, establecido en 1.
BASHLOG_FILE
Entero (predeterminado: 0)
Establecer en 1 para habilitar el registro de texto sin formato en el archivo (registro de tipo de archivo).
La ruta predeterminada para archivos de registro se define mediante /tmp /$ (Basename $ 0) .log Cada ejecutable se registra en su propio archivo.
p.ej
BASHLOG_FILE=1 tfenv use latest
registrará /tmp/tfenv-use.log
BASHLOG_FILE_PATH
String (predeterminado: /tmp /$ (BaseName $ {0}). Log)
Para especificar un solo archivo como el objetivo para todos los registros de tipo de archivo, independientemente del script de ejecución.
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX
Cadena (predeterminada: "")
Tenga cuidado: el mal uso destruirá todo lo que haya amado
Esta variable le permite pasar una cadena que contiene un comando que se ejecutará utilizando eval
para producir un prefijo en cada línea de salida de la consola, y cada entrada de registro de tipo de archivo.
p.ej
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX='echo "${$$} "'
prefirirá cada línea de registro con el proceso de llamada 'PID.
BASHLOG_JSON
Entero (predeterminado: 0)
Establecer en 1 para habilitar el registro de JSON en archivo (registro de tipo JSON).
La ruta predeterminada para archivos de registro se define mediante /tmp /$ (Basename $ 0) .log.json Cada ejecutable se registra en su propio archivo.
p.ej
BASHLOG_JSON=1 tfenv use latest
iniciará sesión en formato JSON a /tmp/tfenv-use.log.json
Contenido de registro de JSON:
{"timestamp":"<date +%s>","level":"<log-level>","message":"<log-content>"}
BASHLOG_JSON_PATH
String (predeterminado: /tmp /$ (Basename $ {0}). Log.json)
Para especificar un solo archivo como el objetivo para todos los registros de tipo JSON, independientemente del script de ejecución.
BASHLOG_SYSLOG
Entero (predeterminado: 0)
Para registrar a Syslog usando el binario logger
, configure esto en 1.
La funcionalidad básica es así:
local tag="${BASHLOG_SYSLOG_TAG:-$(basename "${0}")}";
local facility="${BASHLOG_SYSLOG_FACILITY:-local0}";
local pid="${$}";
logger --id="${pid}" -t "${tag}" -p "${facility}.${severity}" "${syslog_line}"
BASHLOG_SYSLOG_FACILITY
Cadena (predeterminada: local0)
La instalación de Syslog para especificar al usar el registro de tipo syslog.
BASHLOG_SYSLOG_TAG
Cadena (predeterminada: $ (Basename $ 0))
La etiqueta syslog para especificar al usar el registro de tipo syslog.
El valor predeterminado al PID del proceso de llamada.
Cambiar una versión para usar
Si no se pasa ningún parámetro, la versión para usar se resuelve automáticamente a través de archivos .terraform-version o tfenv_terraform_version entorno variable (tfenv_teraform_version tiene prioridad), por defecto en 'Último' si no se encuentra nada.
latest
es una sintaxis para usar la última versión instalada
latest:<regex>
es una sintaxis para usar la última versión instalada de coincidencia regex (utilizada por Grep -E)
min-required
cambiará a la versión mínimamente requerida por sus fuentes de Terraform (consulte tfenv install
)
$ tfenv use
$ tfenv use min-required
$ tfenv use 0.7.0
$ tfenv use latest
$ tfenv use latest:^0.8
Nota: tfenv use latest
o tfenv use latest:<regex>
Encontrará la última versión coincidente que ya está instalada. Si no se instalan versiones coincidentes, y tfenv_auto_install se establece en true
(que es el valor predeterminado) la última versión coincidente en el repositorio remoto se instalará y utilizará.
Desinstalar una versión específica de Terraform latest
es una sintaxis para desinstalar la última versión latest:<regex>
es una sintaxis para desinstalar la última versión coincidir con Regex (utilizado por Grep -e)
$ tfenv uninstall 0.7.0
$ tfenv uninstall latest
$ tfenv uninstall latest:^0.8
Lista de versiones instaladas
$ tfenv list
* 0.10.7 (set by /opt/tfenv/version)
0.9.0-beta2
0.8.8
0.8.4
0.7.0
0.7.0-rc4
0.6.16
0.6.2
0.6.1
Lista de versiones instalables
$ tfenv list-remote
0.9.0-beta2
0.9.0-beta1
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.8.0-rc3
0.8.0-rc2
0.8.0-rc1
0.8.0-beta2
0.8.0-beta1
0.7.13
0.7.12
...
Si coloca un archivo .terraform-version
en la raíz de su proyecto, o en su directorio de inicio, TFENV lo detecta y usa la versión escrita en él. Si la versión es latest
o latest:<regex>
, se seleccionará la última versión coincidente actualmente instalada.
Tenga en cuenta que la variable de entorno TFENV_TERAFORSIONSION se puede usar para anular la versión, especificada por el archivo .terraform-version
.
$ cat .terraform-version
0.6.16
$ terraform version
Terraform v0.6.16
Your version of Terraform is out of date! The latest version
is 0.7.3. You can update by downloading from www.terraform.io
$ echo 0.7.3 > .terraform-version
$ terraform version
Terraform v0.7.3
$ echo latest:^0.8 > .terraform-version
$ terraform version
Terraform v0.8.8
$ TFENV_TERRAFORM_VERSION=0.7.3 terraform --version
Terraform v0.7.3
git --git-dir=~/.tfenv/.git pull
rm -rf /some/path/to/tfenv