是否可以在多个项目中部署一个Google Cloud功能?

时间:2020-09-15 03:54:42

标签: node.js google-cloud-platform automation google-cloud-functions terraform

我是云计算的初学者。我有一个包含多个项目的GCP帐户,我有一个gcf。现在我要从控制台为每个项目一次又一次地部署相同的功能。那么我有什么方法可以部署只需使用terraform或任何其他平台循环projectID,即可在所有项目中使用一种云功能?

2 个答案:

答案 0 :(得分:1)

您可以在模块的每个项目中定义函数和所有重复的内容,然后在每个项目定义中使用此模块。为此,您需要在terraform配置中显式定义每个项目。
如果您可以利用其他地形特征,例如跟踪状态,将基础结构保持为代码,具有透明性,可重用性,并增加了基础结构的复杂性,而不会引起任何混乱。

否则,如果您不打算做任何复杂的事情,而是要做的全部工作都将相同的功能部署到多个项目中,并且在可观察的未来没有计划任何更复杂的事情,那么使用GCP CLI工具编写Bash脚本就是您的理想选择。您可以将其作为参考:https://cloud.google.com/functions/docs/quickstart

答案 1 :(得分:0)

假设您的功能代码在Google Cloud Source Repositories中,并且只想在所有项目中部署相同的代码,则可以创建一个简单的BASH脚本来实现。

首先,您需要恢复所有拥有的项目:

gcloud projects list --format 'value(projectId)'

然后,对于每个项目,deploy the function(我假设使用Nodejs 12和HTTP触发器,但请在方便时进行编辑):

for project in $(gcloud projects list --format 'value(projectId)');
do gcloud functions deploy <FUNCTION_NAME> \
  --source https://source.developers.google.com/projects/<PROJECT_ID>/repos/<REPOSITORY_ID>/ \
  --runtime nodejs12 \
  --trigger-http \
  --project $project;
done

要进行更高级的操作,请选中the other answer from wisp