Terraform 如何从命令行获取Gitlab runner注册令牌?

Terraform 如何从命令行获取Gitlab runner注册令牌?,terraform,gitlab-ci,Terraform,Gitlab Ci,我正在尝试部署一个Gitlab实例,并准备使用Terraform运行。脚本创建Gitlab和Runner没有任何问题,但是我不知道如何在创建之后自动注册Runner 有没有办法从命令行获取注册令牌?如果可能的话,我可以使用Terraform注册调用外部数据源。响应包含runners\u令牌键。您可以使用它自动获取任何项目的运行者令牌 然后,您可以通过几种方式使用它。一种方法是让您的runner注册脚本获取runner令牌本身,如以下示例所示: curl--fail--silent--header

我正在尝试部署一个Gitlab实例,并准备使用Terraform运行。脚本创建Gitlab和Runner没有任何问题,但是我不知道如何在创建之后自动注册Runner

有没有办法从命令行获取注册令牌?如果可能的话,我可以使用Terraform注册调用外部数据源。

响应包含
runners\u令牌
键。您可以使用它自动获取任何项目的运行者令牌

然后,您可以通过几种方式使用它。一种方法是让您的runner注册脚本获取runner令牌本身,如以下示例所示:

curl--fail--silent--header“Private-Token:${GITLAB_-API_-Token}”https://$GITLAB_-URL/API/v4/projects/${PROJECT}”
或者,您可以使用从运行Terraform的任何对象获取此文件,然后将其注入运行注册脚本的对象,例如模板文件:

data "gitlab_project" "example" {
  id = 30
}

locals {
  runner_config = {
    runner_token = data.gitlab_project.example.runners_token
  }
}

output "example" {
  value = templatefile("${path.module}/register-runners.sh.tpl", local.runner_config)
}

有没有一种方法可以让共享的跑步者做到这一点,而不是特定于项目?不容易。讨论了将其作为功能请求添加到API中(或者允许通过个人访问令牌进行注册),但未对其进行处理或排序。说明如何以编程方式获取共享运行者注册令牌,但需要使用Rails控制台读取值。它也可以在数据库中被发现是加密的,但我不知道有什么好方法可以在不访问应用程序服务器的情况下进行反向操作,所以您也可以使用控制台。我个人将共享的runner注册令牌放在我们的秘密存储(在我们的例子中是SSM参数存储)中,并将其保留在那里。当我需要旋转秘密时,我必须手动进行旋转,但是旋转也是手动触发的,所以没有那么糟糕。谢谢——我不清楚,但是相同的令牌可以用于安装多个runner实例吗?我相信每个实例都需要一个唯一的令牌——不是这样吗?我正在尝试在新配置的VM上自动安装1个或多个运行程序。这不是唯一的否。它只是实例/组/项目的随机生成字符串,如果机密被泄露,您可以重置它(如果您有权访问机密和Gitlab的网络访问权限,那么您可以模拟一个运行者,从而获得对源代码的访问权),但在其他方面是长期存在的。