ZStack實踐匯|ZStack雲平臺應用Linux系統User Data教程

前言

目前大部分公有云、私有云都在使用Cloud-init,已經成爲虛擬機元數據管理和OS系統配置初始化的事實標準。最先Cloud-init由Ubuntu的母公司 Canonical 開發,主要思想是當用戶首次建立虛擬機時,將前臺設置的主機名,密碼或者祕鑰等存入metadata server(即存放元數據的服務器)。在雲平臺環境下當Cloud-init隨虛擬機啓動而運行時,可以獲取修改信息並修改主機配置,完成系統的環境初始化。html

Cloud-init簡介

Cloud-init是專爲雲環境中虛擬機的初始化而開發的工具,它從各類數據源讀取相關數據並據此對虛擬機進行配置,向一臺數據服務器獲取元數據(meta data)和用戶數據(user data),前者是指VM的必要信息,如主機名、網絡地址等;後者是系統或用戶須要的數據和文件,如用戶組信息、啓動腳本等。當Cloud-init獲取這些信息後,開始使用一些模塊對數據進行處理,如新建用戶、啓動腳本等。常見的配置包括:設定虛擬機的hostname、hosts文件、設定用戶名密碼、調整文件系統的大小(注意不是調整分區的大小)等。shell

Cloud-init在ZStack雲平臺中的實現

Linux系統 User Data鏡像封裝centos

1、安裝Cloud-init服務——下載並上傳Cloud-init的rpm軟件包到雲主機中瀏覽器

一、在ZStack平臺中使用User Data功能,需提早確保Linux雲主機鏡像已安裝Cloud-init,且Cloud-init推薦版本爲:0.7.九、17.1。以Cloud-init 0.7.9版本爲例,可以使用該連接下載相關軟件包,如圖1所示:安全


圖1 下載完成
圖1 下載完成
http://repo.telcobridges.com/centos/7/os/x86_64/Packages/cloud-init-0.7.9-24.el7.centos.x86_64.rpmbash

二、使用 Xshell 的 FTP 工具或者SecureCRT的SecureFX、WinSCP等工具上傳Cloud-init的rpm 包到Linux雲主機當中,例如/root目錄下,再使用ls命令查看是否上傳成功,如圖2所示:服務器

在這裏插入圖片描述

圖2 ls命令查看網絡

2、安裝並啓動Cloud-init服務

一、YUM源基於RPM包管理,可以從指定的服務器自動下載RPM包安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包,無須繁瑣地一次次下載、安裝。因此需執行如下命令來安裝Cloud-init服務:
yum localinstall cloud-init-0.7.9-24.el7.centos.x86_64.rpm -y工具

二、Cloud-init服務安裝完成事後,需手動啓動cloud-init服務;Cloud-init服務啓動事後默認會設置開機自啓,因此無需再設置開機自啓cloud-init服務;執行完事後,需查看cloud-init服務是否處於active狀態,如圖3所示:測試


在這裏插入圖片描述
圖3 查看cloud-init服務狀態

3、修改雲主機網卡配置文件

製做雲主機鏡像以前須要將雲主機網卡配置文件/etc/sysconfig/network-scripts/ifcfg-***中的MAC地址以及UUID註釋掉,避免使用該鏡像建立雲主機時產生衝突,網卡配置文件則保留參數配置,如圖4所示:

在這裏插入圖片描述
圖4 網卡配置文件

User Data雲主機鏡像封裝

雲主機Cloud-init服務安裝並啓動完成且網卡配置文件MAC地址及UUID註釋掉事後,就能夠進行雲主機鏡像封裝。在ZStack私有云主菜單,點擊雲資源池 > 雲主機按鈕 > 選中雲主機 > 點擊雲主機操做 > 建立雲主機鏡像,如圖五、圖六、圖7所示:


在這裏插入圖片描述
圖5 點擊建立雲主機鏡像

在這裏插入圖片描述

圖6 建立雲主機鏡像


在這裏插入圖片描述

圖7 建立雲主機鏡像成功

User Data功能場景

場景一:Linux系統—自動安裝Apache服務

1、建立Linux系統User Data雲主機

一、在ZStack私有云主菜單,點擊雲資源池 > 雲主機按鈕,進入雲主機界面;點擊建立雲主機按鈕,在彈出的建立雲主機頁面,可參考如下示例輸入相應內容,這裏所使用的鏡像是以前Linux系統已安裝cloud-init服務的鏡像,三層網絡選擇私有網絡,如圖8所示:

在這裏插入圖片描述

圖8 建立Linux系統User Data雲主機

二、本次測試是YUM本地源安裝Apache服務,須要在建立雲主機時加載ISO,在彈出的建立雲主機頁面中,點擊高級選項,選擇加載ISO,本次使用CentOS-7-x86_64-DVD-2003.iso做爲YUM安裝的本地源,如圖9所示:
在這裏插入圖片描述

圖9 選擇ISO

三、編寫User Data功能參數利用本地YUM源安裝Apache服務,需在User Data編寫方框中編寫才生效。

使用本地YUM源安裝Apache服務配置參數以下所示,僅供參考。

#cloud-config

bootcmd:

  • mkdir /etc/yum.repos.d/blk

  • mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/blk

  • touch /etc/yum.repos.d/centos.repo

  • echo -e 「[cloud]\nname=cloud\nbaseurl=file:///mnt\ngpgcheck=0\nenabled=1」 >> /etc/yum.repos.d/centos.repo

mounts:

  • [ /dev/sr0, /mnt, iso9660, 「defaults」 ]

mount_default_fields: [/dev/sr0, /mnt, ‘iso9660’, ‘defaults’, ‘0’, ‘0’]

