我在 gitlab 中有一个控制存储库,我想自动生成一个 sshkey 并通过 gitlab api(使用部署令牌)将其发送到我的存储库。
这实际上是一个我想回答的直截了当的问题。关于如何通过其 api 将 sshkey 发送到 gitlab 的木偶的(或有任何)“标准”是什么?我试过使用这个模块(https://forge.puppet.com/abrader/gms),但它不起作用。下面我解释我所做的和尝试的。
我通过转到 Settings->Repository->Deploy Tokens 生成了一个部署令牌。在这里,我得到了一个我现在保存的随机字符串。
我已经能够自动生成一个名为“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 自己来自动化它。但是,我真的很想知道是否有更简单的选择。