我正在尝试使用Ansible自动化我的部署。一切正常。但是当我运行ansible-playbook ./test-playbook.yml -v
时,使用詹金斯,我会收到以下消息:
[Pipeline] sh
+ ansible-playbook ./test-playbook.yml -v
No config file found; using defaults
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
ERROR! the role 'spring' was not found in /var/lib/jenkins/workspace/g_root_web-provisionning_develop/roles:/var/lib/jenkins/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/var/lib/jenkins/workspace/g_root_web-provisionning_develop
The error appears to be in '/var/lib/jenkins/workspace/g_root_web-provisionning_develop/test-playbook.yml': line 11, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
roles:
- spring
^ here
当我直接在系统上运行同一命令时,它可以正常工作。详细模式显示未找到配置文件。有人可以帮我吗
致谢
答案 0 :(得分:0)
您正在使用清单来列出Ansible可以使用的服务器。通常,人们将自己的清单保留在git本地(例如-i myinv.yaml
),但在您的情况下,您似乎正在使用全局(系统或用户)清单。它驻留在您的计算机上,并且没有存储在git repo中,因此,您的CI无法访问它。
找到您的计算机上正在使用的清单文件(ansible-playbook ... -vv
),然后将其复制到CI(坏主意)或将其合并到git repo中。在以后的情况下,您需要显式提供清单(-i
)。
其他说明:敏感信息(密码,令牌等)要小心-通常,您不想将它们存储在git repo中的文件中。