Terraform aws: Error Не найдены файлы конфигурации
Я новичок в Terraform
, Я пишу небольшой скрипт, чтобы поместить небольшой файл данных с моей машины в корзину S3 aws... но я получаю ошибку ниже.
Код файла Terraform:-
provider "aws" {
region = "us-east-1"
version = "~> 1.6"
}
terraform {
backend "s3" {
bucket = "${var.bucket_testing}"
kms_key_id = "arn:aws:kms:us-east-1:12345678900:key/12312313ed-34sd-6sfa-90cvs-1234asdfasd"
key = "testexport/exportFile.tfstate"
region = "us-east-1"
encrypt = true
}
}
data "aws_s3_bucket" "pr-ip" {
bucket = "${var.bucket_testing}"
}
resource "aws_s3_bucket_object" "put_file" {
bucket = "${data.aws_s3_bucket.pr-ip.id}"
key = "${var.file_path}/${var.file_name}"
source = "src/Datafile.txt"
etag = "${md5(file("src/Datafile.txt"))}"
kms_key_id = "arn:aws:kms:us-east-1:12345678900:key/12312313ed-34sd-6sfa-90cvs-1234asdfasd"
server_side_encryption = "aws:kms"
}
Ошибка на терминале
terraform init
Terraform initialized in an empty directory!
The directory has no Terraform configuration files. You may begin working
with Terraform immediately by creating Terraform configuration files.
$ терраформ применяется
Error: No configuration files found!
Apply requires configuration to be present. Applying without a configuration
would mark everything for destruction, which is normally not what is desired.
If you would like to destroy everything, please run 'terraform destroy' instead
which does not require any configuration files.
Кроме того, я настроил свой идентификатор и значение ключа доступа AWS по умолчанию.
Пожалуйста помоги. Спасибо!!
7 ответов
Эта ошибка означает, что вы выполнили команду не в том месте. Вы должны быть в каталоге, который содержит ваши файлы конфигурации, поэтому перед запуском init
или же apply
ты должен cd
в вашу папку проекта Terraform.
Error: No configuration files found!
Вышеупомянутая ошибка возникает, когда вас нет в папке, содержащей ваш файл конфигурации. Чтобы исправить ситуацию, вы можете создать .tf в папке вашего проекта, над которой вы будете работать.Примечание. Пустой .tf также устранит ошибку, но будет иметь ограниченное использование, поскольку не содержит информации о провайдере. См. Пример ниже:-
provider "aws" {
region = "us-east" #Below value will be asked when the terraform apply command is executed if not provided here
}
Итак, для успешного выполнения команды terraform apply вам необходимо убедиться в следующих пунктах:
- Вы должны присутствовать в папке вашего проекта terraform (может быть любой каталог).
- Должен содержать .tf, предпочтительно должен содержать информацию о провайдере терраформ.
- Выполните terraform init, чтобы инициализировать плагин серверной части и поставщика.
- теперь вы можете выполнить terraform apply (без каких-либо ошибок конфигурации)
На случай, если кто-нибудь столкнется с этим сейчас, я столкнулся с проблемой, когда мойTF_WORSPACE
env var была установлена в другое рабочее пространство, чем каталог, в котором я находился. Дважды проверьте свое рабочее пространство с помощью
terraform workspace show
чтобы показать доступные рабочие места
terraform workspace list
для использования одного из перечисленных рабочих пространств:
terraform workspace select <workspace name>
ЕслиTF_WORKSPACE
env var устанавливается, когда вы пытаетесь использоватьterraform workspace select
TF напечатает сообщение о потенциальной проблеме:
The selected workspace is currently overridden using the TF_WORKSPACE
environment variable.
To select a new workspace, either update this environment variable or unset
it and then run this command again.
У меня тоже была такая же проблема, помните, что имя файла terraform должно заканчиваться расширением .tf.
Я получил эту ошибку сегодня утром при развертывании в рабочей среде в проекте, который существует уже много лет, и ничего не изменилось. В конце концов мы проследили это до того, как человек, создавший билет производственного развертывания, вставил эту команду в электронное письмо с помощью Outlook:terraform init --reconfigure
Microsoft в своей безграничной мудрости объединила два дефиса в один, и один дефис даже не был стандартным символом дефиса ASCII (кажется, он называется «en-dash»): terraform init –reconfigure
Это заставило Terraform 0.12.31 выдать полезное сообщение об ошибке:
Terraform initialized in an empty directory!
The directory has no Terraform configuration files. You may begin working
with Terraform immediately by creating Terraform configuration files.
Нам потребовалось полчаса и еще одна пара глаз, чтобы заметить, что дефисы были неправильными и их нужно было напечатать заново! (Я думаю, что terraform подумал, что «reconfigure» — это имя каталога, в котором мы хотели запустить инициализацию, которого, конечно же, не существовало. Возможно, terraform можно было бы улучшить, чтобы он называл каталог, в котором он ищет, когда сообщает об этой ошибке?)
Спасибо Microsoft за то, что всегда помогаете (нет)!
У меня была такая же ошибка, которую вы имитировали. В моем случае это была не ошибка VPN, а неправильное именование файловой системы. Я был в папке проекта. Чтобы исправить ситуацию, я создал файл.tf с помощью редактора vim с помощью команды vi aws.tf, а затем заполнил файл определенными переменными. Моя работает.
Смотрите мои прикрепленные изображения
Другая возможная причина может заключаться в использовании модулей с неверным URL-адресом.
Когда у меня было:
source = "git::ssh://git@git.companyname.com/observability.git//modules/ec2?ref=v2.0.0"
вместо того:
source = "git::ssh://git@git.companyname.com/observability.git//terraform/modules/ec2?ref=v2.0.0"
Я видел то же сообщение об ошибке, что и вы.