我在 linux 中使用 ansible,我正在实现一个调用某些角色的剧本。
playbook.yml
---
- hosts: my_hosts_group
gather_facts: no
roles:
- start-app
- run-app
- stop-app
start-app
- name: Start app
command: sh startApp.sh
run-app
- name: Run app
command: sh runApp.sh
stop-app
- name: Stop app
command: sh stopApp.sh
发生的事情是,如果应用程序已经启动,当我运行角色
start-app
时,我收到以下输出错误:
“服务器实例可能已经在运行”。
在此之后剧本的执行失败,它停止不执行其他 2 个角色(
run-app
和 stop-app
)。
我想做一些改变,在 ansible 方面(不是 sh):
start-app
角色没有失败,它应该像往常一样继续下一个角色(正常行为)。start-app
角色失败,出于任何其他原因,它应该失败并且剧本执行应该停止(正常行为)。到目前为止我所做的是改变启动应用程序角色中的一些东西:
- name: Start app
ignore_errors: yes
command: sh startApp.sh
register: start_result
failed_when: "'instance of the server may already be running' not in start_result.stdout"
但我不确定这是否正确。
现在我得到了这个输出:
task: [start-app: Start App]
changed: [host1]
changed: [host2]
你能帮我找到更好的方法吗?