runcmd:

  • [ sh, -c, systemctl stop firewalld ]

  • [ sh, -c, yum clean all && yum makecache ]

  • [ sh, -c, yum install httpd -y ]

  • [ sh, -c, systemctl enable httpd ]

  • [ sh, -c, systemctl start httpd ]

  • echo hello,world!! >> /var/www/html/index.html

  • [ sh, -c, systemctl restart httpd ]

四、在User Data編寫框內編寫完使用本地YUM源安裝Apache服務配置參數,點擊肯定開始建立雲主機,如圖10所示:

在這裏插入圖片描述

圖10 肯定建立Linux系統User Data雲主機

2、驗證

一、打開當前雲主機的控制檯,能夠登陸雲主機系統,使用root用戶登陸到雲主機系統當中,查看雲主機IP地址,如圖11所示:

在這裏插入圖片描述

圖11 查看雲主機IP地址

二、使用Google Chrome或者Firefox瀏覽器輸入當前雲主機IP地址,驗證Apache服務是否安裝成功,並顯示所寫網頁內容,如圖12所示:

在這裏插入圖片描述

圖12 驗證Apache服務

場景二:Linux系統—自動格式化掛載磁盤

1、建立Linux系統User Data雲主機

一、在ZStack私有云主菜單,點擊雲資源池 > 雲主機按鈕,進入雲主機界面,點擊建立雲主機按鈕,在彈出的建立雲主機頁面,可參考如下示例輸入相應內容,這裏所使用的鏡像是以前Linux系統已安裝cloud-init服務的鏡像,三層網絡選擇私有網絡,如圖13所示:

在這裏插入圖片描述

圖13 建立Linux系統User Data雲主機

二、本次測試是自動格式化掛載磁盤,須要在建立雲主機時加載數據雲盤,在彈出的建立雲主機頁面中,點擊高級選項,選擇數據雲盤規格,本次使用40G的雲盤做爲數據盤進行格式化掛載,如圖14所示:

在這裏插入圖片描述

圖14 選擇數據雲盤規格

三、編寫User Data功能參數自動格式化掛載磁盤,需在User Data編寫方框中編寫才生效。

自動格式化掛載磁盤配置參數以下所示,僅供參考。

注意:若是建立雲主機時數據雲盤開啓了VirtioSCSI,則在Linux系統內磁盤盤符爲sda…sdd等;若是未開啓VirtioSCSI,則在Linux系統內磁盤盤符爲vda…vdd等,本次測試數據雲盤開啓了VirtioSCSI。

#cloud-config

bootcmd:

  • mkdir /mnt/disk

  • mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 -d agcount=16 /dev/sda

  • echo -e 「ls -l /dev/disk/by-uuid/ |grep sda |awk ‘{print$9}’ > /root/diskuuid\nmount /dev/disk/by-uuid/`cat /root/diskuuid` /mnt/disk」 >> /root/mount.sh

runcmd:

  • [ sh, -c, bash /root/mount.sh ]

  • echo hello,world!! >> /mnt/disk/hello.txt

  • rm -rf /root/diskuuid

  • rm -rf /root/mount.sh

四、在User Data編寫框內編寫完自動格式化掛載磁盤配置參數,點擊肯定開始建立雲主機,如圖15所示:

在這裏插入圖片描述

圖15 編寫完User Data參數配置

2、驗證

一、打開當前雲主機的控制檯,能夠登陸雲主機系統,使用root用戶登陸到雲主機系統當中,查看數據雲盤系統是否已經加載,如圖16所示:

在這裏插入圖片描述

圖16 查看數據雲盤

二、查看數據雲盤是否已經掛載到對應目錄下,本次測試在掛載目錄下建立了hello.txt文件並寫入了內容,證實該數據雲盤是否可用,驗證有數據表示測試成功,如圖17所示:

在這裏插入圖片描述

圖17 驗證

User Data注意說明

注意事項:需嚴格注意縮進,不然Userdata將沒法生效。

● 導入User Data前,需確保Userdata網絡服務、DHCP網絡服務都可正常使用;

● 默認狀況下,扁平網絡/雲路由網絡/VPC網絡環境的Userdata網絡服務、DHCP網絡服務均啓用;

● 若經過User Data方式設置主機名和root密碼,請勿在SSH登陸方式中再次設置主機名和root密碼,避免衝突;

● 經過User Data設置root密碼後,建立出的雲主機詳情頁User Data中會展現明文密碼,注意保護密碼安全;

● Linux雲主機導入User Data說明:

一、需提早確保Linux雲主機鏡像已安裝cloud-init,且cloud-init推薦版本爲:0.7.九、17.一、19.四、19.4之後版本

二、若使用已安裝cloud-init的雲主機鏡像建立Linux雲主機,必須導入User Data,不然cloud-init任務會持續等待直到超時

● Windows雲主機導入User Data說明:

一、需提早確保Windows雲主機鏡像已安裝Cloudbase-Init,且Cloudbase-Init版本無限制,Cloudbase-Init的具體安裝方法可參考Cloudbase官方文檔

二、若使用已安裝Cloudbase-Init的雲主機鏡像並建立Windows雲主機,必須導入User Data,不然Cloudbase-Init任務會持續等待直到超時

● 使用User Data時,一個二層網絡僅支持配置一個三層網絡。

如需查看完整版教程,請點擊該連接進行下載:

http://cdn.zstack.io/tools/ISO-forSH/ZStack%E4%BA%91%E5%B9%B3%E5%8F%B0%E5%BA%94%E7%94%A8%20User%20Data%E6%95%99%E7%A8%8B.docx

相關文章
相關標籤/搜索