我有个任务,以取代现有的AWS
ec2
实例的外部设备的数据实例之间移动。任务停止目标EC2实例,通过拆卸设备存在和附加其他EC2实例的设备替换外部设备,然后重新启动EC2实例。有没有问题,自动化这些步骤,但我有一些问题,上述操作后,安装该设备。
我尝试将文件系统标签添加到设备,然后将其装入。但是添加有e2label
命令标签在此情况下正常工作。
我有一个Ansible
任务如下:
- name: Ensure external device has correct label
become: true
shell: e2label /dev/xvdf "dev-external" && e2label /dev/xvdf
register: device_label
retries: 15
delay: 5
until: device_label.stdout == "dev-external"
- name: Debug external device label soon after adding label
debug:
msg: "{{ device_label.stdout }}"
- name: Get external device label subsequently
become: true
shell: e2label /dev/xvdf
register: device_label_subsequently
- name: Debug external device label subsequently
debug:
msg: "{{ device_label_subsequently.stdout }}"
结果如下:
TASK [label-external-device : Ensure external device has correct label] ***
changed: [<host_ip>]
TASK [label-external-device : Debug external device label soon after adding label] ***
ok: [<host_ip>] => {
"msg": "dev-external"
}
TASK [label-external-device : Get external device label subsequently] ***
changed: [<host_ip>]
TASK [label-external-device : Debug external device label subsequently] ***
ok: [<host_ip>] => {
"msg": ""
}
正如你可以看到添加的标签与e2label
命令似乎成功并返回装置的标签为dev-external
时称为单一的shell命令。再次查询然而,当设备标签消失,甚至被拒绝到实际的文件系统设置。
重新启动EC2实例,并再次尝试时不出现此问题。
我知道有一些其他的方法,通过设备名称或UUID
但我想通过自己的文件系统标签安装设备兼容性的原因来安装设备。
如何正确添加标签,在Linux的AWS EBS卷的设备的文件系统?
追加sleep
中添加标签和检查标签状态之间可能有助于确保文件系统的标签状态。
从改变命令;
e2label /dev/xvdf "dev-external" && e2label /dev/xvdf
至;
e2label /dev/xvdf "dev-external" && sleep 1 && e2label /dev/xvdf
另外,设备可以安装在由udev
汽车,它可能是failure to add label的原因。因此可能需要确保设备运行e2label
添加标签之前卸载。