微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Puppet R10k:将deploykey放入control-repo

如何解决Puppet R10k:将deploykey放入control-repo

我在gitlab中有一个控制仓库,我想自动生成一个sshkey并通过gitlab api(使用Deploy Token)将其发送到我的存储库中。

这实际上是我想回答的简单问题。关于如何通过api将sshkey发送到gitlab的木偶有什么“(标准)”?我尝试使用此模块(https://forge.puppet.com/abrader/gms),但它不起作用。下面我将解释我已经做过的事情和尝试过的事情。

我已经通过转到“设置”->“存储库”->“部署令牌”生成一个部署令牌。在这里,我得到了一个现在保存的随机字符串。

我已经能够自动生成一个名为“ manager-deploy-key”的密钥。我使用此模块生成密钥:https://forge.puppet.com/puppet/ssh_keygen

ssh-keygen代码

ssh_keygen { 'root':
  bits     => 4096,type     => 'rsa',filename => '/root/.ssh/manager-deploy-key',}

然后,我想使用以下模块:“ https://forge.puppet.com/abrader/gms”将新生成的密钥作为部署密钥自动发送到我的仓库。

应发送deploykey

git_deploy_key { 'add_deploy_key_to_puppet_control':
  ensure       => present,name         => $::fqdn,path         => '/root/.ssh/manager-deploy-key.pub',token        => 'DEPLOY_TOKEN_HERE',project_name => 'user/control-repo',server_url   => 'https://gitlab.com',provider     => 'gitlab',}

这失败了,因此我选择通过在命令中添加--debug进行调试->“ puppet apply --debug /file/test.pp”

查看调试信息,对GET请求的响应是

"{\"error\":\"API V3 is no longer supported. Use API V4 instead.\"}"

该模块无法正常工作...因此,我现在要使用curl来自动执行此操作。但是,我真的很想知道是否还有更简单的选择。

解决方法

看起来好像唯一的方法实际上是使用curl,因为不推荐使用该模块。如果有人需要示例,我已经为其设置了命令。

curl -H "PRIVATE-TOKEN: ${git_api_token}" -H "Content-Type: application/json" \
    -X POST -d "{\"title\":\"${git_ssl_keyname}\",\"key\":\"${sslpub}\",\"can_push\":\"true\"}"     \
    "https://gitlab.com/api/v4/projects/${project_id}/deploy_keys"

git_api_token 是您在帐户上生成的令牌。我无法使用可以在项目中生成的部署令牌来完成这项工作。

git_ssl_keyname 是您的ssh密钥的名称。这可以是您想要的任何东西。

sslpub 是您要导入到项目中的实际密钥。

project_id 是您的项目的ID。如果您访问主项目页面,它将位于顶部附近。

如果您想了解有关gitlabs访问令牌api的更多信息,请访问https://docs.gitlab.com/ee/api/deploy_keys.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。