如何使用ansible运行二进制可执行文件并保持其运行?我可以使用命令/shell模块来执行此操作吗?

如何使用ansible运行二进制可执行文件并保持其运行?我可以使用命令/shell模块来执行此操作吗?,ansible,Ansible,我有一个可执行文件,比如:carbonserver。我需要运行它并保持它运行,以便api可以与它交互。如果这是一个真正的服务,那么我将把任务委托给系统的服务处理程序,而不是ansible。在大多数现代linux发行版上,这通常是systemd,因此我将创建一个模板,生成一个新的systemd单元文件,然后使用ansible的systemd模块启动它: 模板/carbonserver.service.j2: 剧本: - template: src: templates/carbonserv

我有一个可执行文件,比如:carbonserver。我需要运行它并保持它运行,以便api可以与它交互。

如果这是一个真正的服务,那么我将把任务委托给系统的服务处理程序,而不是ansible。在大多数现代linux发行版上,这通常是systemd,因此我将创建一个模板,生成一个新的systemd单元文件,然后使用ansible的systemd模块启动它:

模板/carbonserver.service.j2:

剧本:

- template:
    src: templates/carbonserver.service.j2
    dest: /etc/systemd/system/carbonserver.service
    owner: bin
    group: wheel
    mode: 0644

- systemd:
    name: carbonserver
    state: started
    enabled: True
如果您的服务器是您希望系统本身管理的东西,那么这是首选方法。例如,如果它停止或死亡,您可以配置systemd以再次启动它。您还可以将其配置为在系统启动时自动启动,等等

如果您有一个不支持systemd的Linux发行版,或者您想在其他类型的机器OSX或Windows上运行它,那么您可能需要使用特定操作系统自己的服务机制来实现这一点

但是,如果您只想使用ansible运行它一次,并且只想让它在后台运行,而不在乎它是否死掉,等等,那么您可以尝试其他方法,如:

- shell: "( ( nohup /usr/bin/carbonserver 1>/dev/null 2>&1 ) & )"
  async: 5
  poll: 0

这将在后台运行一个通用shell命令,确保ansible完成后不会杀死它,并在后台执行所有操作,以便下一个任务可以立即运行。请注意,只有在您真正不关心服务运行的情况下,这才是一种可行的方法,这很可能不是您想要的

如果这是一个真正的服务,那么我会将任务委托给系统的服务处理程序,而不是ansible。在大多数现代linux发行版上,这通常是systemd,因此我将创建一个模板,生成一个新的systemd单元文件,然后使用ansible的systemd模块启动它:

模板/carbonserver.service.j2:

剧本:

- template:
    src: templates/carbonserver.service.j2
    dest: /etc/systemd/system/carbonserver.service
    owner: bin
    group: wheel
    mode: 0644

- systemd:
    name: carbonserver
    state: started
    enabled: True
如果您的服务器是您希望系统本身管理的东西,那么这是首选方法。例如,如果它停止或死亡,您可以配置systemd以再次启动它。您还可以将其配置为在系统启动时自动启动,等等

如果您有一个不支持systemd的Linux发行版,或者您想在其他类型的机器OSX或Windows上运行它,那么您可能需要使用特定操作系统自己的服务机制来实现这一点

但是,如果您只想使用ansible运行它一次,并且只想让它在后台运行,而不在乎它是否死掉,等等,那么您可以尝试其他方法,如:

- shell: "( ( nohup /usr/bin/carbonserver 1>/dev/null 2>&1 ) & )"
  async: 5
  poll: 0

这将在后台运行一个通用shell命令,确保ansible完成后不会杀死它,并在后台执行所有操作,以便下一个任务可以立即运行。请注意,只有当您真的不关心服务的运行时,这才是一种可行的方法,这很可能不是您想要的

谢谢。这很有帮助,谢谢。这很有帮助。