Менеджер версий Terraform вдохновил Rbenv
В настоящее время TFENV поддерживает следующие OSES
Установите через Homebrew
brew install tfenv
Установить через репозиторий пользователя Arch (AUR)
yay --sync tfenv
Установите через марионетку
Использование модуля Puppet Sergk-Tfenv
include ::tfenv
${HOME}/.tfenv
) git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
~/.tfenv/bin
в свой $PATH
Бэш:
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile
zsh:
$ echo ' export PATH="$HOME/.tfenv/bin:$PATH" ' >> ~ /.zprofile
Для пользователей WSL:
echo ' export PATH=$PATH:$HOME/.tfenv/bin ' >> ~ /.bashrc
Или вы можете сделать Symlinks для сценариев tfenv/bin/*
в путь, который уже добавлен в ваш $PATH
(например /usr/local/bin
) OSX/Linux Only!
ln -s ~/.tfenv/bin/* /usr/local/bin
На Ubuntu/Debian touching /usr/local/bin
может потребовать доступа SUDO, но вы можете создать ${HOME}/bin
или ${HOME}/.local/bin
, а в следующем входе в систему будет добавлено в сеанс $PATH
или Бег . ${HOME}/.profile
$PATH
mkdir -p ~/.local/bin/
. ~/.profile
ln -s ~/.tfenv/bin/* ~/.local/bin
which tfenv
Установите конкретную версию Terraform.
Если параметр не передается, версия для использования автоматически разрешается с помощью переменной среды TFENV_TERRAForm_version или файлов .terraform-версии, в этом порядке приоритета, то есть tfenv_terraform_version, затем .terraform-Version. По умолчанию - «Последний», если ни один не найден.
Если параметр пройден, доступные параметры:
xyz
semver 2.0.0 строка указала точную версию для установкиlatest
- синтаксис для установки последней версииlatest:<regex>
-это синтаксис для установки последней версии, соответствующего Regex (используется Grep -e)latest-allowed
-это синтаксис для сканирования ваших файлов Terraform, чтобы определить, какая версия максимально разрешена.min-required
-это синтаксис для сканирования ваших файлов Terraform, чтобы определить, какая версия минимально требуется.См. Trey_version Docs. Также см. В разделе «Мин» и «Последний раз» ниже.
$ tfenv install
$ tfenv install 0.7.0
$ tfenv install latest
$ tfenv install latest:^0.8
$ tfenv install latest-allowed
$ tfenv install min-required
Если shasum
присутствует на пути, TFENV проверит загрузку против опубликованного Hashicorp's Hash SHA256. Если Keybase доступна на пути, она также проверит подпись для тех опубликованных хаши, использующих опубликованный открытый ключ Hashicorp.
Вы можете выбрать использование инструментов GNUPG для проверки подписи PGP, если ключи недоступны:
Где, например, TFENV_INSTALL_DIR
, ~/.tfenv
или /usr/local/Cellar/tfenv/<version>
echo 'trust-tfenv: yes' > ${TFENV_INSTALL_DIR}/use-gpgv
tfenv install
Директива trust-tfenv
означает, что проверка использует копию ключа Hashicorp OpenPGP, найденную в репозитории TFENV. Пропуск этой директивы означает, что ключ Hashicorp должен находиться в существующих доверенных ключах по умолчанию. Используйте файл ${TFENV_INSTALL_DIR}/use-gnupg
, чтобы вместо этого вызвать полный инструмент gpg
и увидеть статус веб-сайта; Остерегайтесь, что отсутствие трастового пути не вызовет сбоя проверки.
Если вы используете файл .terraform-версия, tfenv install
(без аргумента) установит версию, написанную в нем.
Обратите внимание, что мы не делаем семантическую диапазон диапазона версий, но используем первый когда -либо найденной версию в качестве кандидата на минимально требуемый. Пользователь должен сохранить определение разумным. Т.е.
// 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
Строка (по умолчанию: amd64
)
Укажите архитектуру. Архитектура, отличная от AMD64 по умолчанию, может быть указана с помощью переменной среды TFENV_ARCH
Примечание. Изменения по умолчанию в arm64
для версий, которые имеют сборку ARM64, доступные, когда $(uname -m)
соответствует aarch64* | arm64*
TFENV_ARCH=arm64 tfenv install 0.7.9
TFENV_AUTO_INSTALL
Строка (по умолчанию: true)
Если TFENV автоматически устанавливает TerraForm, если версия, указанная по умолчанию или файл .Terraform-версия, в настоящее время не установлена.
TFENV_AUTO_INSTALL=false terraform plan
terraform use <version that is not yet installed>
TFENV_CURL_OUTPUT
Целое число (по умолчанию: 2)
Установите механизм, используемый для отображения прогресса загрузки при загрузке версий Terraform с удаленного сервера.
-#
, чтобы сгибаться-s
чтобы сгибаться TFENV_DEBUG
Целое число (по умолчанию: 0)
Установите уровень отладки для TFENV.
TFENV_REMOTE
String (по умолчанию: https://releases.hashicorp.com)
Установить из пульта, кроме по умолчанию
TFENV_REMOTE=https://example.jfrog.io/artifactory/hashicorp
TFENV_REVERSE_REMOTE
Целое число (по умолчанию: 0)
При использовании пользовательского удаленного дистанционного управления, такого как артефакта, вместо серверов Hashicorp, список версий Terraform, возвращаемых скручиванием удаленного каталога, может быть перевернут. В этом случае latest
функциональность не будет работать, как и ожидалось, потому что ожидается, что версии будут перечислены в порядке выпуска от новейшего до самого старого. Если ваш пульт вместо этого предоставляет список, который находится на первом месте, установите TFENV_REVERSE_REMOTE=1
, и функциональность будет восстановлена.
TFENV_REVERSE_REMOTE=1 tfenv list-remote
TFENV_CONFIG_DIR
Путь (по умолчанию: $TFENV_ROOT
)
Путь к каталогу, где существуют локальные версии терраформ и файлы конфигурации.
TFENV_CONFIG_DIR="$XDG_CONFIG_HOME/tfenv"
TFENV_TERRAFORM_VERSION
String (по умолчанию: "")
Если не пустая строка, эта переменная переопределяет версию Terraform, указанную в файлах .terraform-версии. latest
и latest:<regex>
Синтаксис также поддерживается. Команда tfenv install
и tfenv use
также уважает эту переменную.
например
TFENV_TERRAFORM_VERSION=latest:^0.11. terraform --version
TFENV_NETRC_PATH
String (по умолчанию: "")
Если не пустая строка, эта переменная указывает файл учетных данных, используемый для доступа к удаленному местоположению (полезно, если используется в сочетании с TFENV_REMOTE).
например
TFENV_NETRC_PATH="$PWD/.netrc.tfenv"
BASHLOG_COLOURS
Целое число (по умолчанию: 1)
Чтобы отключить окраску консоли вывода, установите на 0.
BASHLOG_DATE_FORMAT
Строка (по умолчанию: + %f %t)
Формат отображения для даты, передаваемой date
двоичного, для генерации DatestAmp, используемого в качестве префикса к:
FILE
.BASHLOG_EXTRA=1
BASHLOG_EXTRA
Целое число (по умолчанию: 0)
По умолчанию вывод консоли из TFENV не печатает марку даты или серьезность журнала.
Чтобы включить эту функциональность, сделав обычный выходной эквивалент для вывода журнала файла, установите на 1.
BASHLOG_FILE
Целое число (по умолчанию: 0)
Установите на 1, чтобы включить простые текстовые журналы в файл (журнал типа файла).
Путь по умолчанию для файлов журнала определяется /tmp /$ (basename $ 0) .log Каждое исполняемые журналы в свой собственный файл.
например
BASHLOG_FILE=1 tfenv use latest
войдет в систему по адресу /tmp/tfenv-use.log
BASHLOG_FILE_PATH
String (default: /tmp /$ (baseName $ {0}). Log)
Чтобы указать один файл в качестве цели для всех журналов типа файла независимо от сценария выполнения.
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX
String (по умолчанию: "")
Будьте осторожны - злоупотребление уничтожит все, что вам когда -либо любило
Эта переменная позволяет вам передать строку, содержащую команду, которая будет выполнена с помощью eval
, чтобы создать префикс для каждой консоли выходной строки, и каждую запись журнала типа файла.
например
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX='echo "${$$} "'
будет префикс каждую строку журнала с вызовом PID PID.
BASHLOG_JSON
Целое число (по умолчанию: 0)
Установите 1, чтобы включить журнал JSON в файл (журнал типа JSON).
Путь по умолчанию для файлов журнала определяется /tmp /$ (basename $ 0) .log.json каждый исполняемый файл в своем собственном файле.
например
BASHLOG_JSON=1 tfenv use latest
войдет в систему в формате json в /tmp/tfenv-use.log.json
Содержимое журнала JSON:
{"timestamp":"<date +%s>","level":"<log-level>","message":"<log-content>"}
BASHLOG_JSON_PATH
String (default: /tmp /$ (baseName $ {0}). Log.json)
Чтобы указать один файл в качестве цели для всех журналов типа JSON независимо от сценария выполнения.
BASHLOG_SYSLOG
Целое число (по умолчанию: 0)
Чтобы войти в систему, используя двоичный logger
, установите это на 1.
Таким образом, основная функциональность:
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
Строка (по умолчанию: локальный 0)
Установка системного журнала для указания при использовании журнала типа системного журнала.
BASHLOG_SYSLOG_TAG
Строка (по умолчанию: $ (базовое имя $ 0))
Тег Syslog для указания при использовании журнала типа системного журнала.
По умолчанию на пид призывного процесса.
Переключить версию на использование
Если параметр не передается, версия для использования автоматически разрешается с помощью файлов .terraform-версии или переменной среды TFENV_TERRAFORM_VERSION (TFENV_TERRAFORM_VERSION имеет приоритет), не выполняя «последнее», если нет.
latest
- это синтаксис для использования последней установленной версии
latest:<regex>
-это синтаксис для использования последней установленной версии REGEX (используется GREP -E)
min-required
переключится на версию, минимально требуемую вашими источниками Terraform (см. Выше tfenv install
)
$ tfenv use
$ tfenv use min-required
$ tfenv use 0.7.0
$ tfenv use latest
$ tfenv use latest:^0.8
ПРИМЕЧАНИЕ. tfenv use latest
или tfenv use latest:<regex>
найдет последнюю соответствующую версию, которая уже установлена. Если соответствующие версии не установлены, и TFENV_Auto_Install установлен на true
(что является по умолчанию), будет установлена и используется последняя версия для подходящей версии в удаленном репозитории.
Удалите конкретную версию Terraform latest
-это синтаксис, чтобы удалить последнюю версию Последняя версия latest:<regex>
-это синтаксис для удаления новейшей версии, соответствующей вспомогательной версии (используется GREP -E)
$ tfenv uninstall 0.7.0
$ tfenv uninstall latest
$ tfenv uninstall latest:^0.8
Список установленных версий
$ 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
Список установленных версий
$ 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
...
Если вы поместите файл .terraform-version
в корне проекта или в свой домашний каталог, TFENV обнаруживает его и использует версию, написанную в нем. Если версия является latest
или latest:<regex>
, будет выбран последняя соответствующая версия, установленная в настоящее время.
Обратите внимание, что переменная среды TFENV_TERRAFORM_VERSION может использоваться для переопределения версии, .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