Ansible 可拆卸日志存储装置

Ansible 可拆卸日志存储装置,ansible,logstash,Ansible,Logstash,我正在尝试在RHEL7上使用Ansible安装Logstash。 安装后,我无法启动日志存储服务。我获取服务未找到错误。我联机搜索并找到以下命令 /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd 之后,logstash服务启动 我在systemd命令上方的剧本中做了如下操作。但它不是幂等的。第一个任务每次都在运行。 我这里有两个问题。 1.除了使用shell,还有什么方法可以实现这一点吗?

我正在尝试在RHEL7上使用Ansible安装Logstash。 安装后,我无法启动日志存储服务。我获取服务未找到错误。我联机搜索并找到以下命令

/usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
之后,logstash服务启动

我在systemd命令上方的剧本中做了如下操作。但它不是幂等的。第一个任务每次都在运行。 我这里有两个问题。 1.除了使用shell,还有什么方法可以实现这一点吗? 2.什么时候我可以在这个任务中设置条件使它幂等。如果我检查服务状态并将状态设置为when条件,那么我需要在末尾再次写入,以确保状态重复任务。 或者,我只需要在第一次在此服务器上运行此命令时才运行它。可能吗? 请给我一些建议

    - name: generate logstash.service file for systemd
      shell: /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd

    - name: Enable and restart logstash.service
      systemd:
       name: logstash.service
       enabled: yes
       state: restarted
如果您想执行一些脚本,可以使用shell或命令。否则,您可以自己生成systemd服务

您不需要在何时这样做,您可以在shell任务中使用creates关键字

假设您的单位文件是在/etc/systemd/system/logstash.service中创建的

你应该把你的第一个任务写成

 - name: generate logstash.service file for systemd
   shell: /usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
   creates: /etc/systemd/system/logstash.service
如果ansible下次发现此文件存在,它将不会再次运行脚本


另一种方法是模板/etc/logstash/startup.options,并仅在模板已更改的情况下运行生成服务任务。

是否有用于/usr/share/logstash/bin/system安装的ansible模块,而不是使用shellcommand@smily我不这么认为。如果您试图使用ansible部署ELK stack,您可能需要检查ansible Galaxy是否存在现有角色,谢谢,是的,我最初使用了该角色。但是服务没有启动,我不得不用这个变通方法更新代码