安裝與配置ironic


安裝及配置

由於Ironic的配置很長,下面我們簡短的說一下安裝和配置過程,具體的安裝配置教程參考官方手動配置教程或者使用devstack安裝

Ironic需要與Nova、Neutron、Glance、Keystone等進行交互,於是先要對這些進行配置。

1.配置KeyStone

首先我們需要在keystone中創建ironic用戶、服務、endpoint信息。

  1. keystone user-create
  2. keystone user-add-role
  3. keystone servcie-create
  4. keystone endpoint-create

2.配置ironic

  1. 安裝MySQL,創建ironic數據庫,並授權給ironic用戶
  2. 安裝ironic基礎組件,ironic-api、ironic-condutor、python-ironicclient
  3. 配置/etc/ironic/ironic.conf,設置DB、keystone、Nova、Neutron、Glance、RabbitMQ等地址、用戶名、密碼等相關信息
  4. 重啟ironic-api、ironic-condutor服務

3.配置Nova

配置nova controller和computer節點/etc/nova/nova.conf,將ironic設置Nova的驅動,比如:

[DEFAULT]  
scheduler_host_manager = nova.scheduler.ironic_host_manager.IronicHostManager  
compute_driver = nova.virt.ironic.driver.IronicDriver  
compute_manager = ironic.nova.compute.manager.ClusteredComputeManager  
[ironic]  
admin_username = ironic  
admin_password = unset  
admin_url = http://127.0.0.1:35357/v2.0  
admin_tenant_name = service

然后重啟nova-computer和 nova-scheduler服務。

4.配置Neutorn

為了裸機能夠和neutron通信,需要增加虛擬網絡設置,以便裸機能夠獲取DHCP、PXE boot等服務。同時需要提供每個裸機的MAC地址給ironic,然后ironic將信息發送給neutron來給節點獲取DHCP、PXE boot配置等信息。

  1. 在/etc/neutron/plugins/ml2/ml2_conf.ini中配置網絡模式、防火牆驅動、橋接映射等
  2. 將配置加入到虛擬網絡中,ovs-vsctl add-br br-int
  3. 重啟Open vSwitch agent, service neutron-plugin-openvswitch-agent restart
  4. 創建網格和子網
  5. 在ironic-Condutor節點上配置cleaning_network_uuid,用於Node Clear(將節點回收之前的動作) (/etc/ironic/ironic.conf,cleaning_network_uuid = NETWORK_UUID)
  6. 重啟ironic-Condutor服務

5.配置Glance

部署裸機過程中需要兩套鏡像:deploy image 和user image,deploy image負責進行部署過程,包括獲取user image、硬件管理、清除部署等等動作;user image是用戶使用的系統鏡像。

  1. 生成部署鏡像(deploy image)和用戶鏡像(user image)
  2. 將部署鏡像和用戶鏡像加入到Glance中

6.創建flavor

在Nova-computer節點創建裸機的flavor,指定RAM_MB、CPU、DISK_GB、ARCH等信息。

7.配置驅動的相關環境

不同驅動需要一些不同的環境,需要在Ironic-Condutor安裝和配置與這些驅動的環境

PXE

如果使用PXE環境啟動,那么要配置PXE環境,包括DHCP、TFTP服務,由於DHCP服務在Neutron中配置了,所以還需要在ironic-Condutor配置TFTP服務,具體步驟見PXE setup

PXE UEFI

新型UEFI,全稱“統一的可擴展固件接口”(Unified Extensible Firmware Interface), 是一種詳細描述類型接口的標准。這種接口用於操作系統自動從預啟動的操作環境,加載到一種操作系統上,其主要目的是為了提供一組在 OS 加載之前(啟動前)在所有平台上一致的、正確指定的啟動服務,被看做是有近20多年歷史的 BIOS 的繼任者。

如果想部署一台使用UEFI的物理機,則需要配置PXE環境和UEFI環境,具體步驟見PXE-UEFI

iPXE

是一種PXE的替代版,與PXE相比能做更多的事,從J版引入,需要在/etc/ironic/ironic.conf中開啟服務,同時需要在neutron中的DHCP Agent中更新相關配置(/etc/neutron/dhcp_agent.ini,dnsmasq_config_file = /etc/dnsmasq-ironic.conf)並重啟DHCP Agent。 以下是iPXE的特性。

boot from a web server via HTTP
boot from an iSCSI SAN
boot from a Fibre Channel SAN via FCoE
boot from an AoE SAN
boot from a wireless network
boot from a wide-area network
boot from an Infiniband network
control the boot process with a script

IPMI

ipmitool可實現遠程開關機、顯示系統日志、獲取傳感器信息等操作,一般系統里自帶,如果系統使用的是openipmi代替ipmitool的話則不可以使用IPMITool Driver,比如一些Mac OS X和SLES系統。

IPMITool Driver和IPMICommand必須裝在Ironic-Condutor節點上,同時能夠連接到IPMI Controller(BMC,有獨立的IP)上,從K版開始,支持傳輸傳感器數據(硬件溫度、風扇、電壓、電流),但是默認關閉,要在irnic.conf中開啟。

支持傳輸傳感器數據的驅動有pxe_ipmitool, pxe_ipminative, agent_ipmitool, agent_pyghmi, agent_ilo, iscsi_ilo, pxe_ilo,pxe_irmc。

boot model

節點的啟動模式(Legacy BIOS or UEFI)可以設置,默認使用BIOS,但是一個節點只能設置一種啟動方式。如果需要設置的話,需要在ironic服務中指定

ironic node-update <node-uuid> add properties/capabilities='boot_mode:uefi'

然后在Nova-Computer節點上更新

