Ansible logstash安装

Ansible logstash installation

我正在尝试在 RHEL 7 上使用 Ansible 安装 Logstash。
安装后无法启动logstash服务。我在网上搜索 service not found error.I 并找到以下命令。

/usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd

之后,logstash 服务启动。

我在 systemd 命令上方的剧本中执行了以下操作。但它不是幂等的。第一个任务每次都是运行。 我有两个问题。
1. 除了使用 shell 有什么方法可以做到这一点?
2. 我可以在这个任务中加入什么 when 条件使其幂等。如果我检查服务状态,把状态放在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
  1. 如果你想执行一些脚本 - 你可以使用 shellcommand。否则你可以自己生成systemd服务

  2. 您不需要使用 when 来执行此操作,您可以在 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 和 运行 仅当您的模板已更改时才生成服务任务。