我正在尝试使用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处理)还没准备好.有时当我使用我的浏览器访问Jenkins仪表板时,它表示Jenkins尚未就绪,并且它会重新加载,而且确实如此,它工作正常.但我不确定访问该页面是启动服务器的原因,还是什么.
所以我想我需要多次卷曲直到http代码为200?还有其他方法吗?
无论哪种方式,我该怎么做?
你通常如何重启詹金斯?
我用curl + Ansible解决了这个问题until
,我刚学到了这个问题.它将请求页面,直到http状态代码为200 OK.
- name: Wait untils Jenkins web API is available shell: curl --head --silent http://localhost:8080/cli/ register: result until: result.stdout.find("200 OK") != -1 retries: 12 delay: 5
使用URI模块http://docs.ansible.com/ansible/uri_module.html
- name: "wait for ABC to come up" uri: url: "http://127.0.0.1:8080/ABC" status_code: 200 register: result until: result.status == 200 retries: 60 delay: 1