如何解决使用 Gitlab 运行 ansible 时出现 `[Errno 13] 权限被拒绝:'/root/.ansible'`?

如何解决使用 Gitlab 运行 ansible 时出现 `[Errno 13] 权限被拒绝:'/root/.ansible'`?

目的

目的是使用 Ansible 和 Gitlab 在构建通过后部署软件。

问题

ansible-playbook playbook.yml -u root --private-key=key.pem

部署软件,但

sudo -u gitlab-runner ansible-playbook playbook.yml -u root --private-key=key.pem

结果是:

PLAY ***************************************************************************

TASK [setup] *******************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 13] Permission denied: '/root/.ansible'
fatal: [system.example.com]: FAILED! => {"failed": true, "stdout": ""}

NO MORE HOSTS LEFT *************************************************************

PLAY RECAP *********************************************************************
system.example.com        : ok=0    changed=0    unreachable=0    failed=1

讨论

  1. 运行ansible-playbook --help显示这-u是 remote_user。由于已将其设置为,root因此不会发生此问题。

  2. 登录gitlab-runner并随后运行ansible-playbook playbook.yml -u root --private-key=key.pem成功

答案1

原因

gitlab-runner问题是由于用户主目录中的已知主机文件中省略了主机而导致的

解决方案

  1. 登录为gitlab-runneriesudo su - gitlab-runner
  2. 运行剧本,即ansible-playbook playbook.yml -u root --private-key=key.pem
  3. yes如果Are you sure you want to continue connecting (yes/no)?出现则输入
  4. 点击retrygitlab 中的按钮重新启动构建

相关内容