Openstack之路(八)创建云主机镜像

  • 准备CentOS-7.x镜像,可以从网上直接下载,我这里准备的镜像是CentOS-7.2-x86_64
  • [[email protected] ~]# ls -l /tmp/CentOS-7-x86_64-DVD-1511.iso
    -rw-r--r-- 1 root root 4329570304 Jan  7  2016 /tmp/CentOS-7-x86_64-DVD-1511.iso
    • 安装相关软件
    [[email protected] ~]# yum -y install qemu-kvm libvirt virt-install
    [[email protected] ~]# rpm -qa qemu-kvm libvirt virt-install
    libvirt-3.2.0-14.el7_4.5.x86_64
    qemu-kvm-1.5.3-141.el7_4.4.x86_64
    virt-install-1.4.1-7.el7.noarch
    • 启动libvirtd,会自动创建虚拟网卡virbr0,默认地址为192.168.122.1
    [[email protected] ~]# systemctl start libvirtd
    [[email protected] ~]# systemctl status libvirtd
    [[email protected] ~]# ifconfig virbr0
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 00:00:00:00:00:00  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    • 创建虚拟磁盘,”-f”指定磁盘格式qcow2,存放路径/opt/CentOS-7.2_x86_64.qcow2,磁盘大小10G
    [[email protected] ~]# qemu-img create -f qcow2 /opt/CentOS-7.2-x86_64.qcow2 10G
    Formatting ‘/opt/CentOS-7.2-x86_64.qcow2‘, fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
    [[email protected] ~]# ls -l /opt/CentOS-7.2-x86_64.qcow2
    -rw-r--r-- 1 root root 196768 Jan 23 14:39 /opt/CentOS-7.2-x86_64.qcow2
    • 创建云主机
    [[email protected] ~]# virt-install --virt-type kvm --name CentOS-7.2 --ram 1024 --disk /opt/CentOS-7.2-x86_64.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=centos7.0 --location=/tmp/CentOS-7-x86_64-DVD-1511.iso
    • 通过TightVNS工具连接192.168.56.11:5900(默认端口是5900),接下来的步骤和我们平时安装系统没有什么区别,注意,只分根分区,不需要分交换分区

    • 启动云主机,并查看状态
    [[email protected] ~]# virsh start CentOS-7.2
    Domain CentOS-7.2 started
    [[email protected] ~]# virsh list --all
     Id    Name                           State
    ----------------------------------------------------
     2     CentOS-7.2                     running
    • 通过TightVNS工具连接192.168.56.11:5900,配置云主机网络

    DNS配置

    [[email protected] ~]# echo -e "nameserver 114.114.114.114\nnameserver 202.96.128.86" > /etc/resolv.conf
    [[email protected] ~]# cat /etc/resolv.conf
    nameserver 114.114.114.114
    nameserver 202.96.128.86

    网卡配置

    [[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    TYPE=Ethernet
    BOOTPROTO=dhcp
    IPV4_FAILURE_FATAL=no
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    
    [[email protected] ~]# systemctl stop NetworkManager
    [[email protected] ~]# systemctl status NetworkManager
    [[email protected] ~]# systemctl disable NetworkManager
    
    [[email protected] ~]# systemctl restart netwrok
    [[email protected] ~]# systemctl status netwrok
    • 关闭firewalld,selinux,postfix等服务
    [[email protected] ~]# systemctl stop firewalld
    [[email protected] ~]# systemctl status firewalld
    [[email protected] ~]# systemctl disable firewalld
    
    [[email protected] ~]# setenforce 0
    [[email protected] ~]# getenforce
    Permissive
    [[email protected] ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/selinux/config
    
    [[email protected] ~]# systemctl stop postfix
    [[email protected] ~]# systemctl status postfix
    [[email protected] ~]# systemctl disable postfix
    • 设置系统文件描述符数
    [[email protected] ~]# ulimit -SHn 65535
    [[email protected] ~]# ulimit -n
    65535
    [[email protected] ~]# echo "*               -       nofile          65535" >> /etc/security/limits.conf
    • 设置系统字符集
    [[email protected] ~]# vi /etc/locale.conf
    LANG="en_US.UTF-8"
    • 更新国内yum源

    aliyun

    [[email protected] ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    epel

    [[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    • 安装必要的软件包
    [[email protected] ~]# yum -y install lrzsz vim dos2unix telnet nmap nc net-tools ntpdate wget screen tree
    • 安装ACPI服务,支持关闭和重启云主机实例
    [[email protected] ~]# yum -y install acpid
    [[email protected] ~]# systemctl enable acpid
    • 同步网络时间服务器
    [[email protected] ~]# ntpdate 0.pool.ntp.org
    [[email protected] ~]# hwclock
    [[email protected] ~]# crontab -e
    ####Synchronization Network Time Server####
    */5 * * * * /usr/sbin/ntpdate 0.pool.ntp.org &>/dev/null
    • 编写镜像初始化脚本
    [[email protected] ~]# vim /tmp/system_init.sh
    #!/bin/bash
    # Name:system_init.sh
    # Version:V1.0
    # Type:system_init
    # Language:Bash Shell
    # Date:2018-01-25
    # Author:LinBin
    # Email:[email protected]
    
    set_key() {
    # Determine whether the file exists
    if [ ! -d /root/.ssh ]
      then
        mkdir -p /root/.ssh
        chmod 700 /root/.ssh
    fi
    
    # Fetch public key using HTTP
    for ((i=1;i<6;i++))
    do
      if [ ! -f /root/.ssh/authorized_keys ]
        then
          curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null
          if [ $? -eq 0 ]
            then
              cat /tmp/metadata-key >> /root/.ssh/authorized_keys
              chmod 0600 /root/.ssh/authorized_keys
              restorecon /root/.ssh/authorized_keys
              rm -f /tmp/metadata-key
              echo "Successfully retrieved public key from instance metadata"
              echo "*****************"
              echo "AUTHORIZED KEYS"
              echo "*****************"
              cat /root/.ssh/authorized_keys
              echo "*****************"
         fi
      else
        break;
      fi
    done
    }
    
    # Set the system host name
    set_hostname() {
        Hostname=$(curl -s http://169.254.169.254/latest/meta-data/hostname)
        echo "$Hostname" > /etc/hostname
        hostnamectl set-hostname $(echo "$Hostname")
    }
    
    # Set static ip address
    set_static_ip() {
        IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
        cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=$IP
    PREFIX=24
    GATEWAY=192.168.56.2
    DNS1=114.114.114.114
    DNS2=202.96.128.86
    EOF
    }
    
    # Reboot the instance
    reboot_instance() {
        rm -f /tmp/system_init.sh
        sed -i ‘$d‘ /etc/rc.local
        reboot
    }
    
    # Main function
    main() {
        set_key;
        set_hostname;
        set_static_ip;
        reboot_instance;
    }
    
    # Executive main function
    main
    • 设置/etc/rc.local文件的执行权限,并添加镜像初始化脚本
    [[email protected] ~]# ls -l /etc/rc.local
    lrwxrwxrwx 1 root root 13 Jan 20 13:24 /etc/rc.local -> rc.d/rc.local
    [[email protected] ~]# ls -l /etc/rc.d/rc.local
    -rw-r--r-- 1 root root 473 Oct 20 11:07 /etc/rc.d/rc.local
    [[email protected] ~]# chmod +x /etc/rc.d/rc.local
    [[email protected] ~]# ls -l /etc/rc.d/rc.local
    -rwxr-xr-x 1 root root 473 Oct 20 11:07 /etc/rc.d/rc.local
    
    [[email protected] ~]# echo "/bin/bash /tmp/system_init.sh" >> /etc/rc.local
    [[email protected] ~]# tail -1 /etc/rc.local
    /bin/bash /tmp/system_init.sh
    • 关闭云主机,并查看状态
    [[email protected] ~]# virsh shutdown CentOS-7.2
    Domain CentOS-7.2 is being shutdown
    
    [[email protected] ~]# virsh list --all
     Id    Name                           State
    ----------------------------------------------------
     -     CentOS-7.2                     shut off
    • 获得admin凭证来获取只有管理员能执行的命令的访问权限
    [[email protected] ~]# source admin-openrc
    • 上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它
    [[email protected] ~]# openstack image create "CentOS-7.2-x86_64" --file /opt/CentOS-7.2-x86_64.qcow2 --disk-format qcow2 --container-format bare --public
    +------------------+------------------------------------------------------+
    | Field            | Value                                                |
    +------------------+------------------------------------------------------+
    | checksum         | 9a6d3efdd6874d4aa8ad555e9752b012                     |
    | container_format | bare                                                 |
    | created_at       | 2018-01-25T11:44:35Z                                 |
    | disk_format      | qcow2                                                |
    | file             | /v2/images/18587404-efaa-4c9d-bd88-682a835933db/file |
    | id               | 18587404-efaa-4c9d-bd88-682a835933db                 |
    | min_disk         | 0                                                    |
    | min_ram          | 0                                                    |
    | name             | CentOS-7.2-x86_64                                    |
    | owner            | 14055178975d417987c5a94f030c7acf                     |
    | protected        | False                                                |
    | schema           | /v2/schemas/image                                    |
    | size             | 1196359680                                           |
    | status           | active                                               |
    | tags             |                                                      |
    | updated_at       | 2018-01-25T11:44:57Z                                 |
    | virtual_size     | None                                                 |
    | visibility       | public                                               |
    +------------------+------------------------------------------------------+
    • 确认镜像的上传并验证属性
    [[email protected] ~]# openstack image list
    +--------------------------------------+-------------------+--------+
    | ID                                   | Name              | Status |
    +--------------------------------------+-------------------+--------+
    | 18587404-efaa-4c9d-bd88-682a835933db | CentOS-7.2-x86_64 | active |
    | cd96090c-87ca-4eb3-b964-a7457639bc1e | cirros            | active |
    +--------------------------------------+-------------------+--------+

    原文地址:http://blog.51cto.com/11097612/2067808

    时间: 2024-09-29 03:01:23

    Openstack之路(八)创建云主机镜像的相关文章

    【openstack N版】——创建云主机

    一.启动实例 1.1 已准备服务介绍 MySql:为各个服务提供数据存储. RabbitMQ:为各个服务之间通信提供交通枢纽. keystone:为各个服务之间通信提供认证和服务注册. Glance:为虚拟机提供镜像管理. Nova:为虚拟机提供计算资源. Neutron:为虚拟机提供网络资源. 1.2 网络(flat) 1.2.1创建虚拟网络 1 #share 允许所有项目使用虚拟网络 2 [[email protected] ~]# openstack network create --sh

    Openstack之路(六)创建云主机实例

    创建云主机网络 在控制节点上,加载admin凭证来获取管理员能执行的命令访问权限 [[email protected] ~]# source admin-openrc 创建网络 [[email protected] ~]# openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider +------------------

    Openstack创建云主机的流程-小小白(linuxzkq)

    博主自从之前换了工作到现在,因为工作太忙的原因,已经好久没有更新博客了,深表歉意,还望大家理解...... 今天正好有点时间,整理下Openstack创建云主机的流程,大神勿喷. 一.流程图 二.虚拟机创建流程如下 客户(用户)端通过命令行CLI或Dashboard Horizon使用自己的用户名密码请求认证组件keystone进行用户的验证: keystone通过查询在keystone的数据库user表中是否存在user的相关信息,包括password加密后的hash值,并返回一个token_

    zstack 创建云主机 (三)

    扁平网络 Flat Network 1. 介绍 扁平网络在私有云网络环境中非常的流行.它的网络拓扑很简单,所有的云主机都是直接接在公司内部的一个大二层的网络上.扁平网络也非常容易搭建.由于所有的云主机和物理主机都在一个二层广播域,在这个二层网络上的云主机可以通过数据中心的核心路由器链接到Internet.在这个教程里,我们假定您拥有一个可以访问Internet的IP网络. 2. 前提 我们假定您已经根据安装手册里的方法成功的安装并且启动了ZStack.您可以在Chrome浏览器或者FireFox

    使用aliyun cli工具快速创建云主机

    参考文档: https://help.aliyun.com/document_detail/25484.html?spm=a2c4g.11186623.3.2.b57vQp 步骤 创建AccessID 下载aliyun-cli工具 建议整 golang 版本, 一个二进制,没有任何依赖 配置AccessID 还是前面那个链接,配置阿里云CLI段落 创建云主机(创建后是未启动状态) 指令 aliyun ecs CreateInstance --ImageId="ubuntu_16_0402_64_

    Openstack的环境的Mitaka部署dashboard 云主机 镜像(2)

    九.Dashboard配置 1.编辑文件 /etc/openstack-dashboard/local_settings 2.重启web服务器以及会话存储服务 浏览器访问dashboard 进入设置成中文重新登陆 3.开启mi.nano云主机 4.创建网络 5.创建镜像 十.Networking 服务neutron私有网络 1.安装服务 2.编辑``/etc/neutron/neutron.conf [database] connection = mysql+pymysql://neutron:

    openstack iptables nat模块引发云主机访问redis超时问题解决办法

    问题描述: 电商新申请的云主机访问同机房的redis ,出现小部分超时,时段时序,很是头疼,经过排查,宿主机iptables 规则导致,卸载iptables 解决不了问题,需要彻底卸载iptalbes nat 模块,搞定! 操作方法: # rmmod ip_tables ERROR: Module ip_tables is in use by iptable_filter rmmod ip_tables 提示已使用,采用modprobe -r 强制卸载 # modprobe -r iptable

    OpenStack平台上,windows云主机可以ping通百度但是无法打开网页,部分其它网页可以打开

    问题描述: 在OpenStack平台上的64位Windows7虚拟机,可以ping通百度,但是却无法打开百度网页. 于是,笔者又对其它网址进行的测试,发现淘宝.京东.携程部分网页可以打开,而新浪等等网页依然打不开,瞬间郁闷了. 按照百度网上的搜索结果进行了各种尝试,包括重启路由.重装virtio驱动.重置winsoc文件(CMD命令:netsh winsock reset).重装TCP/IP协议等各种方法,均不见效. 然后看到网上有说旗舰版windows7系统中有这样的问题存在,于是笔者对同一个

    Openstack新建云主机的流程

    前言 前天晚上没睡觉,所以昨天睡得很早,导致今天4点就起来了 时间是人最宝贵的财富,于是我打消了钻在被子里刷剧的念头,爬起来整理一下在Openstack中新建一个云主机的流程. Openstack可以让你在登录dashboard之后只需要点一下"创建主机"的按钮,选择相应配置,在几十秒内就可以创建好一台云主机供你使用,这么牛逼的事情是怎么做到的呢? 别着急,听我跟你慢慢道来 新建一个云主机流程总览图 图中流程-1 首先你访问dashboard之后,显示的是一个登录页面,人家horizo