Плагины Terraform вызывают проблемы с git - PullRequest
1 голос
/ 19 марта 2019

Я работал в лаборатории 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 и вуаля, больше никаких проблем.Очень ценится!

1 Ответ

1 голос
/ 19 марта 2019

Я всегда использовал файл .gitignore, сгенерированный gitignore.io / api / terraform - попробуйте и посмотрите, поможет ли это.

Убедитесь, что вы зафиксировали и нажали обновленный файл .gitignore, прежде чем пытаться git status и сделать отдельный коммит для остальных ваших файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...