0

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

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

我有以下标准输出:

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

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 地址。

我想要实现的是状态检查。如果 ProfileCLO01ESX02有 Network Name:Multiple Network两次,那么我想跳过该任务。

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

Ansible 可以做到这一点,还是我被迫编写自定义脚本?

4

1 回答 1

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
于 2017-06-16T09:28:32.463 回答