gpt4 book ai didi

ansible - 根据日志中的数据通过 Ansible 启动 JBoss 服务器时无法使用 wait_for

转载 作者:行者123 更新时间:2023-12-04 08:46:17 28 4
gpt4 key购买 nike

我尝试通过 Ansible 启动 JBoss 服务并使用 wai_for 模块等待 JBoss 启动。但是,JBoss 服务启动了,但是,wait_for 仍在进行中,直到超时然后出现错误。下面是我的代码

- name: Get the contents of the last line from log
command: "tail -n 1 /home/nityo/application.log"
register: tail_output

- name: Create a variable with a meaningful name, just for clarity
set_fact:
last_line_of_the_log_file: "{{ tail_output.stdout }}"

- name: JBoss service starting
service:
name: "jboss.service"
state: started
become: yes
become_user: root

- name:Wait for server started
wait_for:
path: "//home/nityo/application.log"
search_regex: "{{ last_line_of_the_log_file }}\r(.*\r)*.*JBoss EAP.*started.*"
timeout: 600

除此之外,我们可以将所有这些组合成一个任务而不是多个任务
示例输出日志
2020-10-11 01:13:42,009 INFO  [org.jboss.as] JBoss EAP 7.2 (WildFly Core) running in 100281ms - service to be running
2020-10-11 01:13:42,005 INFO [org.jboss.as] processing data
2020-10-11 01:13:43,009 INFO [org.jboss.as] JBoss EAP 7.2 (WildFly Core) stopped in 100281ms - service to be stopped
-
-
-
-
-
-
-
2020-10-11 01:13:48,009 INFO [org.jboss.as] JBoss EAP 7.2 (WildFly Core) started in 100281ms - service to be started

最佳答案

您在 last_line_of_the_log_file 中存储的内容变量可能不会在 wait_for 的默认时间间隔内匹配。模块在完成此任务时进行检查。
通过解析日志文件检查服务状态可能很棘手。但是我认为最干净的方法是匹配模式 JBoss EAP.*started.*在日志文件中。但是,为了使其可靠地工作,最好在启动服务之前从一个空的日志文件开始。

# Backup the log file with date/time stamp
- shell: cat /home/nityo/application.log >> /home/nityo/application-$(date %b-%d-%H-%M).log

# Empty the file contents before starting service
- command: truncate -s 0 /home/nityo/application.log

- wait_for:
path: "/home/nityo/application.log"
search_regex: "JBoss EAP.*started.*"
timeout: 600
如果日志在给定的时间范围内生成不同,则解析日志文件可能会失败。您可以调整时间、重试次数和搜索模式以获得更一致的结果。
更新:
最好等待一段时间以超出 tail 获取的默认行 (10)。命令,以避免匹配以前的启动。然后使用 egrep :
# Pause and wait for logs to roll beyond 10 lines fetched by 'tail'
- pause:
seconds: 30

- shell: tail /home/nityo/application.log | grep -e "JBoss EAP.*started"
register: file_tail
until: file_tail is success
# use appropriate values as per the rate of logging
retries: 30
delay: 20

关于ansible - 根据日志中的数据通过 Ansible 启动 JBoss 服务器时无法使用 wait_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64302459/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com