if-statement - 在单个条件下对多个 ansible 任务进行分组

标签 if-statement solr task conditional ansible

我正在使用 ansible作为系统编排工具。首先,让我描述一下我的最终目标。

我想创建一两个剧本来抢夺 solr从网络,设置自己,然后根据一些配置启动一个索引。如果到目前为止任何一个听起来可疑,请在这里阻止我。

现在,我不想抢 solr tarball如果我不需要,那么我目前有一个看起来像这样的任务/游戏。

- stat: path="path to solr home/solr/bin/init script"
  register: solr_script

- name: getting solr
  when: solr_script.stat.exists == False
  shell: mkdir -p "path to download dir"
  get_url: url="download url" dest= "path to download dir"
  shell: tar zxvf "path to download dir/tgz file" -C "path to solr home"
  shell: rm -rf "path to download dir"

- name: start solr
  shell: "path to solr home/solr/bin/solr init script" start
  sudo: yes

我试图在去抓取它之前检查 solr init 脚本是否已经下载。

当我按原样运行此脚本时,出现错误,
multiple actions specified in task: 'shell' and 'getting solr' 

这似乎是合理的,也许格式错误?我试过这个
- name: getting solr
  when: solr_script.stat.exists == False
      shell: mkdir -p "path to download dir"
      get_url: url="download url" dest= "path to download dir"
      shell: tar zxvf "path to download dir/tgz file" -C "path to solr home"
      shell: rm -rf "path to download dir"

有语法错误。

在 ansible 文档页面上,我看到了这一点信息。
Note that if you have several tasks that all share the same conditional statement, you can affix the conditional to a task include statement as below. All the tasks get evaluated, but the conditional is applied to each and every task:

这似乎达到了我的需要。

但随后他们跟进了这个例子。
- include: tasks/sometasks.yml
  when: "'reticulating splines' in output"

我不太明白“包含”,这个例子似乎没有说明我想要什么。所以,如果我最初的假设是正确的,这确实是我想要获得 solr 的方式,我将如何编写一个有条件地执行一组任务的 ansible 任务。

最佳答案

在 Ansible 2.0 中,可能是这样的:

- block:
    - shell: mkdir -p "path to download dir"
    - get_url: url="download url" dest= "path to download dir"
    - shell: tar zxvf "path to download dir/tgz file" -C "path to solr home"
    - shell: rm -rf "path to download dir"
  when: solr_script.stat.exists == False

希望这会帮助你。

关于if-statement - 在单个条件下对多个 ansible 任务进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440830/

相关文章:

c - 找到硬编码号码

Java编程简单的If/Else语句项目

solr - Solr中控制匹配子句个数对评分的影响

javascript - jQuery 什么时候使用 if 语句,什么时候使用函数?

JavaScript if 语句测试一个或另一个但不是两个

java - 浏览器/jQuery 代理错误

Solr – 将 SeachHandler 的 SeachComponent 配置为最小匹配 = 100%,并且仍然忽略搜索查询中的停用词

c# - ContinueWhenAll 操作中的 Task.Wait

eclipse - 如何在 Eclipse 中启用 TODO/FIXME/XXX 任务标签?

c# - ASP.NET MVC 5 中的计划任务