AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1083362
Accepted
Martin
Martin
Asked: 2021-11-13 04:11:11 +0800 CST2021-11-13 04:11:11 +0800 CST 2021-11-13 04:11:11 +0800 CST

使用 Parted ansible 的模块创建交换分区 UUID 后无法获取它

  • 772

我必须在 VM 上的新磁盘中创建一个新分区。我使用 parted 模块来创建分区。在未来的任务中(在同一个剧本中),我需要使用设备分区的 UUID(不是分区 UUID,而是分区的设备 UUID,例如在 /dev/disks/by-uuid/ 中)

问题是:在 parted 模块归档作业后,我找不到在任务中获取分区 UUID 的方法。我确信 parted 模块工作正常,因为分区在运行后存在。

让我们看看我尝试了什么:

Creating the partition with the parted module
Re-launch facts with the setup module (with and without filtering on ansible_devices) in order to use the ansible_devices.sdX.partitions.sdXY.uuid --> return void
Use the blkid -s UUID -o value /dev/sdXY throught the shell module --> return void
Use the ls -l /dev/disk/by-uuid/ | grep sdXY | awk '{print $9}' throught the shell module --> still return void

可怕的事实是:如果我在另一个剧本中启动相同的任务(如 2、3 或 4),我就能得到结果。但是在 parted 模块的同一剧本中:我不能。

这是我的完整剧本:

---
- hosts: all
  become: yes
  gather_facts: "yes"
  tasks:

   - name: Check actual swap quantity
     debug:
       var: ansible_swaptotal_mb
     failed_when: ansible_swaptotal_mb > 1999


   - name: Add a 2Gb disk
     shell: pwsh ./add_disk_vm.ps1 -vm {{ ansible_hostname }} -diskspace 2
     delegate_to: localhost


   - name: Scan for new disks
     shell: for i in $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$i/scan ; done

   - name: Get letter of the new disk
     shell: 'dmesg | grep "sd\w.*2.00 GiB)$" | grep -o "sd\w" | tail -1'
     register: diskletter


   - name: Create new partition
     community.general.parted:
       device: /dev/{{ diskletter.stdout }}
       fs_type: linux-swap
       label: gpt
       name: swap
       number: 1
       state: present
     register: parted


   #here the task who should work, but returning nothing
   - name: Get UUID
     shell: blkid -s UUID -o value /dev/{{ diskletter.stdout }}1
     register: uuidinfo

我之前没有提到它,但最后一个任务在其他剧本上运行良好,甚至直接在 VM 上的 SSH 中运行。该命令仅在剧本执行上下文期间不返回任何内容。

以下是有关我的设置的其他一些信息:

ansible-playbook 2.9.27 python 版本 = 2.7.17 Ubuntu 18.04(安装了 ansible 和目标服务器) community.general 集合(版本 3.7.0)

如果有人对此有任何想法;谢谢大家!

hard-drive ubuntu ansible parted
  • 2 2 个回答
  • 330 Views

2 个回答

  • Voted
  1. U880D
    2021-11-16T10:04:57+08:002021-11-16T10:04:57+08:00

    据我了解情况并从自己的经验中知道,这种行为似乎是有意的。一旦更改完成,操作系统必须“强制”重新读取分区表,然后才能获得新的设备信息。

    更多链接

    • 无需重启即可重读分区表
    • partprobe用法
    • Ansible 问题 #48034
    • Ansible 问题 #63676
    • 1
  2. Best Answer
    Martin
    2021-11-18T06:37:58+08:002021-11-18T06:37:58+08:00

    好的,我终于找到了解决方案。

    问题是当分区没有挂载时,它没有 UUID。使用 xfs、extX 等数据分区时...分区是由系统直接挂载的,因此分区直接使用 UUID。

    交换分区不是这种情况,您必须首先启用它,mkswap系统才能挂载交换分区。

    这就是为什么我能够在第二次 playbook 执行中获得 UUID 值:我在 playbook 中启用交换之前达到了 UUID 值。所以分区没有挂载,也没有 UUID。

    如果它可以帮助某人

    • 1

相关问题

  • 总大小(磁盘)与总大小(媒体)

  • Linux:“发现重复的 PV XXXXYYYYY:用户 /dev/sdb1 而不是 /dev/sda1”

  • Windows C:驱动器大小

  • 了解磁盘队列长度

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve