【问题标题】:Create logical volume with ansible and if statement使用 ansible 和 if 语句创建逻辑卷
【发布时间】:2020-09-05 08:06:18
【问题描述】:

我正在尝试创建一个执行以下操作的剧本,

  1. 创建具有特定大小的逻辑卷,如果卷组没有足够的大小输出消息并使用其他大小。
  2. 如果卷组不存在退出并输出消息
  3. 如果逻辑卷创建格式并挂载到磁盘

我正在尝试找到一种方法来做到这一点,但我在谷歌上找不到任何可以帮助我解决这个问题的方法。

我正在使用 ansible 2.7.8

【问题讨论】:

    标签: ansible lvm


    【解决方案1】:

    假设您有 100 个节点和 1 个控制节点。 100 个节点混合了一些具有称为数据仓的 VG 和一些没有 和 100个节点混合不同大小的VG数据仓

    1. 创建具有特定大小的逻辑卷,如果卷组 没有足够的大小输出一条消息并使用另一个大小。 (LV name = dbdata and size 2.5G if VG databin has enough size or fall back to 1G )

    2. 如果卷组不存在退出并输出消息 (如果没有 VG 数据仓,我们跳过)

    3. 如果逻辑卷创建格式并挂载到磁盘 (如果创建了 dbdata LV,则使用 ext4 格式化并挂载到 /db)

    --使用 Block and Fail 的示例 Playbook(错误处理)--

    ---
     - name: Setup LVM
       hosts: all
       tasks:
         - name: Check for databin VG
           fail:
             msg: VG databin does not exist
           when:
             - ansible_lvm['vgs']['databin'] is not defined
    
         - name: Create LVM and Filesystem and Mount
           block:
             - name: Check for databin VG Size of 2500MiB
               fail:
                 msg: Could not create LV with 2500MiB size
               when:
                 - ansible_lvm['vgs']['databin']['size_g'] < "2.50"
             - name: Create 2500MiB LVM on databin VG
               lvol:
                  lv: dbdata
                  vg: databin
                  size: "2532"
           rescue:
             - name: Fall back and Create 1024MiB LVM on databin VG
               lvol:
                 size: "1024"
                 vg: databin
                 lv: dbdata
           always:
             - name: Set Filesystem
               filesystem:
                 dev: /dev/databin/dbdata
                 fstype: ext4
             - name: Mount LV 
               mount:
                 path: /db
                 src: /dev/databin/dbdata
                 fstype: ext4
                 state: present
    

    【讨论】:

      【解决方案2】:

      我会在 ansible 中查看“块”。块,允许您执行一项操作并使用“救援”捕获任何错误,然后执行其他操作。

      对于问题 2,我会检查调试以及如何在“何时”条件下使用它。

      IE:当:vgname 不在 ansible_lvm.vgs 中

      【讨论】:

        猜你喜欢
        • 2015-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-19
        • 1970-01-01
        相关资源
        最近更新 更多