我是云计算的初学者。我有一个GCP账户,里面有多个项目,我有gcf。现在,我从控制台一次又一次地为每个项目单独部署相同的功能。那么,有没有什么方法可以通过使用terraform或任何其他平台循环projectID,在所有项目中部署一个云函数?
您可以在模块中定义您的函数以及在每个项目中重复的所有内容,然后在每个项目定义中使用该模块。要做到这一点,您需要在地形配置中明确定义每个项目
如果您可以利用其他地形特征,例如跟踪状态、将基础设施作为代码、透明性、可重用性,并增加基础设施的复杂性,而不会让一切变得混乱,那么这可能是值得做的。
否则,如果你不打算做任何复杂的事情,而是只需要在多个项目上部署相同的功能,并且在可观察的未来没有计划更复杂的东西,那么使用GCP CLI工具的Bash脚本就是你的瑞士刀。您可以将其作为参考进行检查:https://cloud.google.com/functions/docs/quickstart
假设你的函数代码在谷歌云源存储库中,并且你只想在所有项目中部署相同的代码,你可以创建一个简单的BASH脚本来实现这一点。
首先,您需要恢复所有项目:
gcloud projects list --format 'value(projectId)'
然后,对于每个项目,部署函数(我假设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
要做任何更喜欢的事情,请检查来自swip的另一个答案。