代码之家  ›  专栏  ›  技术社区  ›  Vijayendar Gururaja

如何循环ansible中的一系列任务

  •  0
  • Vijayendar Gururaja  · 技术社区  · 6 年前

    我正试图用下面的剧本卸载文件系统。

    vars:
    unmountlist:
      - "/DATA1"
      - "/DATA2"
    
    tasks:
      - name: unmount
        mount:
        path: "{{ item }}"
        state: unmounted
        with_items:
         - "{{ unmountlist }}"
        register: output
        ignore_errors: true
    
      - debug:
        msg: "{{ output }}"
    
      - name: YE unmount persistant
        mount:
        path: "{{ item }}"
        state: absent
        with_items:
         - "{{ unmountlist }}"
    
     - name: Lazy unmount
       command: umount -l "{{ item }}"
       when: output.changed == false
       with_items: "{{ unmountlist }}"
    

    调试部分如下所示:

    ok: [host001] => {
    "msg": "error is {'msg': u'All items completed', 'failed': True, 'changed': False, 'results': [{'_ansible_parsed': True, 'changed': False, '_ansible_no_log': False, 'item': u'/DATA1', '_ansible_item_result': True, u'failed': True, u'invocation': {u'module_args': {u'src': None, u'dump': None, u'boot': u'yes', u'fstab': None, u'passno': None, u'fstype': None, u'state': u'unmounted', u'path': u'/DATA1', u'opts': None}}, u'msg': u'Error unmounting /DATA1: umount.nfs: /DATA1: device is busy\\n'}, {'_ansible_parsed': True, 'changed': False, '_ansible_no_log': False, 'item': u'/DATA2', '_ansible_item_result': True, u'failed': True, u'invocation': {u'module_args': {u'src': None, u'dump': None, u'boot': u'yes', u'fstab': None, u'passno': None, u'fstype': None, u'state': u'unmounted', u'path': u'/DATA2', u'opts': None}}, u'msg': u'Error unmounting /DATA2: umount.nfs: /DATA2: device is busy\\n'}]}"
    

    我正在努力实现以下目标。

    1. lazy只卸载返回错误“device is busy”的文件系统。我看不到如何从上面的debug中读取包含字符串“device is busy”的变量,以及如何只卸载返回此错误的文件系统。
    1 回复  |  直到 6 年前
        1
  •  2
  •   PrasadK    6 年前

    您可以做的是将任务放在任务文件中,并使用 unmountlist

    这是您的任务文件(umounts\u tasks.yml)的外观- tasks file

    然后在游戏中可以使用 include_tasks 要包含上述任务文件,请使用卸载列表对其进行循环。所以你的剧本是这样的- play.yml

    让我知道这是否有效。:)