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服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM