Функция Terraform GCP Cloud с использованием Github и Cloud Source Repository - PullRequest
1 голос
/ 05 августа 2020

Я новичок в terraform Я хочу создать облачную функцию Google с помощью Terraform, но хочу получить исходный код из Github.

Мне удалось заархивировать функцию и скопировать ее в облачное хранилище, используя Terraform, но мне не нравится этот рабочий процесс, так как мне нужно запускать скрипт, чтобы начать работу. Я лучше просто сделаю PR на Github и увижу новый код в GCP.

Я уже настроил репозитории Google Cloud Source Repositories на источник из моего Github.

Terraform do c для использования Аргумент source_repository мне не понятен. Я бы просто взял исходный код из HEAD в главной ветке.

Я просто хотел бы знать, как указать аргумент «source_repository» в этом случае.

Мое облако URL-адрес исходного репозитория: https://source.cloud.google.com/projectName/github_offiecDomain_gitRepoName

Мой сценарий терраформирования облачной функции выглядит как

resource "google_cloudfunctions_function" "js_function" {
source_repository  {
  url = "https://source.cloud.google.com/projectName/github_offiecDomain_gitRepoName"
   }
}

Когда I terraform apply возвращает ошибку

google_cloudfunctions_function.js_function: Creating...

    Error: googleapi: Error 400: The request has errors, badRequest
    
      on main.tf line 89, in resource "google_cloudfunctions_function" "js_function":
      89: resource "google_cloudfunctions_function" "js_function" {

ИЗМЕНИТЬ При перемещении моего уровня журнала на трассировку

Вот что у меня есть

2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: ff
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: {
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:   "error": {
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:     "code": 400,
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:     "message": "The request has errors",
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:     "errors": [
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:       {
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:         "message": "The request has errors",
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:         "domain": "global",
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:         "reason": "badRequest"
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:       }
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:     ],
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:     "status": "INVALID_ARGUMENT"
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:   }
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: }

Я полагаю, что мой аргумент URL недействителен. Любые лиды, как я могу написать свой URL?

Ответы [ 3 ]

0 голосов
/ 05 августа 2020

В вашем сценарии Terraform для облачной функции отсутствует знак равенства, который вызывает ошибку НЕВЕРНЫЙ АРГУМЕНТ. Не могли бы вы попробовать следующий код:

resource "google_cloudfunctions_function" "js_function" {
source_repository = {
  url = "https://source.cloud.google.com/projectName/github_offiecDomain_gitRepoName"
   }
}

Также обратите внимание на Официальную документацию Terraform указывает форматировать значение url как https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*

Чтобы заставить это работать, предположим, что ваш исходный код и ваш репозиторий содержат следующую информацию:

    project: "YOUR PROJECT NAME"
    repo:"YOUR REPOSITORY"
    branch: master
    directory_in_repo_with_src: src/functions/bin

Тогда вы необходимо будет указать следующий URL-адрес:

source_repository = {
  url = https://source.developers.google.com/projects/YOUR_PROJECT/repos/YOUR REPOSITORY/master/paths/src/functions/bin
}

Пожалуйста, дайте мне знать, работает ли это для вас.

0 голосов
/ 06 сентября 2020

URL-адрес очень конкретный c:

Для ссылки на перемещаемый псевдоним (ветвь): https://source.developers.google.com/projects/* / repos / * / moveable-aliases / * / paths / * В частности, для обращения к HEAD используйте главный подвижный псевдоним. быть на пути.

См. https://cloud.google.com/functions/docs/reference/rest/v1/projects.locations.functions#SourceRepository

0 голосов
/ 05 августа 2020

Нет возможности развернуть Cloud Fuction непосредственно с GitHub. Однако вы можете клонировать репозиторий в Google Cloud Source Repository, а затем развернуть облачную функцию оттуда

Из-за ошибки: облачная функция имеет некоторые обязательные параметры, такие как entry_point event_trigger

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