ansible剧本的问题

时间:2020-07-10 12:15:59

标签: ansible ansible-2.x

下面的剧本工作正常,但是如果我运行lsscsi命令,/ u01始终是LUN 0(/ dev / sdc),并且/ ora01应该是LUN1(/ dev / sdd),/ data应该是LUN2(/ dev / sde)。这里的问题是有时会被交换。 / ora01将是LUN2&/ data将是LUN1。请对此提供建议。

  tasks:
    - name: vgcreate
      lvg:
           vg: "{{ item.vgname }}"
           pvs: "{{ item.pvsdisk }}"
      with_items:
       - { vgname: u01, pvsdisk: /dev/sdc }
       - { vgname: ora01, pvsdisk: /dev/sdd }
       - { vgname: data, pvsdisk: /dev/sde }

    - name: lvcreate
      lvol:
            vg: "{{ item.vgname }}"
            lv: "{{ item.lvname }}"
            size: 100%VG
      with_items:
       - { vgname: u01, lvname: lgvol_1 }
       - { vgname: ora01, lvname: lgvol_2 }
       - { vgname: data, lvname: lgvol_3 }


    - name: create file system
      filesystem:
            fstype: ext4
            dev: /dev/{{ item.vgname }}/{{ item.lvname }}
      with_items:
       - { vgname: u01, lvname: lgvol_1 }
       - { vgname: ora01, lvname: lgvol_2 }
       - { vgname: data, lvname: lgvol_3 }

    - name: mount logical volume
      mount:
            name: /{{ item.vgname }}
            src: /dev/{{ item.vgname }}/{{ item.lvname }}
            fstype: ext4
            state: mounted
      with_items:
       - { vgname: u01, lvname: lgvol_1 }
       - { vgname: ora01, lvname: lgvol_2 }
       - { vgname: data, lvname: lgvol_3 }

1 个答案:

答案 0 :(得分:1)

这不是Ansible。您遇到的问题是设备名称'/ dev / sda'等不是永久的。它们是按照出现顺序分配的,因此,如果此顺序不同,则会以不同的名称列出设备。 IRL的“ sda”方法存在更多问题,例如如果某些设备由于错误而断开连接(在ISCSI情况下超时),然后在以后重新连接,则可以获取新名称(例如/dev/sdg)。在内核内部深处将有/ dev / sda(不可见但已占用)和/ dev / sdg-同一设备但名称不同。

TL; DR;如果顺序对您很重要,请不要依赖/ dev / sd *表示法。将其视为分配了随机名称的磁盘“集合”。

如果需要选择特定的设备,则需要找到不变的(肯定是该设备具有的东西)。几种选择:

  1. SCSI路径
  2. 插槽号(如果机箱中有真实设备)
  3. 文件系统的UUID
  4. 设备的部件号和/或供应商分配的序列号

可以通过/ dev / disk / by- *进行某些标识:

  • by-id /
  • 按部分标签/
  • 按路径/
  • 按标签/
  • by-partuuid /
  • by-uuid /

有些需要非常周到的搜索过程(与标识进行探测)。您可能需要研究几种工具的输出:

  • blkid
  • isscsi
  • iscsiadm -m会话

甚至可以窥视每个设备中的/ sys / block和符号链接。

基本上,问题几乎与某些人将驱动器随机插入新计算机一样。哪个驱动器是干什么的?