我想弄点盐来安装和管理吉拉。作为安装的一部分,Jira将自己安装为一个服务。问题是,它在安装过程中选择一个随机的服务名称。
我需要能够管理服务状态。我找到了service.get_service_name()函数,让我们按显示名称查找服务。我不知道在我的州该如何正确地使用这个。当我将其放置在状态时,会出现salt错误,因为它试图在安装jira和服务存在之前获取服务名称。
我尝试过在管理状态之前重新安排安装,但是我尝试的每一件事情都会导致错误。这是我最后一次尝试:
jira/init.sls
jira:
pkg.installed:
- refresh: true
- require:
- file: C:\Users\ADMINI~1\AppData\Local\Temp\response.varfile
C:\Users\ADMINI~1\AppData\Local\Temp\response.varfile:
file.managed:
- source: salt://jira/response.varfilejira/jira_service.sls
include:
- jira
jira_service:
service.running:
- name: {{ salt['service.get_service_name']('Atlassian JIRA')['Atlassian JIRA'] }}
- require:
- pkg: jira如果我手动安装jira,一切都正常。如何在salt试图解析服务部分之前强制jira安装?
发布于 2014-09-08 18:57:58
您遇到的问题是,jinja首先将文件呈现给yaml,然后盐州编译器对所有的状态进行评估。因此,实际上,它试图在安装jira服务之前获取服务名称。
如果jira尚未安装,一个解决办法可能是让jinja不呈现jira_service部分。
{% 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 %}用您希望在'pkg.list_pkgs‘中出现的名称替换。这种尝试的缺点是,第一个highstate无法确保服务正在运行。第二个highstate应该可以工作了,因为Jira现在已经安装好了,盐可以找到包名了。
https://stackoverflow.com/questions/23964332
复制相似问题