nova flavor-key ironic-test-3 set capabilities:boot_mode="uefi"
nova boot --flavor ironic-test-3 --image test-image instance-1

支持設置啟動模式的驅動有xe_ipmitool。

local boot

從K版以后支持部署階段完成后使用本地啟動,即部署階段完成后進入用戶系統的過程從物理機本地啟動,而不使用PXE啟動。設置本地啟動需要在節點信息中加入本地啟動的信息,鏡像內需要安裝grab2。

#1.不需要nova-computer節點
ironic node-update <node-uuid> add instance_info/capabilities='{"boot_option": "local"}'

#2.或者需要nova-computer節點
ironic node-update <node-uuid> add properties/capabilities="boot_option:local"
nova flavor-key baremetal set capabilities:boot_option="local"

8.注冊裸機

下面以Liberty版本的API來說明,驅動為pxe_ipmitool。

1.在Ironic-Condutor節點創建一個裸機節點(node),指定驅動

#注冊一個驅動為pxe_ipmitool的節點, 在Liberty版本(API版本1.1以上)節點狀態變為enroll,指ironic知道了這個節點,但是沒有還管理它
ironic --ironic-api-version 1.11 node-create -d pxe_ipmitool -n post11

+--------------+--------------------------------------+
| Property     | Value                                |
+--------------+--------------------------------------+
| uuid         | 0eb013bb-1e4b-4f4c-94b5-2e7468242611 |
| driver_info  | {}                                   |
| extra        | {}                                   |
| driver       | pxe_ipmitool                         |
| chassis_uuid |                                      |
| properties   | {}                                   |
| name         | post11                               |
+--------------+--------------------------------------+


ironic --ironic-api-version 1.11 node-list

+--------------------------------------+--------+---------------+-------------+--------------------+-------------+
| UUID                                 | Name   | Instance UUID | Power State | Provisioning State | Maintenance |
+--------------------------------------+--------+---------------+-------------+--------------------+-------------+
| 0eb013bb-1e4b-4f4c-94b5-2e7468242611 | post11 | None          | None        | enroll             | False       |
+--------------------------------------+--------+---------------+-------------+--------------------+-------------+

2.設置driver參數(driver_info),包括驅動相關配置、部署鏡像id

ironic driver-properties pxe_ipmitool
+----------------------+---------------------------------------------------------------------------+
| Property             | Description                                       |
+----------------------+---------------------------------------------------------------------------+
| ipmi_address         | IP address or hostname of the node. Required.                 |
| ipmi_password        | password. Optional.                                   |
| ipmi_username        | username; default is NULL user. Optional.                    |
| ...                  | ...                                           |
| deploy_kernel        | UUID (from Glance) of the deployment kernel. Required.             |
| deploy_ramdisk       | UUID (from Glance) of the ramdisk that is mounted at boot time. Required.  |
+----------------------+----------------------------------------------------------------------------+
# 設置IPMI BMC
ironic node-update $NODE_UUID add \
driver_info/ipmi_username=$USER \
driver_info/ipmi_password=$PASS \
driver_info/ipmi_address=$ADDRESS

#設置部署鏡像
ironic node-update $NODE_UUID add \
driver_info/deploy_kernel=$DEPLOY_VMLINUZ_UUID \
driver_info/deploy_ramdisk=$DEPLOY_INITRD_UUID

3.設置節點屬性(properties)

#設置flavor,要與之前創建的匹配
ironic node-update $NODE_UUID add \
properties/cpus=$CPU \
properties/memory_mb=$RAM_MB \
properties/local_gb=$DISK_GB \
properties/cpu_arch=$ARCH

#設置過濾條件,可選
ironic node-update $NODE_UUID add \
properties/capabilities=key1:val1,key2:val2

4.設置MAC地址

ironic port-create -n $NODE_UUID -a $MAC_ADDRESS

5.檢查驅動接口信息

ironic node-validate $NODE_UUID          

+------------+--------+--------+
| Interface  | Result | Reason |
+------------+--------+--------+
| console    | True   |        |
| deploy     | True   |        |
| management | True   |        |
| power      | True   |        |
+------------+--------+--------+

6.執行manage操作,更改狀態enroll -> manageable

manage過程中節點狀態為verifying,檢查成功后,物理機的變為manageable,指物理機擁有足夠的信息來管理硬件,但是還不是provisioning的狀態,provisioning的狀態是available。

ironic --ironic-api-version 1.11 node-set-provision-state $NODE_UUID manage

ironic node-show $NODE_UUID

+------------------------+--------------------------------------------------------------------+
| Property               | Value                                                              |
+------------------------+--------------------------------------------------------------------+
| ...                    | ...                                                                |
| provision_state        | manageable                                                         | <- verify correct state
| uuid                   | 0eb013bb-1e4b-4f4c-94b5-2e7468242611                               |
| ...                    | ...                                                                |
+------------------------+--------------------------------------------------------------------+

7.執行provide操作,更改狀態manageable -> available

provide是清理節點上的ramdisk等,將節點變為能夠重新部署的狀態,如果設置了node Clean操作,則會進行指定的步驟進行節點清理。

ironic --ironic-api-version 1.11 node-set-provision-state $NODE_UUID provide

ironic node-show $NODE_UUID

+------------------------+--------------------------------------------------------------------+
| Property               | Value                                                              |
+------------------------+--------------------------------------------------------------------+
| ...                    | ...                                                                |
| provision_state        | available                                                          | < - verify correct state
| uuid                   | 0eb013bb-1e4b-4f4c-94b5-2e7468242611                               |
| ...                    | ...                                                                |
+------------------------+--------------------------------------------------------------------+

節點狀態變成available之后就可以被調度了。

結合狀態裝換圖來理解

bare metal states


免責聲明!

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



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