terraform env::没有这样的文件或目录

时间:2020-04-02 23:44:24

标签: terraform

无法初始化Terraform模块,甚至无法检查版本。

$ ls
main.tf  output.tf  variables.tf
$ terraform --v
env: 22:58:10: No such file or directory
$ rm -rf .terraform && terraform init 
env: 23:43:38: No such file or directory

但是,正确安装了terraform

$ which terraform
/usr/local/bin/terraform

Terraform Shell脚本的内容

$ cat /usr/local/bin/terraform
#!/bin/bash

#set -x
DEFAULT_VERSION="0.12.24"

if [[ -z "$VERSION" ]]; then
        TF_VERSION="$DEFAULT_VERSION"
else
    TF_VERSION="$VERSION"
fi

VADDR=$(grep 'provider "vault"' *.tf --exclude-dir=modules -A2 | grep -P --color -o '(?<=address = ")(.*)(?=")')
if [ -n "$VADDR" ]; then
  #echo "got vault addr $VADDR"
  VAULT_CONFIG="VAULT_TOKEN=$(unset VAULT_TOKEN && VAULT_ADDR=$VADDR viq tokengen)"
  #echo "got vault token $VAULT_CONFIG"
else
  VAULT_CONFIG="dummyfoo=dummybar"
fi

env $VAULT_CONFIG /opt/terraform/v${TF_VERSION}/terraform $@ 2>&1 | \
  sed -r -e 's/([ ]+)result:([ ]+)"[[:alnum:][:punct:]]+" => \
  <computed>/\1result:\2<redacted> => <computed>/' \
  -e 's/([ ]+)MasterUserPassword:([ ]+)"[^"]+"/\1MasterUserPassword:\2<redacted>/' \
  | sed -r -e 's/"10MySqlPassword".*/"10MySqlPassword" = "****" -> <redacted>/g' \
  | sed -r -e 's/API_KEY".*/API_KEY" = "****" -> <redacted>/g'

这是什么问题?

1 个答案:

答案 0 :(得分:0)

请检查/usr/local/bin中是否包含$PATH$PATH env变量告诉您​​的系统在哪里查找已安装的文件。

$ echo $PATH

如果它不在您的$PATH中,则将该目录添加到您的$PATH中。

$ export PATH=$PATH:/usr/local/bin

将以上行添加到您的~/.bashrc(或等效文件)中以保留更改。

如果它在您的路径中,则通过在指定可执行文件的完整路径时尝试检查版本来查看terraform是否正常工作。

$ /usr/local/bin/terraform --v