【问题标题】:Executing Ansible Playbook using Jenkins使用 Jenkins 执行 Ansible Playbook
【发布时间】:2017-09-16 15:03:30
【问题描述】:

我知道这里有一个相关问题:Invoke Ansible playbook in Jenkins

但这个问题在某些方面与那个问题不同:

所以我在单个服务器(EC2 实例)中安装了 Jenkins 和 Ansible。我创建了一个 playbook.yml,它将文件从这个服务器复制到另一个服务器。如果我使用 ec2-user 执行 ansible-playbook playbook.yml,这是成功的。

如果我尝试使用 Jenkins 也是如此(创建了一个项目并添加了一个构建步骤作为运行 ansible playbook 并提到了 playbook.yml 的位置并作为 sudo ec2-user 运行)。这失败并出现错误:

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 amazon-ec2 ansible


    【解决方案1】:

    Playbook 在 jenkins 用户下执行,该用户无权访问 ansible/jenkins 主机上的 /home/ec2-user/.ssh/Host_Keypair.pem 密钥以在远程服务器上进行身份验证。

    有错误信息:

    没有这样的身份:/home/ec2-user/.ssh/Host_Keypair.pem: Permission denied

    【讨论】:

    • 那么您有什么建议作为解决方案?我相信 jenkins 用户不是登录用户,如果我没记错的话,它是一个服务帐户。
    • 修复权限问题,让jenkins 用户可以读取连接远程主机所需的ssh-key。例如,将Host_Keypair.pem 复制到某处,将chown 复制为jenkins
    • 我可以将 jenkins 改成原始 pem 文件,而不是复制吗?这会是最好的方法吗?
    • 这样您将无法以ec2-user 的身份使用ssh,因为ssh 密钥应该具有0600 权限并且只能由一个用户(所有者)访问。
    • okies.. 让我试试...现在我将把 pem 文件复制到其他位置并 chown jenkins。这里应该是什么权限?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多