我试图将ansible aws_ec2动态库存集成到Jenkins中,但我遇到了这样的问题:
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凭据的“秘密文件”存储中。
我的管道是这样的:
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中,但结果是一样的。
发布于 2022-04-15 15:11:53
这是因为Jenkins似乎生成了一个包含空格的文件名,因此您需要引用该$PRIVATE shell变量,将其作为--private-key的一个参数来表示
由于Groovy使用的现有"字符串文字,您需要转义引号字符:
sh "ansible-playbook -i aws_ec2.yaml ping-pb.yaml --private-key \"$PRIVATE\" -e 'ansible_ssh_user=ec2-user'"或者,您可以使用Groovy的替代语法
sh """ansible-playbook -i aws_ec2.yaml ping-pb.yaml --private-key "$PRIVATE" -e 'ansible_ssh_user=ec2-user'"""您需要特别使用",因为'$PRIVATE'不会展开shell变量
https://stackoverflow.com/questions/71868957
复制相似问题