我知道有一个相关的问题在这里:Invoke Ansible playbook in Jenkins执行Ansible剧本使用詹金斯
但这个问题是,在某些观点不同:
所以我詹金斯和Ansible安装在单个服务器(EC2实例)。我创建了一个playbook.yml文件,将文件从该服务器复制到另一台服务器。这是成功的,如果我使用ec2用户做一个剧本playbook.yml。
如果我尝试使用Jenkins(创建一个项目并添加构建步骤作为运行剧本,并提及playbook.yml的位置并以sudo ec2用户身份运行),也是如此。这是与错误而失败:
fatal: [172.xx.xx.xx]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: no such identity: /home/ec2-user/.ssh/Host_Keypair.pem: Permission denied\r\nPermission denied (publickey).\r\n", "unreachable": true}
to retry, use: --limit @/var/lib/jenkins/workspace/Ansible/copy.retr
playbook.yml:
---
- hosts: 172.xx.xx.xx
remote_user: ec2-user
become: yes
become_method: sudo
tasks:
- copy:
src: /var/lib/jenkins/workspace/Ansible/myfile.conf
dest: /etc/myfile.conf
owner: ec2-user
group: ec2-user
mode: 0644
我被困在这,不能够移动到下一个步骤不执行此操作。任何人都可以请帮我了解我失踪的其他配置(可能在Jenkins方面)。任何帮助将非常感激。
所以,你有什么建议的解决方案吗?我相信jenkins用户不是登录用户,而是我的服务帐户,如果我没有错。 – serverstackqns
修复权限问题,所以'jenkins'用户可以读取连接远程主机所需的ssh-key。例如,在某处复制'Host_Keypair.pem',将'chown'复制为'jenkins'。 –
而不是复制,我可以将詹金斯chown到原始的pem文件吗?这是最好的方式吗? – serverstackqns