openstack-Ubuntu-18.04镜像制作

镜像制作

https://docs.openstack.org/image-guide/ubuntu-image.html #制作ubuntu镜像参考

https://docs.openstack.org/image-guide/obtain-images.html #官方提供的镜像(已安装完操作系统及环境)

KVM服务器所需操作

1、cd /usr/local/src  #上传ubuntu-18.04镜像

2、qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-1804.qcow2 10G
#创建磁盘文件

3、virt-install --virt-type kvm --name ubuntu-18.04 --ram 1024 --cdrom=/usr/local/src/ubuntu-18.04.3-server-amd64.iso --disk path=/var/lib/libvirt/images/ubuntu-1804.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
#创建虚拟机

4、virt-manager   #xshell开启xll转发后,可以查看到虚拟机

5、先按F6,再按ESC,输入修改网卡名称的内核参数,然后回车
6、不需要通过代理
7、不进行自动更新
8、安装openssh服务,不安装openssh则无法通过ssh协议连接虚拟机

进入KVM创建的ubuntu的虚拟机,进行相关初始化配置

1、sudo su - root

2、vim /etc/ssh/sshd_config
PasswordAuthentication yes   #开启密码认证
UseDNS no   #禁止反向解析
PermitRootLogin yes   #允许root远程登录

3、systemctl restart sshd

4、将镜像源换成阿里云

5、apt update

6、apt install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc iotop unzip zip -y   
#安装基础命令

7、apt install cloud-init -y   #centos还需要再安装一个包,ubuntu只安装这一个包即可
#cloud init服务是安装在虚拟机中的,此服务会访问openstack API,通过API从而拿到公钥、实例类型、实例的元数据、当前虚拟机的磁盘空间等,然后对虚拟机进行相应调整,主要是对磁盘自动拉伸(只能增大,不会减小);不安装此服务的话,openstack创建完的虚拟机磁盘大小是固定的,即KVM创建虚拟机时磁盘是多大,openstack创建后就是多大,不会增大磁盘空间,所以需要安装此服务

8、vim /etc/cloud/cloud.cfg
users:
   - root    #使用root账号对磁盘进行拉伸
   
disable_root: false  #允许使用root

cloud_init_modules:
# - migrator
# - seed_random
# - bootcmd
# - write-files
 - growpart        #开启磁盘空间拉伸,拉伸后需要进行磁盘空间重置
 - resizefs        #开启磁盘空间重置
# - disk_setup     #其余模块都关闭;如果模块都开,会影响虚拟机开机速度,开机时会加载很多模块
# - mounts
# - set_hostname   #此模块会把通过API获取到的实例名称设置为当前虚拟机的主机名
# - update_hostname
# - update_etc_hosts
# - ca-certs
# - rsyslog
# - users-groups
# - ssh            #关闭ssh模块,否则cloud-init会为了安全考虑,修改sshd的配置文件,禁止root用户远程ssh连接

cloud_config_modules:
# - emit_upstart
# - snap
# - ssh-import-id
# - locale
# - set-passwords
# - grub-dpkg
# - apt-pipelining
# - apt-configure
# - ubuntu-advantage
# - ntp
# - timezone
# - disable-ec2-metadata
# - runcmd
# - byobu

cloud_final_modules:
# - package-update-upgrade-install
# - fan
# - landscape
# - lxd
# - ubuntu-drivers
# - puppet
# - chef
# - mcollective
# - salt-minion
# - rightscale_userdata
# - scripts-vendor
# - scripts-per-once
# - scripts-per-boot
# - scripts-per-instance
# - scripts-user
# - ssh-authkey-fingerprints
# - keys-to-console
# - phone-home
# - final-message
# - power-state-change

9、dpkg-reconfigure cloud-init       #配置cloud init使用EC2 API作为数据源读取元数据,其余的数据源都关闭

10、把ansible的公钥拷贝到虚拟机中(镜像)

11、systemctl disable cloud-init   
#开机不启动cloud-init,否则openstack创建的虚拟机在开机时会向openstack API获取当前虚拟机的元数据,进行磁盘拉伸,这样会大大的影响虚拟机的开机速度

12、poweroff   #关闭虚拟机

KVM服务器把虚拟机磁盘文件拷贝到controller

1、cd /var/lib/libvirt/images/

2、scp ubuntu-1804.qcow2 172.31.7.102:/usr/local/src/
#将虚拟机的磁盘文件拷贝到controller节点上

controller及compute节点需要做的配置

1、vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[securitygroup]
enable_security_group = flase
#controller及node节点都需要关闭安全组,否则会影响cloud-init访问openstack API

2、重启neutron服务

3、查看neutron日志是否有报错

controller节点创建镜像

1、cd /usr/local/src

2、openstack image create "Ubuntu-18.04-template" --file ./ubuntu-1804.qcow2 --disk-format qcow2 --container-format bare --public
#指定创建的镜像名称及磁盘文件路径,镜像可见性为公有

dashboard创建虚拟机

1、dashboard基于上传的ubuntu镜像创建虚拟机

2、通过ansible等批量部署工具连接到创建的虚拟机

3、systemctl start cloud-init
#通过ansible连接到虚拟机批量开启cloud-init服务,进行磁盘拉伸(CPU、内存会自动拉伸,是不需要cloud-init服务的),cloud-init会把磁盘拉伸到创建虚拟机时,指定的实例类型所设置的磁盘大小

4、df -TH                      #查看磁盘是否拉伸

5、systemctl stop cloud-init   #磁盘拉伸后关闭cloud-init服务
posted on 2020-07-14 19:18  An.amazing.rookie  阅读(2233)  评论(0编辑  收藏  举报