Я работал в лаборатории LinuxAcademy для terraform, используя док-контейнеры, и все прошло нормально.Я поместил весь свой код в частное хранилище, чтобы я мог сослаться на него и перенести его на свою домашнюю рабочую станцию с серверов linuxacademy lab.
У меня возникла проблема после создания корзины S3используя скрипт terraform, это довольно простой код:
# Create random id
resource "random_id" "tf_bucket_id" {
byte_length = 2
}
# Create the bucket
resource "aws_s3_bucket" "tf_code" {
bucket = "${var.project_name}-${random_id.tf_bucket_id.dec}"
acl = "private"
force_destroy = true
tags {
Name = "tf_bucket"
}
}
Если я запускаю terraform init, он загружает плагины:
Initializing provider plugins...
- Checking for available provider plugins on https://releases.hashicorp.com...
- Downloading plugin for provider "random" (2.0.0)...
- Downloading plugin for provider "aws" (2.2.0)...
И приложение terraform запускает код успешно:
random_id.tf_bucket_id: Creating...
b64: "" => "<computed>"
b64_std: "" => "<computed>"
b64_url: "" => "<computed>"
byte_length: "" => "2"
dec: "" => "<computed>"
hex: "" => "<computed>"
random_id.tf_bucket_id: Creation complete after 0s (ID: 3Ok)
aws_s3_bucket.tf_code: Creating...
acceleration_status: "" => "<computed>"
acl: "" => "private"
arn: "" => "<computed>"
bucket: "" => "la-terraform-56553"
bucket_domain_name: "" => "<computed>"
bucket_regional_domain_name: "" => "<computed>"
force_destroy: "" => "true"
hosted_zone_id: "" => "<computed>"
region: "" => "<computed>"
request_payer: "" => "<computed>"
tags.%: "" => "1"
tags.Name: "" => "tf_bucket"
versioning.#: "" => "<computed>"
website_domain: "" => "<computed>"
website_endpoint: "" => "<computed>"
aws_s3_bucket.tf_code: Creation complete after 5s (ID: la-terraform-56553)
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Outputs:
bucket_name = la-terraform-56553
Проблема в том, что если я пойду зафиксировать изменения, git захочет зафиксировать каталог .terraform / plugins вместе с самими плагинами.Но плагины слишком велики для обработки git, поэтому я получаю такую ошибку:
terraform@foobarserver:~/repos/private/terraform$ git push
Counting objects: 13, done.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (13/13), 28.65 MiB | 1.68 MiB/s, done.
Total 13 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: c7cf151dfa233bfff86c3191eb63b5d9
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File terraform/aws/LA_project/storage/.terraform/plugins/linux_amd64/terraform-provider-aws_v2.2.0_x4 is 111.33 MB; this exceeds GitHub's file size limit of 100.00 MB
To git@github.com:foobaruser/private.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@github.com:foobaruser/private.git'
Я не могу понять, как заставить git игнорировать плагины.Я попытался добавить файл gitignore с явно указанным каталогом, но этот каталог все еще появляется, когда я запускаю «git status».Я рву волосы, потому что у меня нет этой проблемы на работе, где мы используем bitbucket, если terraform автоматически загружает плагины, подобные этому, как другие люди используют terraform в git без большого количества больших файлов плагинов везде?
edit Большое спасибо комментатору ниже, так или иначе, я пропустил это во всем процессе установки и обновления terraform.Установил стоковый .gitignore файл в моем корневом каталоге terraform и вуаля, больше никаких проблем.Очень ценится!