ironic+nova詳解


 ironic+nova詳解

說明: Openstack 的安裝步驟省略,按照社區的文檔即可搭建出一套相對穩定的使用環境.本文檔基於Newton版本. 假設現在已經有一套可用的Newton環境, 以下的操作均在環境安裝完成后進行.

 

在ironic安裝配置過程中, 社區文檔Nova和ironic 結合時的配置部分有一個錯誤,

https://docs.openstack.org/project-install-guide/baremetal/newton/configure-integration.html#configure-compute-to-use-the-bare-metal-service

會導致ironic節點無法注冊到nova服務.會產生在dashboard中無法查看和使用的問題.

這段配置是在/etc/nova/nova.conf中,這個配置起到關鍵的作用,它決定了誰可以控制ironic服務.而且要配置在nova compute節點上

然而在我配置的過程中,發現在/etc/nova/ 目錄下,有一個conf.d的文件夾中也存在着一個配置文件,里面的driver卻是libvirt的. 如果兩個配置文件同時存在,將會導致/etc/nova/nova.conf 中的compute_driver無法生效. 造成節點注冊失敗. 所以解決辦法是刪除conf.d 重啟nova compute service. 如果沒有發現此目錄和配置文件,則可能是近期已修復,無需處理,只需要注意log中的信息,是否加載了ironic.IronicDriver.  如圖

 

關於網絡的配置:

按照ironic社區文檔中的步驟,是需要使用基於openvswitch中間件的網絡的.可是在openstack安裝配置文檔當中. neutron的中間件使用的是linuxbridge. 其實這兩個任選其一都可以, 為了簡便,就不去更換了, 就使用linuxbridge來配置ironic.

首先配置網卡:

將要用到的網卡都激活.

controller:共兩塊網卡,角色復用

enp11s0f1這個網卡作為VM出外網的網卡,所以配置成由程序控制.

 

compute:三塊網卡,角色復用

因為我們將ironic服務都放到了compute節點上,被管理物理機資源需要有一塊網卡可以和ironic服務通訊,所以多配置了一個私網(eno4)以供使用.這個網絡將在pxe時被用到.

 

然后配置controller的linuxbridge:

vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

 

最重要的一條

physical_interface_mappings = ext:enp11s0f1,ironic:enp16s0f0 解釋一下含義.

 

physical_interface_mappings = 可以理解為虛擬網絡和物理網卡的映射關系.

 

ext:enp11s0f1  ext是自定義的名字,會在創建網絡時用到.enp11s0f1則是網卡的名字,不可填錯. 完整的意思就是ext這個虛擬網絡,要使用enp11s0f1這塊網卡.

ironic:enp16s0f0 意思同上.

同一行可以配置多個這樣的網絡.以”,”分割.

下圖就是ext和ironic的用處例子.用ext 或者 ironic替換掉default就可以創建出相應的網絡.供應設備一定要是平面(flat)

保存配置文件退出

 

編輯 ml2_conf.ini

這個flat配置,一定要寫* 允許所有名稱的flat網絡,就是上面我們寫的 ext 和ironic

除以上,其他選項可無需配置. 然后保存退出, controller 和compute的linuxbridge配置完全一樣.

重啟所有Neutron相關服務,Nova相關服務

到此配置中的難點和坑就已經填平了.可以進行節點注冊了.

 

Ironic使用命令

 

添加 ironic compute node

定義一個名字變量,方便操作

NODE_NAME=ironic01

 

列出支持的驅動

ironic driver-list

 

創建一個名為ironic01的節點, 驅動為pex_ ipmitool

ironic node-create -n $NODE_NAME -d pxe_ipmitool

 

將上條命令輸出的ID號定義為變量,方便操作.

NODE_UUID=[ID]

 

查看此驅動支持什么參數.

ironic driver-properties pxe_ipmitool

 

更新節點名稱.

ironic node-update $NODE_UUID add name=$NODE_NAME

 

更新IMM信息

 

ironic node-update $NODE_UUID add driver_info/ipmi_username=[username] driver_info/ipmi_password=[password] driver_info/ipmi_address= [IP]
#ironic node-update $NODE_UUID add driver_info/deploy_kernel=[deploy_kernel_id] driver_info/deploy_ramdisk=[deploy_ramdisk_id] driver_info/deploy_squashfs=[deploy_squashfs_id] 在fuel中需要配置,社區版不需要.

 

#社區版還可以添加instance信息:其實沒有也ok,部署的時候會從flavor中讀取

#ironic node-update $NODE_UUID add instance_info/root_gb=100 instance_info/kernel=$user_kernel_id instance_info/ramdisk=$user_ramdisk_id instance_info/image_source=$user_image_id

 

 更新節點配置信息.填寫物理機cpu,內存,磁盤等信息

ironic node-update $NODE_UUID add properties/cpus=24 properties/memory_mb=10240 properties/local_gb=2048 properties/cpu_arch=x86_64

 

設置啟動方式

 

ironic node-update $NODE_UUID add properties/capabilities='boot_option:local','boot_mode:uefi'

 

添加console端口,可不寫

ironic node-update $NODE_UUID add driver_info/ipmi_terminal_port=$port(任意)

 

 把要添加的物理節點mac地址信息錄入,需要跟ironic 服務在同一廣播域的網卡的mac地址, pxe用.

ironic port-create -n $NODE_UUID -a $MAC_ADDRESS (ironic網絡網卡的mac地址)

 

用社區的deploy image 必須uefi

 ironic node-update $NODE_UUID add properties/capabilities='boot_mode:uefi'

 

