Ansible 直到条件匹配为止。
我想在每次调用检查结果中的特定参数后,进行一系列API调用,如果该参数大于特定值,则将其保存在寄存器中,并继续执行playbook 基本上,我正在对RHEV进行API调用以检查存储域。然后我想检查存储域是否有足够的空间,如果有,将该存储域id存储在寄存器中,以便在存储域上创建磁盘 下面是我如何对storagedomain进行单个API调用的代码段Ansible 直到条件匹配为止。,ansible,Ansible,我想在每次调用检查结果中的特定参数后,进行一系列API调用,如果该参数大于特定值,则将其保存在寄存器中,并继续执行playbook 基本上,我正在对RHEV进行API调用以检查存储域。然后我想检查存储域是否有足够的空间,如果有,将该存储域id存储在寄存器中,以便在存储域上创建磁盘 下面是我如何对storagedomain进行单个API调用的代码段 - name: Get Free Storage Domain On RHEV uri: url: "{{ rhevurl }}/sto
- name: Get Free Storage Domain On RHEV
uri:
url: "{{ rhevurl }}/storagedomains/7649aea2-d87c-4066-acca-4399d5261ade"
method: GET
user: "{{ rhevusername }}"
password: "{{ rhevpassword }}"
return_content: yes
headers:
Version: 4
Accept: "application/xml"
Content-type: "application/xml"
register: storagedomain
tags: storagedomain
- name: Retriving size.
xml:
xmlstring: "{{ storagedomain.content }}"
xpath: /storage_domain/available
content: text
register: availablesize
tags: storagedomain
- name: storage_domain size
debug:
var: availablesize.matches[0].available
tags: storagedomain
现在我想对多个存储域执行此过程,当它获得具有可用空间的storagedomain时,循环应该会中断
像下面这样
- name: Get Free Storage Domain On RHEV
uri:
url: "{{ rhevurl }}/storagedomains/{{ item }}"
method: GET
user: "{{ rhevusername }}"
password: "{{ rhevpassword }}"
return_content: yes
headers:
Version: 4
Accept: "application/xml"
Content-type: "application/xml"
loop:
- 7649aea2-d87c-4066-acca-4399d5261ade
- 40cceee7-a8d3-45af-a2d0-70c414be32cc
- a81411b0-4ddb-4467-a4c6-ac9364905248
- b288c547-231c-44b9-8329-98adcbdfc726
- 8cdef991-3edc-4c35-9228-feeef8f29004
- 837a2e1b-6365-4309-a526-0cd05801fe43
- 8981bf82-a1da-405e-a7f5-d84f2c94d71d
- 7a9e3904-e37b-48fd-b850-0f026dc5cde9
在循环中,我应该如何使用xml模块解析xml,然后检查可用空间大于特定大小的条件,以及(可能)或(已经)的条件是否可以做您想做的事情。您不能中断循环,但如果您的条件在任何项上都满足,则可以跳过循环执行。查看下面的示例 test.yml此剧本将执行
shell
模块,忽略错误并设置var1
变量。但是块
模块将仅在未定义var1
之前执行
- block:
- shell: expr {{item}} + 1
ignore_errors: yes
register: cmd_stat
- set_fact: var1={{item}}
when: cmd_stat.rc == 0
when: var1 is not defined
sites.yml该剧根据您的循环项目多次包括test.yml剧本
---
- hosts: localhost
connection: local
vars:
tasks:
- include: test.yml
loop: ["abc","def", "ghi",1, "jkl"]
- name: increase var1 variable by 1 and write to text file
shell: expr {{var1}} + 1 > text
因此,使用您可以在剧本中实现的相同逻辑。例如,如果url
get200状态,然后设置storage
变量并将其与when条件一起使用
我希望你能理解这个例子。谢谢。我想你的逻辑会对我有用。我将测试它并让您知道。
直到:
不受包括:
支持。