Jenkins流水线执行失败
Jenkins流水线执行失败一、背景本人用JenKins+ansible搭建了一个流水线发包流程,结果发现一直卡在pipeline中的某一步发布不成功。二、问题排查1、打开JenKins控制台查看日志发现一直卡在了 "TASK [Gathering Facts] ***********************"这一步2、查找资料得知这是ansible用setup模块默认自动执行的一个task,作用
Jenkins流水线执行失败
一、背景
本人用JenKins+ansible搭建了一个流水线发包流程,结果发现一直卡在pipeline中的某一步发布不成功。
二、问题排查
1、打开JenKins控制台查看日志
发现一直卡在了 "TASK [Gathering Facts] ***********************"这一步
2、查找资料得知这是ansible用setup模块默认自动执行的一个task,作用是获取目标机(客户端)上的基本信息,如:操作系统、ipv4等。
3、首先考虑了是不是ansible连接出问题。查看了ansible中的hosts(自己新定义的),发现用户、密码、IP地址、用户组都没有问题,又看了playbook 格式、配置也都没有问题。
4、然后用ssh登录目标机、ping目标机地址都能成功,说明是可以连通的。那就只能是"Gathering Facts"这个TASK在目标机上 一直没有执行成功。
5、在ansible机子上使用ansible -i XXX XXX -m setup -a 'filter=ansible_all_ipv4_addresses’命令,一直卡住不动。登录到目标机上使用ps -ef |grep ansible查询进程,发现有AnsiballZ_setup.py的进程。
三、原因分析
根据问题排查发现是ansible中的"Gathering Facts"这task一直在获取目标机上的信息,目标机因为文件挂载系统出错的原因一直没有返回内容。
四、修改bug
在playbook中添加一个配置gather_facts: false 关闭"Gathering Facts"这个任务就能正常执行了。
PS:因为我只是Jenkins流水线用ansible重启服务,用不到目标机上的信息,所以没有找目标机上的具体原因直接关掉了那个任务。可以用strace -p 命令追踪AnsiballZ_setup.py这个进程的具体报错原因,并进行更改。
更多推荐
所有评论(0)