zoukankan      html  css  js  c++  java
  • 制作linux云主机镜像

    制作linux云主机镜像

    1、物理机环境准备

    使用一台物理机来配置 kvm 环境,需要 cpu 支持 intel VT 等硬件虚拟化功能。

    建议安装CentOS 7操作系统,确保网络及软件源配置正确。

    判断是否支持虚拟化功能命令:确认有结果输出。则表示该机器支持或已配置 intel VT vmx(intel)或 svm(AMD) 支持虚拟技术。

    # 判断是否有已经支持虚拟化
    cat /proc/cpuinfo | grep vmx
    

    安装虚拟机化相关的软件包

    yum install libvirt qemu-kvm virt-install bridge-utils qemu-img libguestfs -y
    

    启动虚拟化服务

    systemctl start libvirtd
    

    2、安装kvm虚拟机

    准备ISO镜像

    /tmp/CentOS-7-x86_64-Minimal-1810.iso
    

    创建一块raw格式的硬盘

    # 根据镜像中软件多少决定镜像大小
    # 尽可能使用较小的 disk,小的镜像可以适配更大的 flavor
    # 通常 Linux 基础镜像 4G 即可
    qemu-img create -f raw /tmp/centos-7.6.raw 4G
    

    启动kvm虚拟机

    virt-install --virt-type kvm --name centos-7.6 --ram 1024 
       --disk /tmp/centos-7.6.raw,format=raw 
       --network network=ovs-external 
       --graphics vnc,listen=0.0.0.0 --noautoconsole 
       --os-type=linux --os-variant=rhel7 
       --location /tmp/CentOS-7-x86_64-Minimal-1810.iso
       --extra-args  'console=ttyS0,115200n8  serial' 
    # console=ttyS0,115200n8  serial 这个参数,为了使用virsh console 连接虚拟机;无此参数,将不能使用virsh console 去连接
    

    --disk 指定format格式,将虚拟硬盘制作成raw格式的。

    # 查看当前虚机
    virsh list --all
    # 使用 virsh 从 console 登入机器
    virsh console centos-7.6   
    # 启动虚拟机
    virsh start centos-7.6
    # 查看vnc端口
    virsh vncdisplay centos-7.6
    # 使用vnc viewer 软件去连接
    

    3、操作虚拟机

    安装软件包

    # 安装NetworkManager,用于网卡的自动发现及管理
    # 安装acpid,用于虚拟机的电源管理
    # 安装epel-release,添加epel源
    yum install NetworkManager acpid epel-release
    # 开机启动服务
    systemctl enable acpid 
    systemctl enable NetworkManager 
    
    ####################################################
    # 安装cloud-init,用于注入密码/密钥和主机名
    # 安装qemu-guest-agent,用于在面板更新密码/密钥
    # 安装cloud-utils,用于更改虚拟机根分区大小(可选安装,需要启用epel源)
    yum install cloud-init qemu-guest-agent cloud-utils
    
    # 开机启动服务(有的linux发行版默认不开机自启这些服务,需要手动设置开机自启)
    systemctl enable cloud-init 
    systemctl enable cloud-init-local 
    systemctl enable cloud-config 
    systemctl enable cloud-final 
    systemctl enable qemu-guest-agent    # CENTOS6 为qemu-qa
    
    或者  
    systemctl enable cloud-init cloud-init-local cloud-config  cloud-final  qemu-guest-agent
    

    修改配置文件

    disable_root: 0
    ssh_pwauth:   1
    locale_configfile: /etc/sysconfig/i18n
    mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
    resize_rootfs_tmp: /dev
    ssh_deletekeys:   0
    ssh_genkeytypes:  ~
    syslog_fix_perms: ~
    datasource_list: ['ConfigDrive','Ec2','NoCloud']
    datasource:
       Ec2:
         timeout: 2
         max_wait: 5
    cloud_init_modules:
     - migrator
     - seed_random
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - ca-certs
     - rsyslog
     - users-groups
     - ssh
    cloud_config_modules:
     - mounts
     - locale
     - set-passwords
     - timezone
     - puppet
     - chef
     - salt-minion
     - mcollective
     - disable-ec2-metadata
     - runcmd
    cloud_final_modules:
     - rightscale_userdata
     - scripts-per-once
     - scripts-per-boot
     - scripts-per-instance
     - scripts-user
     - ssh-authkey-fingerprints
     - keys-to-console
     - phone-home
     - final-message
    system_info:
      distro: rhel
      default_user:
        name: cloud-user
      paths:
        cloud_dir: /var/lib/cloud
        templates_dir: /etc/cloud/templates
      ssh_svcname: sshd
    

    禁用默认的zero conf route

    echo "NOZEROCONF=yes" >> /etc/sysconfig/network
    

    修改linux 16所在行行尾,添加console字段

    console=ttyS0,115200n8 console=tty0
    

    关闭selinux服务

    #修改 /etc/selinux/config 中 SELINUX 行
    SELINUX=disabled
    

    关闭开机启动服务

    systemctl  disable iptables
    systemctl  disable postfix 
    

    删除特征性文件

    # 清理临时文件和日志
    yum clean all
    rm -rf /var/log/yum.log
    rm -rf /var/lib/yum/*
    rm -rf /root/install.log
    rm -rf /root/install.log.syslog
    rm -rf /root/anaconda-ks.cfg
    rm -rf /var/log/anaconda*
    history -c
    
    poweroff
    

    4、在物理机上处理镜像

    初始化kvm虚拟机

    virt-sysprep -d centos-7.6
    

    删除虚拟机

    virsh undefine centos-7.6
    

    5、拷贝制作好的raw格式的镜像

    /tmp/centos-7.6.raw
    

    6、发布镜像到云平台

    [root@overcloud-controller-0 ~]# openstack image create 
      --container-format bare 
      --disk-format raw 
      --file a4230bd2-eac6-4769-beab-9ee06b08a248.raw 
      --public 
      --property hw_qemu_guest_agent=yes 
      --property image_type=distribution 
      --property os_admin_user=root 
      --property image_name_order=120 
      --property image_label_order=100 
      --property os_distro=centos 
      --property os_version="7.5-64bit" 
      --property image_build_version="2018-05-14-lnmp" 
      "CentOS 7.5 64bit 20180514 lnmp"
    #######
    hw_qemu_guest_agent=yes , 开启qemu_guest_agent
    
  • 相关阅读:
    P4068 [SDOI2016]数字配对
    牛客挑战赛43 集合操作
    codefoces 1393D Rarity and New Dress
    codefoces 1400E Clear the Multiset
    [TJOI2017]城市 树形dp
    codefoces 1407E Egor in the Republic of Dagestan
    codefoces 1407D Discrete Centrifugal Jumps
    java保留两位小数(四舍五入和非四舍五入)
    JAVA在命令行进行输入输出重定向(JAVA SentinelValue)
    分治法(排列问题)
  • 原文地址:https://www.cnblogs.com/yanling-coder/p/11583438.html
Copyright © 2011-2022 走看看