【发布时间】:2020-11-15 21:09:06
【问题描述】:
我最近才开始使用 Ansible。我正在尝试在使用 terraform 附加的 azure VM 上安装 4 个磁盘。每个磁盘都带有一个 LUN 编号,我正在使用该 LUN 编号和 grep 获取每个磁盘的设备名称(sdc、sdd 等)。
- name: get volume name
shell: echo "/dev/$(ls -l /dev/disk/azure/scsi1 |grep {{ item.lun }}|egrep -o "([^\/]+$)")"
register: volumename
- parted:
device: "{{ volumename.stdout }}"
number: 1
state: present
- filesystem:
fstype: xfs
dev: "{{ volumename.stdout }}"
- mount:
fstype: xfs
opts: noatime
src: "{{ volumename.stdout }}"
path: "{{ item.mountpoint }}"
state: mounted
- command: blkid -s UUID -o value {{ volumename.stdout }}
register: volumename_disk
- blockinfile:
path: /etc/fstab
state: present
block: |
UUID={{ volumename_disk.stdout }} {{ volumename.stdout }} xfs defaults,noatime,nofail 0 0
loop:
- { lun: 'lun0', mountpoint: '/apps/mysql/binlog', diskname: 'binlog' }
- { lun: 'lun1', mountpoint: '/apps/mysql/innodb', diskname: 'innodb' }
- { lun: 'lun2', mountpoint: '/apps/mysql/data', diskname: 'data' }
- { lun: 'lun3', mountpoint: '/apps/mysql', diskname: 'backup' }
tags: test
我不断收到 volumename 变量未定义错误。有没有办法将volumename设置为全局以便下一个剧本可以访问它或者我如何改进这个代码?
【问题讨论】:
标签: azure ansible mount disk rhel7