首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当服务具有随机名称时,使用Salt管理服务

问当服务具有随机名称时,使用Salt管理服务
EN

Stack Overflow用户
提问于 2014-05-30 22:35:09
回答 1查看 289关注 0票数 2

我想弄点盐来安装和管理吉拉。作为安装的一部分,Jira将自己安装为一个服务。问题是,它在安装过程中选择一个随机的服务名称。

我需要能够管理服务状态。我找到了service.get_service_name()函数,让我们按显示名称查找服务。我不知道在我的州该如何正确地使用这个。当我将其放置在状态时,会出现salt错误,因为它试图在安装jira和服务存在之前获取服务名称。

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

jira/init.sls

代码语言:javascript
复制
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.varfile

jira/jira_service.sls

代码语言:javascript
复制
include:
  - jira

jira_service:
  service.running:
    - name: {{ salt['service.get_service_name']('Atlassian JIRA')['Atlassian JIRA'] }}
    - require:
      - pkg: jira

如果我手动安装jira,一切都正常。如何在salt试图解析服务部分之前强制jira安装?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 18:57:58

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

如果jira尚未安装,一个解决办法可能是让jinja不呈现jira_service部分。

代码语言:javascript
复制
{% 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现在已经安装好了,盐可以找到包名了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23964332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档