openstack底层提取所有虚拟机IP和其uuid、openstack底层提取所有虚拟机的所在宿主机

说明

  • 需求

    • 1、获取所有表的ip和其uuid【以底层为准】
    • 2、获取所有IP的所在宿主机【以底层为准】
  • 实现方式有2种

    • 1、dashboard里面可以查看,然后一台一台的复制【使用少量虚拟机】
    • 2、底层跑脚本获取【适合多虚拟机】

dashboard

ip名称对应宿主机

登录dashboard进入到admin域,里面就可以看到虚拟机的宿主机。
在这里插入图片描述

虚拟机uuid

点击名称,进入到详细,里面的id就是虚拟机的uuid
在这里插入图片描述

底层命令获取

之前的脚本

我最开始获取这个的时候,用的是下面的脚本,获取这些本来是简简单单的,我也不知道我为啥写这么难理解的一个脚本。。。。下面感兴趣的可以自行研究一下,我这不用这个脚本了,用更简单的方法。。。

[root@node-1 ccx]# cat uuid.sh 
#!/bin/bash
if [ $# -eq 0 ] ;then
        echo "Usage: /root/iplist.txt"
        elif [ -f $1 ] ; then
                for ip in `cat $1` ; do
                        name1=`ssh root@$ip virsh list --all | grep ins | awk '{print $2,$3,$4}'`
                        name2=`ssh root@$ip virsh list --all | grep ins | awk '{print $2}'`
                        echo "$name2" >> /root/ccx/uuid2.log
                        name3=`cat /root/ccx/uuid2.log`
                        ipname=`ssh root@$ip hostname`
                        echo -e "$ipname\n$name1"
                done
                array=($name2)
                echo ${array[*]}
                for leng in ${array[*]} ; do
                        #echo $leng
                        uuid=`ssh root@$ip virsh domuuid $leng`
                        echo "$leng $uuid" >> /root/ccx/uuid.log | awk '$1 ~ /ins/{print $1,$2,$3,$4}'
                done
                        cat /root/ccx/uuid.log
                        #addip=`cat /root/ccx/uuid.log | awk '{print $2}'`
                for uuip in  $addip ; do
                        ywip=`nova show $uuip | grep network | awk '{print $5}'`
                        echo "$uuip $ywip"
                done
                        > /root/ccx/uuid.log
        else
                echo "Input file not found"
fi
[root@node-1 ccx]# 

获取ip和其uuid

  • 登录控制节点,执行环境变量以后
    执行:nova list --all 就会列出所有的虚拟机和其uuid【如果不加–all,shutdown状态的不会被列出】
    在这里插入图片描述
  • uuid和ip都有了,就直接拷贝出来呗!
    再excel中全部信息在一行,我们可以用分列-分割符号来分割
    在这里插入图片描述
    在这里插入图片描述
    然后自己要哪些就留哪些嘛,不要的删了就是了
    在这里插入图片描述

获取IP所在宿主机

定位宿主机命令

  • 登录控制节点,执行环境变量以后
    执行:nova show uuid 就会列出该虚拟机的详细信息,宿主机信息如下
    在这里插入图片描述

  • 其实我们提取宿主机一般要和ip一起提【严谨的态度】,免得出错,方法1
    要速度的话我们可以直接用下面方法来一起获取2个值了,然后导出到excel就好【使用不多的情况】,这种就是多条件筛选嘛
    在这里插入图片描述

  • 然后分别通过awk来提取嘛【一定要先测试好单条命令,能正确获取且只获取到一个值(通过修改下面grep后面的值实现,每个版本的openstack过滤条件一般都不会一样)】
    注:下面ip有修改。

#提取ip
[root@node-2 ccx]# nova show 591f918c-0df1-46cf-8081-f66ab76ddd | grep network|awk '{print $5}'
1.23.16.39
[root@node-2 ccx]# 
# 提取宿主机
[root@node-2 ccx]# nova show 591f918c-0df1-46-8081-f66a80b76ddd | grep hostname | awk '{print $4}'
node-20.domain.tld
[root@node-2 ccx]# 

脚本代码准备测试

  • sh脚本
    之前脚本那么多行实现的功能和我下面是一样的,所以,这就是进步!
[root@node-2 ccx]# cat uuid.sh 
#!/bin/bash

cat uuid.txt |  while read line ; do
        echo -e "`nova show $line | grep network|awk '{print $5}'`:`nova show $line | grep hostname | awk '{print $4}'`"
done
[root@node-2 ccx]# 
  • uuid脚本准备
    我先准备个2台跑脚本看看效果
[root@node-2 ccx]# cat uuid.txt 
2360d273-abb4-4f5d-a3b3-f58b40e14b6 
09a25ee9-9a98-4c44-8a56-397fe81647f 
[root@node-2 ccx]# 
  • 执行这个脚本试试
    嗯。。。很完美
[root@node-2 ccx]# sh uuid.sh 
1.2.3.31:node-6.domain.tld
1.2.3.32:node-18.domain.tld
[root@node-2 ccx]# 

脚本代码终版

  • 其实代码和上面一样,我就是添加了个追加到文件而已
[root@node-2 ccx]# cat uuid.sh
#!/bin/bash

cat uuid.txt |  while read line ; do
        echo -e "`nova show $line | grep network|awk '{print $5}'`:`nova show $line | grep hostname | awk '{print $4}'`" >> uuidxuniji.txt
done
[root@node-2 ccx]# 
  • uuid文件,放了所有uuid
    其实我就是按表里的uuid复制过来的,这样后面复制过去和表里就对应起来了
    在这里插入图片描述
  • 然后就执行呗,慢慢等执行完就好了
    如果你想实时看表里更新也是可以的,新打开一个窗口,然后tail -f 文件名 就可以实时更新数据了
    在这里插入图片描述

最终信息提取完成展示

  • 最后将脚本结果复制到excel嘛,然后通过: 分列就好了,对应一下ip,ip对上了,宿主机就对上了,如下
    在这里插入图片描述

  • 最后成品如下
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cuichongxin/article/details/124747147
今日推荐