Jira 当服务具有随机名称时使用Salt管理服务

Jira 当服务具有随机名称时使用Salt管理服务,jira,jinja2,salt-stack,Jira,Jinja2,Salt Stack,我正试图让salt安装和管理Jira。作为安装的一部分,Jira将自己作为服务安装。问题是,它在安装过程中随机选择了一个服务名称 我需要能够管理服务状态。我找到了service.get\u service\u name()函数,让我通过显示名称查找服务。我不确定如何在我的州正确使用这个。当我将其置于状态时,salt会出错,因为它试图在安装jira和服务存在之前获取服务名称 在管理状态之前,我尝试过重新安排安装,但每次尝试都会导致错误。这是我最后一次尝试: jira/init.sls jira/j

我正试图让salt安装和管理Jira。作为安装的一部分,Jira将自己作为服务安装。问题是,它在安装过程中随机选择了一个服务名称

我需要能够管理服务状态。我找到了service.get\u service\u name()函数,让我通过显示名称查找服务。我不确定如何在我的州正确使用这个。当我将其置于状态时,salt会出错,因为它试图在安装jira和服务存在之前获取服务名称

在管理状态之前,我尝试过重新安排安装,但每次尝试都会导致错误。这是我最后一次尝试:

jira/init.sls jira/jira_service.sls
如果我手动安装jira,一切正常。如何在salt尝试解析服务部分之前强制jira安装?

您遇到的问题是,jinja首先将文件呈现给yaml,然后salt状态编译器计算所有单独的状态。因此,实际上,它试图在安装jira服务之前获取服务名称

一种解决方法是,如果jira尚未安装,jinja不提供jira_服务部分

{% if '<Jira name>' in salt['pkg.list_pkgs'] %}
jira_service:
  service.running:
    - name: {{ salt['service.get_service_name']('Atlassian JIRA')['Atlassian JIRA'] }}
    - require:
      - pkg: jira
{% endif %}
{%if''在salt['pkg.list_pkgs']%}
jira_服务:
正在运行的服务:
-名称:{{salt['service.get_service_name']('Atlassian JIRA')['Atlassian JIRA']}
-要求:
-包装:吉拉
{%endif%}
替换为“pkg.list_pkgs”中预期的名称。 这种尝试的缺点是第一个highstate无法确保服务正在运行。第二个highstate应该可以工作,因为现在已经安装了Jira,Salt可以找到包名

include:
  - jira

jira_service:
  service.running:
    - name: {{ salt['service.get_service_name']('Atlassian JIRA')['Atlassian JIRA'] }}
    - require:
      - pkg: jira
{% if '<Jira name>' in salt['pkg.list_pkgs'] %}
jira_service:
  service.running:
    - name: {{ salt['service.get_service_name']('Atlassian JIRA')['Atlassian JIRA'] }}
    - require:
      - pkg: jira
{% endif %}