Ansible高级变量解析

时间:2017-06-15 13:20:26

标签: ansible ansible-template

我是Ansible的新手,因此这个问题对于更高级的用户来说可能看起来很愚蠢,我不确定是否可以做我正在问的问题,因为Ansibel在循环和条件方面非常有限。 / p>

我正在Virtual Connect交换机上执行任务,因此我只能使用原始模块。

我有以下STDOUT:

=========================================================================

Profile  Port  Network  PXE/IP      MAC Address       Allocated  Status  
                Name    Boot Order                     Speed             
                                                      (min-max)          
=========================================================================
CLO01ES  1     CLO_355  UseBIOS/Au  00-17-A4-77-58-0  -- --      OK      
X02            _1       to          0                                    
-------------------------------------------------------------------------
CLO01ES  2     CLO_355  UseBIOS/Au  00-17-A4-77-58-0  -- --      OK      
X02            _2       to          2                                    
-------------------------------------------------------------------------
CLO01ES  3     Multipl  UseBIOS/Au  00-17-A4-77-58-0  -- --      OK      
X02            e        to          4                                    
               Network                                                   
-------------------------------------------------------------------------
CLO01ES  4     Multipl  UseBIOS/Au  00-17-A4-77-58-0  -- --      OK      
X02            e        to          6                                    
               Network                                                   
-------------------------------------------------------------------------
<omitted>

问题是STDOUT可能有多行,其中包含不同的配置文件,即我事先不知道行号或MAC地址。

我想要获得的是状态检查。如果个人资料CLO01ESX02的网络名称为Multiple Network两次,那么我想跳过该任务。

每当我谷歌搜索解析变量或STDOUT时,我都会得到基本答案。

这是可能的Ansible还是我被迫编写自定义脚本?

1 个答案:

答案 0 :(得分:0)

任何原生的Ansible模块都无法直接完成,但使用shell命令应该可以解决问题。

- name: Check output
  command: <your_command_here> | grep CLO01ESX02 | grep "Multiple Network" | wc -l
  register: wc
  failed_when: wc.stdout|int > 1