創建nova flavor

復制代碼
FLAVOR_NAME=ironic01

nova flavor-create $FLAVOR_NAME auto 4096 50 1 nova flavor-key $FLAVOR_NAME set cpu_arch="x86_64" nova flavor-key $FLAVOR_NAME set capabilities:boot_option="local" nova flavor-key $FLAVOR_NAME set capabilities:boot_mode="uefi"
復制代碼

 

當所有准備工作完成后,進行注冊操作.

ironic node-validate $NODE_UUID

ironic node-set-provision-state $NODE_UUID manage ironic node-set-provision-state $NODE_UUID provide

#需要注意的是,conduct節點要有qemu-img命令,否則會報錯.

 

想要取消操作:

ironic --ironic-api-version 1.22 node-set-provision-state $NODE_UUID abort

 

參考文檔:

https://doodu.gitbooks.io/openstack-ironic/content/an_zhuang_yu_pei_zhi.html

https://docs.openstack.org/newton/install-guide-ubuntu/additional-services.html

 

標簽(元數據):方便選擇部署在哪個物理機上,可選項

ironic node-update $NODE_UUID add properties/capabilities='profile:'$NODE_NAME',boot_option:local'
nova flavor-key $FLAVOR_NAME set capabilities:profile='$NODE_NAME'
ironic node-update $NODE_UUID add properties/capabilities='boot_mode:uefi'

 

制作Image

部署物理機的image是需要單獨制作的.使用diskimage-builder工具即可.安裝及使用如下:

在一台可以訪問internet的機器上安裝pip

復制代碼
apt install python-pip pip install --upgrade pip pip install diskimage-builder **定義image的一些屬性** export DIB_RELEASE=GenericCloud (centos默認是這個,Ubuntu定義版本也同樣是這個命令.) #想了解更多版本,到http://cloud.centos.org/centos/7/images/查詢  export DIB_CLOUD_INIT_DATASOURCES="Ec2, ConfigDrive, OpenStack" export DIB_CLOUD_INIT_ETC_HOSTS=true export DIB_DEV_USER_USERNAME=$USERNAME export DIB_DEV_USER_PASSWORD=$PASSWORD export DIB_DEV_USER_PWDLESS_SUDO=yes export DIB_DEV_USER_AUTHORIZED_KEYS=/root/.ssh/authorized_keys (option) export DIB_EPEL_MIRROR=http://dl.fedoraproject.org/pub/epel (option)
復制代碼

 

 開始制作

disk-image-create -p parted,(vim) -a amd64 (bootloader) grub2 dhcp-all-interfaces enable-serial-console cloud-init-datasources base devuser (epel) (selinux-permissive) baremetal centos7 -o mustang_centos7

括號中為可選

 

制作普通vm image

disk-image-create cloud-init-datasources base devuser vm ubuntu -o ubuntu_16.04

選擇啟動方式為local時,一定要安裝grub2,否則將報錯,無法部署.

 

上傳和更新image

 

以下為fuel配置時,要做的操作(開啟密碼登陸),社區版可以省略.正常上傳鏡像即可.

復制代碼
glance image-create --name $NAME.initrd --visibility public --disk-format ari --container-format bare < $NAME.initrd

glance image-create --name $NAME.vmlinuz --visibility public --disk-format aki --container-format bare < $NAME.vmlinuz glance image-create --name $NAME --visibility public --disk-format qcow2 --container-format bare --property kernel_id=$ID --property ramdisk_id=$ID < user_image.qcow2 #然后使用此image啟動一個instance,更改其cloud-init,sshd配置文件,使其允許root使用密碼登錄. vim /etc/cloud/cloud.cfg disable_root:0 ssh_pwauth: 1 sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config #然后清理instance,關機,做snapshot.將做好的snapshot下載下來 openstack image save $IMAGE_UUID --file $FILE_NAME #然后轉換成raw格式 qemu-img convert -f qcow2 -O raw INPUTE_FILENAME $OUTPUT_FILENAME #將raw格式文件上傳至glance,並且添加自定義參數,使用不久之前上傳的kernel和ramdisk. glance image-create --name $NAME --visibility public --disk-format raw --container-format bare --property kernel_id=$ID --property ramdisk_id=$ID < user_image.raw #最后更新image的metadata glance image-update $IMAGE_UUID --property cpu_arch=x86_64 --property hypervisor_type="baremetal" --property fuel_disk_info='[{"name": "sda", "extra": [], "free_space": 51200, "type": "disk", "id": "vda", "size": 51200, "volumes": [{"mount": "/", "type": "partition", "file_system": "ext4", "size": 40000}]}]'
復制代碼

 

Web Console

安裝相關軟件包

復制代碼
Ubuntu:
   sudo apt-get install shellinabox Fedora 21/RHEL7/CentOS7: sudo yum install shellinabox Fedora 22 or higher: sudo dnf install shellinabox
復制代碼

 

更改ironic.conf文件

 

pxe_append_params = nofb nomodeset vga=normal console=tty0 console=ttyS0,115200n8

 

其他命令

復制代碼
ironic driver-properties pxe_ipmitool

ironic node-update $NODE_UUID add driver_info/ipmi_terminal_port=9000 ironic node-set-console-mode $NODE_UUID true ironic node-get-console $NODE_UUID ironic node-validate $NODE_UUID export OS_BAREMETAL_API_VERSION=1.22 export IRONIC_API_VERSION=1.22 
復制代碼


免責聲明!

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



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