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