我正在使用Jenkins主/从设置.我希望詹金斯有一个凭据信息的"来源".密钥/密码并非遍布整个地方.
因此,我不想在Jenkins中定义我的SCM(使用来自Jenkins凭据提供程序的凭据),然后再根据作业在pom.xml/settings.xml/id_rsa.pem中定义.每个人都喜欢按照自己的方式做事,最后我们会得到密钥文件或密码的副本.迟早有人将pom推到公共仓库,我们的服务器受到了损害......
我看不到一种可维护的方法,可以将Jenkins的凭据从某个地方获取,maven release插件可以使用它们.我错过了什么?(当试图将标签推送到git时,maven发布失败
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
)
我显然可以定义一个安装在包含pem的slave上的"文件"(我可以想到几种方法)但是当我们旋转键以记住它在多个位置时,我会遇到维护问题.否则,快照工作一个月,然后发布失败,没有人能够解释为什么mvn突然无法推送到git.
(注意它只是密钥登录,没有密码)
我打算等待端口准备好,所以使用“wait_for”
- name: Wait for service to be ready
wait_for:
host: 192.168.1.70
port: 8080
Run Code Online (Sandbox Code Playgroud)
然而,它只等待 300 秒,然后失败。
TASK [Wait for service to be ready]
fatal: [localhost]: FAILED! => {"changed": false, "elapsed": 300, "msg": "Timeout when waiting for 192.168.1.70:8080"}
Run Code Online (Sandbox Code Playgroud)
所以,我添加了一个“直到”:
- name: Wait for service to be ready
wait_for:
host: 192.168.1.70
port: 8080
register: port8080
until: port8080.failed == "false"
Run Code Online (Sandbox Code Playgroud)
相反,我收到一个错误:
TASK [Wait for ssh to be ready]
fatal: [localhost]: FAILED! => {"msg": "The conditional check 'port8080.failed == \"false\"' failed. The error …Run Code Online (Sandbox Code Playgroud) 我从 boto3 开始,但意识到这也适用于 CLI。
我读到了一些问题,建议我可以像这样设置过滤器来获取带有 Production 或 Staging 名称的秘密:
res = sm.list_secrets(Filters=[
{ 'Key': 'tag-key', 'Values': ['Name'] },
{ 'Key': 'tag-value', 'Values': ['Production', 'Staging'] },
])
Run Code Online (Sandbox Code Playgroud)
但这似乎是在寻找任何带有 Name 键的东西和任何带有 Prod/Staging 值的东西(在不同的标签中),而不是 Name=Prod/Staging。
如果我在秘密上创建 2 个标记:值:项目:栏和名称:foo。然后尝试过滤项目:foo - 我得到了这个秘密。
sec.list_secrets(Filters= [{ 'Key':'tag-key','Values':['project']},{ 'Key':'tag-value','Values':['foo']}])["SecretList"][0]["Tags"]
[{'Key': 'project', 'Value': 'bar'}, {'Key': 'Name', 'Value': 'foo'}]
Run Code Online (Sandbox Code Playgroud)
或者,如果我添加“something:max”并过滤 Name 和 max :
sec.list_secrets(Filters= [{ 'Key':'tag-key','Values':['Name']},{ 'Key':'tag-value','Values':['max']}])["SecretList"][0]["Tags"]
[{'Key': 'project', 'Value': 'bar'}, {'Key': 'something', 'Value': 'max'}, {'Key': 'Name', 'Value': 'foo'}]
Run Code Online (Sandbox Code Playgroud)
如果我创建第二个秘密以使其更加明显,CLI 上也会发生同样的情况。两者都有一个项目键和一个值 max :
aws secretsmanager list-secrets --filters Key=tag-key,Values=project Key=tag-value,Values=max …Run Code Online (Sandbox Code Playgroud) 查看 的手册页list-secrets,没有显示删除或不删除的特殊选项。它不列出已删除的机密。但是,输出定义包含“DeletedDate”时间戳。
ListSecrets API不显示已删除机密的任何选项。但响应再次包含删除日期。
但是,在AWS控制台中我可以看到已删除的秘密。快速浏览一下开发工具,我可以看到我对 Secrets Manager 端点的请求负载如下所示:
{
"method": "POST",
"path": "/",
"headers": {
"Content-Type": "application/x-amz-json-1.1",
"X-Amz-Target": "secretsmanager.ListSecrets",
"X-Amz-Date": "Fri, 27 Nov 2020 13:19:06 GMT"
},
"operation": "ListSecrets",
"content": {
"MaxResults": 100,
"IncludeDeleted": true,
"SortOrder": "asc"
},
"region": "eu-west-2"
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以传递"IncludeDeleted": true到 CLI 吗?
这是一个错误吗?我该去哪里举报?(我知道 github 上有一个 cloudformation bug 跟踪器,我想 Secretsmanager 会有类似的东西..?)