gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:19:41 28 4
gpt4 key购买 nike

我正在使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com