我知道有一個相關的問題在這裏: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