首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >aws_ec2无法识别的参数:机密文件错误

aws_ec2无法识别的参数:机密文件错误
EN

Stack Overflow用户
提问于 2022-04-14 08:54:15
回答 1查看 275关注 0票数 0

我试图将ansible aws_ec2动态库存集成到Jenkins中,但我遇到了这样的问题:

代码语言:javascript
复制
ansible-playbook -i aws_ec2.yaml ping-pb.yaml --private-key **** -e ansible_ssh_user=ec2-user
usage: ansible-playbook [-h] [--version] [-v] [-k]
                        [--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER]
                                               ---
                        [--list-tags] [--step] [--start-at-task START_AT_TASK]
                        playbook [playbook ...]
ansible-playbook: error: unrecognized arguments: provisioning configuration@tmp/secretFiles/bbe6eeff-027e-480b-ae88/keyforjenk010422.pem

我将我的.pem文件添加到Jenkins凭据的“秘密文件”存储中。

我的管道是这样的:

代码语言:javascript
复制
   steps { 
withCredentials([file(credentialsId: 'rmp-pem', variable: 'PRIVATE')]) { 
dir('Ansible') {
  sh "ansible-playbook -i aws_ec2.yaml ping-pb.yaml --private-key $PRIVATE -e 'ansible_ssh_user=ec2-user'" } } } } 

当我不使用凭据,但将文件存储在我的Github回购,它工作良好,所以问题是..在詹金斯?我还试图将我的私钥作为sshUserPrivateKey存储在Jenkins中,但结果是一样的。

EN

回答 1

Stack Overflow用户

发布于 2022-04-15 15:11:53

这是因为Jenkins似乎生成了一个包含空格的文件名,因此您需要引用该$PRIVATE shell变量,将其作为--private-key的一个参数来表示

由于Groovy使用的现有"字符串文字,您需要转义引号字符:

代码语言:javascript
复制
sh "ansible-playbook -i aws_ec2.yaml ping-pb.yaml --private-key \"$PRIVATE\" -e 'ansible_ssh_user=ec2-user'"

或者,您可以使用Groovy的替代语法

代码语言:javascript
复制
sh """ansible-playbook -i aws_ec2.yaml ping-pb.yaml --private-key "$PRIVATE" -e 'ansible_ssh_user=ec2-user'"""

您需要特别使用",因为'$PRIVATE'不会展开shell变量

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71868957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档