目标
目的是在构建通过后使用 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
讨论
运行
ansible-playbook --help
显示那-u
是 remote_user。由于这是设置为root
不应该发生的问题。登录
gitlab-runner
并随后运行ansible-playbook playbook.yml -u root --private-key=key.pem
成功
原因
导致问题的原因是主机从驻留在
gitlab-runner
用户主目录中的已知主机文件中省略解决方案
gitlab-runner
,即sudo su - gitlab-runner
ansible-playbook playbook.yml -u root --private-key=key.pem
yes
如果Are you sure you want to continue connecting (yes/no)?
出现则输入retry
gitlab 中的按钮以重新启动构建