我在gitlab中有一个控件-repo,我想通过gitlab (使用部署令牌)自动生成一个sshkey并将它发送到我的存储库。
这其实是我想要回答的一个直截了当的问题。关于如何通过api向gitlab发送sshkey,木偶的“标准”是什么?我试过使用这个模块(https://forge.puppet.com/abrader/gms),但它做了一些工作。下面我解释一下我所做的和尝试过的事情。
通过转到Settings->Repository->Deploy,我生成了一个部署令牌。在这里,我得到了一个随机字符串,我现在保存了。
我已经能够自动生成一个名为“manager-deploy”的密钥。我使用这个模块生成密钥: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“自动将新生成的密钥作为部署密钥发送到repo。
应该发送部署密钥
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',
}此操作失败,因此我选择调试,方法是在命令中添加--调试-->“傀儡应用--调试/file/test.pp”
查看调试信息,对GET请求的响应是
"{\"error\":\"API V3 is no longer supported. Use API V4 instead.\"}"模块不工作..。因此,我现在要使用curl来自动实现这一点。然而,我真的想知道是否有更简单的选择。
发布于 2020-11-21 18:08:19
似乎唯一的办法是真正使用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
https://stackoverflow.com/questions/64634583
复制相似问题