我正在尝试使用Ansible重新启动Jenkins服务:
- name: Restart Jenkins to make the plugin data available
service: name=jenkins state=restarted
- name: Wait for Jenkins to restart
wait_for:
host=localhost
port=8080
delay=20
timeout=300
- name: Install Jenkins plugins
command:
java -jar {{ jenkins_cli_jar }} -s {{ jenkins_dashboard_url }} install-plugin {{ item }}
creates=/var/lib/jenkins/plugins/{{ item }}.jpi
with_items: jenkins_plugins
但是在第一次运行时,第三个任务会抛出大量的Java错误,包括: Suppressed: java.io.IOException: Server returned HTTP response code: 503 for URL
,这让我觉得Web服务器(完全由Jenkins处理)并没有准备就绪,它会重新加载,而且它会重新加载它工作良好 . 但我不确定访问该页面是启动服务器的原因,还是什么 .
所以我想我需要多次卷曲直到http代码为200?还有其他方法吗?
无论哪种方式,我该怎么做?
你通常如何重启詹金斯?
5 回答
使用URI模块http://docs.ansible.com/ansible/uri_module.html
我用curl Ansible的
until
解决了这个问题,我刚学到了这个问题 . 它将请求页面,直到http状态代码为200 OK .我发现Jenkins总是返回503响应(服务不可用),但它没有准备就绪 . 因此,最可靠的方法是单独隔离和检查响应代码头 .
稍微更准确的@ChocoDeveloper版本的答案,使用此版本,您可以检查特定的响应代码,而不是从HTTP响应中搜索原始标准输出
也许这会帮助别人,我试图为不同的服务实现类似的东西 . 我遇到的问题是
result.find("200 OK") != -1
或result.status == 200
在我的案例中不起作用 .这对我有用: