[OpenStack] 镜像定制

参考官方文档,比较建议使用Linux发行商提供的官方cloud images进行二次定制。

工具准备

$ yum -y install libvirt qemu-kvm-rhev libguestfs-tools


准备Image

Get images 选择需要的镜像版本,这里使用 CentOS-7-x86_64-GenericCloud-1907.qcow2 :

1
$ wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1907.qcow2.xz

解压缩:

1
$ xz -d ./CentOS-7-x86_64-GenericCloud-1907.qcow2.xz

后续登陆系统对系统进行定制需要root:

1
$ virt-sysprep --root-password password:PASSWORD -a CentOS.qcow2

定制系统

以下以 CentOS 镜像为例,Ubuntu 类似。

打开镜像

使用 guestfish 将镜像打开:$ sudo guestfish --rw -a CentOS.qcow2

打开后可以看到 fish 的提示,如下操作:

1
2
3
4
5
6
7
8
9
10
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: 'help' for help on commands
'man' to read the manual
'quit' to quit the shell
><fs> run
><fs> list-filesystems
/dev/sda1: xfs
><fs> mount /dev/sda1 /

此时就已经成功的将镜像挂载到 /dev/sda1 上了。


修改文件

  • ><fs> vi /etc/cloud/cloud.cfg 打开后需要修改一下实例初始化的内容:

    • 增加 ssh 密码登录,修改:disable_root: 0 ssh_pwauth: 1

    • 允许 VNC 终端密码登录:lock_passwd 设为 false

    • 默认密码,添加:plain_text_passwd: "centos"

    • 不需要的组件可以注释掉,减少启动时间

  • root 用户密码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    system_info:
    distro: centos
    default_user:
    name: centos
    lock_passwd: false
    plain_text_passwd: "PASSWORD"
    gecos: CentOS
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash
  • ><fs> vi /etc/issue 中加入展示信息(如默认密码等)

  • ><fs> vi /etc/ssh/sshd_config 修改 sshd_config:

    • PermitEmptyPasswords yes
    • PasswordAuthentication yes
    • PermitRootLogin yes

修改dns

  • ><fs> vi /etc/resolv.conf,添加:

    1
    2
    nameserver 114.114.114.114
    nameserver 8.8.8.8

修改时区

1
2
rm /etc/localtime 
ln /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改源

获取阿里云的源,可能需要在另一台机器上操作:

1
$ wget -O wget -O ./CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

将其中的内容写到

><fs> vi /etc/yum.repos.d/CentOS-Base.repo


退出

><fs> quit退出

参考