鏡像制作
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服務
