OpenStack-Pike版Ironic安裝指導分析-(下)

基於OpenStack官網指導,結合實際應用,予以總結。

整體結構:


五,構建裸金屬服務驅動


(一)啓用drivers和硬件類型
1,介紹
  裸金屬服務將實際的硬件管理委派給drivers來實現。從Ocata版本開始,支持兩種類型的驅動程序:經典驅動程序(例如pxe ipmitool、agent ilo等)和較新的硬件類型(例如,通用redfish和ipmi或特定於供應商的ilo和irmc)。
驅動程序依次由hardware interfaces組成:以特定於供應商的方式處理裸金屬供應的某些方面的功能集。傳統的驅動程序(Classic drivers)有所有hardware interfaces的硬編碼,而硬件類型(hardware types)只聲明它們兼容的硬件接口(hardware interfaces)。
  從API用戶的角度來看,經典驅動程序(classic drivers)和硬件類型(hardware types)都可以分配給節點的驅動(driver)字段。但是,它們的配置方式不同。

2,啓用硬件類型
  可以在ironic-conductor服務的配置文件中,通過設置 enabled_hardware_types配置選項,啓用Hardware types。例如:
[DEFAULT]
enabled_hardware_types = ipmi,redfish
由於驅動程序的動態特性,它們還需要配置啓用的硬件接口。
注意:
 setup.cfg 列出了所有可用的硬件類型和接口的源碼樹結構。

啓用硬件接口
有多種硬件接口:
boot
console
deploy
inspect
management
network
power
raid
storage
vendor
在多conductor環境中,硬件接口的使用
多個conductor可以分別配置各自的硬件接口類型(可以相同/可以不同/可以配置多個)
配置接口默認值:
當沒有提供明確的接口類型是,可以使用默認值,
[DEFAULT]
default_deploy_interface = direct
default_network_interface = neutron
3,啓用傳統drivers
傳統驅動的啓動,是在 ironic-conductor服務的配置文件中設置配置項 enabled_drivers ,例如:
[DEFAULT]
enabled_drivers = pxe_ipmitool,pxe_ilo,pxe_drac
這些以逗號分隔的列表中的名字,是drivers的入口名,它們需要在 conductor 服務運行起來之前就可用,而且所有依賴必須在本地安裝,例如:
從pxe開始的驅動程序和一些從代理開始的驅動程序需要:  Configuring PXE and iPXE,
以pxe開頭的驅動程序,或者在名稱中有iscsi:  Configuring iSCSI-based drivers,
以ipmitool結束的驅動程序,需要: Configuring IPMI support.

 Enabling drivers 可以看到所有支持的drivers配置。

(二)配置PXE和iPXE
1,PXE設置
如果您將使用PXE,它需要在ironic-conductor運行的裸金屬服務節點上設置。
1),確保tftp根目錄存在,並且可以由運行ironic-conductor的用戶(ironic)執行寫入操作。例如:
sudo mkdir -p /tftpboot
sudo chown -R ironic /tftpboot
2),安裝tftp服務和syslinux包
Fedora 21/RHEL7/CentOS7:
sudo yum install tftp-server syslinux-tftpboot xinetd
3),使用xinetd提供tftp服務,創建/編輯/etc/xinetd.d/tftp,如下:
service tftp{
  protocol        = udp
  port            = 69
  socket_type     = dgram
  wait            = yes
  user            = root
  server          = /usr/sbin/in.tftpd
  server_args     = -v -v -v -v -v --map-file /tftpboot/map-file /tftpboot
  disable         = no
  # This is a workaround for Fedora, where TFTP will listen only on
  # IPv6 endpoint, if IPv4 flag is not used.
  flags           = IPv4}
然後重啓xinetd服務,

Fedora/RHEL7/CentOS7/SUSE:

sudo systemctl restart xinetd
4),複製PXE到/tftpboot,

RHEL7/CentOS7/SUSE:

sudo cp /usr/share/syslinux/pxelinux.0 /tftpboot
5),如果whole磁盤鏡像需要通過PXE-netboot進行部署,則需要複製 chain.c32到/tftpboot

RHEL7/CentOS7/SUSE:

sudo cp /usr/share/syslinux/chain.c32 /tftpboot/
6),如果syslinux 版本大於4,還需要確保複製庫模塊文件到/tftpboot
sudo cp /usr/lib/syslinux/modules/*/ldlinux.* /tftpboot
7),在tftp的boot目錄/tftpboot,創建一個map文件
echo 're ^(/tftpboot/) /tftpboot/\2' > /tftpboot/map-file
echo 're ^/tftpboot/ /tftpboot/' >> /tftpboot/map-file
echo 're ^(^/) /tftpboot/\1' >> /tftpboot/map-file
echo 're ^([^/]) /tftpboot/\1' >> /tftpboot/map-file

2,PXE UEFI設置
如果想要部署支持UEFI的裸金屬,在ironic conductor節點上執行這些附加步驟,以配置PXE UEFI環境。
1),安裝Grub2和shim包
Fedora 21/RHEL7/CentOS7:
sudo yum install grub2-efi shim
2),複製grub和shim引導加載器鏡像到/tftpboot目錄

RHEL7/CentOS7:

sudo cp /boot/efi/EFI/centos/shim.efi /tftpboot/bootx64.efisudo cp /boot/efi/EFI/centos/grubx64.efi /tftpboot/grubx64.efi
3),創建 grub.cfg:

RHEL7/CentOS7: Create grub.cfg under /tftpboot/EFI/centos directory:

GRUB_DIR=/tftpboot/EFI/centos
這個文件用於將grub重定向到baremetal節點指定的配置文件。基於分配給baremetal節點的DHCP IP,將其重定向到特定的grub配置文件。

set default=master
set timeout=5
set hidden_timeout_quiet=false

menuentry "master"  {
configfile /tftpboot/$net_default_ip.conf
}

修改 grub.cfg權限:

sudo chmod 644 $GRUB_DIR/grub.cfg
4),使用節點屬性中的boot_mode字段更新裸金屬節點
ironic node-update <node-uuid> add properties/capabilities='boot_mode:uefi'
5),確保裸金屬節點配置的啓動模式爲UEFI下啓動,引導設備需要設置爲網絡pxe

pxe_ilo 驅動支持在裸金屬節點上自動設置UEFI引導啓動、自動配置引導方式,因此這一步在pxe_ilo 驅動 下是不需要的。


3,iPXE設置
4,PXE多架構設置
可以由一個conductor部署不同架構的服務器。要使用這個特性,需要在裸金屬服務配置文件 (/etc/ironic/ironic.conf)中,分別使用 [pxe]pxe_bootfile_name_by_arch and [pxe]pxe_config_template_by_arch 來配置特定系統結構引導方法和模板文件,

這兩個選項是字典值(數據結構);key是架構,value是引導(或配置模板)文件。
節點的 cpu_arch屬性被用作獲取合適的引導文件和模板文件的key值,如果 cpu_arch不在字典中,配置文件選項將會使用 pxe_bootfile_namepxe_config_templateuefi_pxe_bootfile_name 和 uefi_pxe_config_template替代(在[pxe]配置段中)。

[pxe]

# Bootfile DHCP parameter. (string value)
pxe_bootfile_name=pxelinux.0

# On ironic-conductor node, template file for PXE
# configuration. (string value)
pxe_config_template = $pybasedir/drivers/modules/pxe_config.template

# Bootfile DHCP parameter for UEFI boot mode. (string value)
uefi_pxe_bootfile_name=bootx64.efi

# On ironic-conductor node, template file for PXE
# configuration for UEFI boot loader. (string value)
uefi_pxe_config_template=$pybasedir/drivers/modules/pxe_grub_config.template

# Bootfile DHCP parameter per node architecture. (dict value)
pxe_bootfile_name_by_arch=aarch64:grubaa64.efi,ppc64:bootppc64

# On ironic-conductor node, template file for PXE
# configuration per node architecture. For example:
# aarch64:/opt/share/grubaa64_pxe_config.template (dict value)
pxe_config_template_by_arch=aarch64:pxe_grubaa64_config.template,ppc64:pxe_ppc64_config.template


(三)配置IPMI支持
1,安裝pmitool
爲了開啓使用IPMI協議的driver程序進行電源和管理操作的功能(例如: ipmipxe_ipmitool 和 agent_ipmitool),ipmitool 命令必須可以在ironic-conductor運行的服務節點上執行
查看基於ipmitool drivers的更詳細信息IPMITool driver

2,驗證IPMI,以及異常問題定位
檢查是否可以通過運行ipmitool,連接到您的裸金屬服務器上的IPMI控制器,並進行身份驗證:
ipmitool -I lanplus -H <ip-address> -U <username> -P <password> chassis power status
<ip-address> 是要訪問的IPMI controller的ip地址,不是裸金屬節點的地址,IPMI controller需要有自己獨立的ip地址。
如果上述命令沒有返回裸金屬服務器的電源狀態,請檢查:
  • ipmitool已安裝並可通過$PATH環境變量使用。
  • 裸金屬服務器上的IPMI控制器被打開(dell服務器默認是關閉的,其它多數服務器IPMI默認是打開的)。
  • 在命令中傳遞的IPMI控制器憑證和IP地址是正確的。
  • conductor節點有通向IPMI控制器的路由。這可以通過在conductor節點執行ping操作IPMI控制器IP來檢查。
3,IPMI配置
如果在環境中存在緩慢或無響應的BMCs,則可能需要提高[ipmi]部分中的min命令間隔配置選項。因爲設置這個超時時間過低會導致較舊的BMCs崩潰,並且需要進行硬重置,因此默認值的配置是相當的保守。

4,收集傳感器數據
裸金屬服務支持使用某些drivers發送IPMI傳感器信息到 Telemetry (即ceilometer服務),例如 ipmitoolilo 和irmc
默認情況下,發送IPMI傳感器信息到 Telemetry的功能是關閉的。如果要開啓,需要在ironic.conf中修改配置:
[DEFAULT]
notification_driver = messaging
[conductor]
send_sensor_data = true
如果要自定義發送給 Telemetry的傳感器類型,則需要更改 send_sensor_data_types配置項,例如,想要發送溫度、蜂鳴器、電壓信息:
send_sensor_data_types=Temperature,Fan,Voltage
如果設置爲 All ,則支持所有傳感器類型。

(四)配置基於iSCSI的drivers
確保 qemu-img 和 iscsiadm 工具安裝在 ironic-conductor 主機上。


擴展:Redfish

  Redfish紅魚標準:2014年科技產業廠商戴爾(DELL)、艾默生網絡能源、惠普(HP)及英特爾(Intel)宣佈建立Redfish“紅魚”標準,該標準應用於數據中心發展及系統管理,可傳遞全面的功能性、可測性和安全性資訊。這是自智能平臺管理界面(IPMI)於1998年創立以來最爲全面性的標準,實際上也可以理解爲Redfish是IPMI的後續替代產品。主要區別於IPMI之處是,針對大規模服務器管理時,具有更豐富的命令,更簡單的管理架構等。
  事實上各個服務器製造商都有自己的硬件系統管理工具,比如:戴爾的遠程訪問控制器(Dell Remote Access Controller,iDRAC),HPE的Integrated Lights-Out(Integrated Lights-Out,iLo),思科的集成管理控制器(Integrated Management Controller),以及超微電腦公司的Rack Scale Design產品,但是目前幾乎所有主要的服務器供應商都宣傳自己的管理工具與Redfish服務器開放標準參數的兼容性, 特別是他們新發布的服務器——HPE的Gen10產品、戴爾EMC的14G產品以及思科的UCSM5等廠商產品。
  Redfish最初來自於三年前的DMTF(Distributed Management Task Force,分佈式管理任務組織)項目,它的目的是取代智能平臺管理界面IPMI(Intelligent Platform Management Interface),Redfish專爲那些尋求更安全地管理大型分佈式數據中心的IT專業人士而設計。Redfish能夠發現服務器、重新啓動並重新設置服務器,盤點服務器中的所有硬件和固件,監控服務器及其子組件的運行狀況,並生成事件日誌等許多其他功能。

六,Enrollment 註冊

  在所有的服務都正確配置之後,應該使用裸金屬服務來註冊服務器硬件,並確保可用硬件資源對Compute服務可見。一旦節點處於available供應狀態,這些節點就會在Compute服務中顯示出來。

注意:
  在用裸金屬服務註冊節點之後,計算服務將不會立即接收到新資源的通知。計算服務的資源跟蹤器會週期性地同步,因此任何直接對裸金屬服務資源的更改,都將在計算服務的下一個週期任務執行之後才能在計算服務中可見。

  對於任何在計算服務中可見的任何裸金屬節點,如果電源和部署的接口都通過了有效性檢查,那麼(隨時都)可能有一個工作負載來調度它。如果你希望將一個節點排除在計算服務的調度程序之外,當你需要對節點進行維護時,可以將節點設置爲維護模式(maintenance mode)。更多信息查看維護模式章節  Maintenance mode

(一) 選擇一個driver


在註冊一個節點時,最重要的信息是驅動程序。這可以是一個經典的驅動程序,也可以是硬件類型——參考啓用驅動程序和硬件類型。driver-list命令可用於列出所有主機上啓用的所有驅動程序(兩種類型):
ironic driver-list
+---------------------+-----------------------+
| Supported driver(s) | Active host(s)        |
+---------------------+-----------------------+
| ipmi                | localhost.localdomain |
| pxe_ipmitool        | localhost.localdomain |
+---------------------+-----------------------+
API從1.31開始,可以只列出classic driver或者只列出動態driver:
ironic --ironic-api-version 1.31 driver-list -t dynamic
+---------------------+-----------------------+
| Supported driver(s) | Active host(s)        |
+---------------------+-----------------------+
| ipmi                | localhost.localdomain |
+---------------------+-----------------------+
應該根據實際的硬件功能和預期特性來選擇使用的特定驅動程序。請參閱啓用驅動程序以獲得更多的提示。

每個驅動程序都有一個驅動屬性列表,這些屬性需要通過節點的驅動程序信息字段來指定,以便驅動程序在節點上操作。這個列表包含驅動程序使用的硬件接口的屬性。這些驅動屬性可以使用driver-properties命令查看:
$ 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.                                   |
+----------------------+-------------------------------------------------------------------------------------------------------------+
所標記的屬性必須在節點創建期間或不久之後提供。有些屬性可能只用於某些特性。

(二) 注意API版本

從API版本1.1.11開始,裸金屬服務爲其狀態機添加了新的初始供應狀態enroll,當這個或後來的API版本使用時,新的節點會得到enroll這個狀態而不是available。
使用低於1.1.11的API版本的現有自動化工具不會受到影響,因爲初始供應狀態仍然是available。
然而,就節點創建而言,使用API版本1.11或更高版本可能會破壞現有的自動化工具。
python-ironicclient使用的默認API版本是1.9,但它可能在將來發生變化,不應該依賴於此。

下面例子中,我們將使用裸金屬1.11API版本,有幾個優勢:
(1)在離開enroll狀態之前,顯式的電源憑證驗證;
(2)進入available 狀態之前,運行節點清理操作;
(3)不會將未配置的節點暴露給調度程序

可以通過設置環境變量IRONIC_API_VERSION來設置API版本,對於OpenStackClient 裸金屬插件,可以設置OS_BAREMETAL_API_VERSION,如下:

$ export IRONIC_API_VERSION=1.11
$ export OS_BAREMETAL_API_VERSION=1.11

(三) 註冊程序Enroll 

3.1 創建一個節點
本節描述註冊一個節點的主要步驟,並使其供應available。爲了便於說明,有些步驟是分開顯示的,如果需要,可以合併。

1,用node-create命令在裸金屬服務中創建一個節點。至少必須指定一個驅動程序名稱(pxe_ipmitool, agent_ipmitool or ipmi).
此命令返回除了 node UUID以及其它node相關信息,node的預備供應狀態將會變爲enroll。
$ export IRONIC_API_VERSION=1.11
$ ironic node-create -d pxe_ipmitool
+--------------+--------------------------------------+
| Property     | Value                                |
+--------------+--------------------------------------+
| uuid         | dfc6189f-ad83-4261-9bda-b27258eb1987 |
| driver_info  | {}                                   |
| extra        | {}                                   |
| driver       | pxe_ipmitool                         |
| chassis_uuid |                                      |
| properties   | {}                                   |
| name         | None                                 |
+--------------+--------------------------------------+

$ ironic node-show dfc6189f-ad83-4261-9bda-b27258eb1987
+------------------------+--------------------------------------+
|Property               | Value                                |
+------------------------+--------------------------------------+
| target_power_state     | None                                 |
| extra                  | {}                                   |
| last_error             | None                                 |
| maintenance_reason     | None                                 |
| provision_state        | enroll                               |
| uuid                   | dfc6189f-ad83-4261-9bda-b27258eb1987 |
| console_enabled        | False                                |
| target_provision_state | None                                 |
| provision_updated_at   | None                                 |
| maintenance            | False                                |
| power_state            | None                                 |
| driver                 | pxe_ipmitool                         |
| properties             | {}                                   |
| instance_uuid          | None                                 |
| name                   | None                                 |
| driver_info            | {}                                   |
| ...                    | ...                                  |
+------------------------+--------------------------------------+
像uuid一樣,節點也可能配置邏輯name。可以在node-create執行命令時,添加-n選項指定name,或者使用node-update命令修改name。

2,從API版本1.31(和python-ironicclient 1.13)開始,可以選擇使用硬件類型的節點使用哪個硬件接口。每個接口都由一個名爲<IFACE>_interface的節點字段來表示,<IFACE>是接口類型,例如boot。
接口可以在已存在節點上可以分別修改:
$ ironic --ironic-api-version 1.31 node-update $NODE_UUID replace \
    deploy_interface=direct \
    raid_interface=agent
也可以在節點創建時指定:
$ ironic --ironic-api-version 1.31 node-create -d ipmi \
    --deploy-interface direct \
    --raid-interface agent
若嘗試用一個classic driver改變這個字段,並將節點的驅動程序設置爲classic driver,這會是一個錯誤設置,導致這些字段被自動設置爲None。

3,使用所需的driver屬性更新節點的driver_info信息,這樣裸金屬服務就可以管理節點。
$ ironic node-update $NODE_UUID add \
    driver_info/ipmi_username=$USER \
    driver_info/ipmi_password=$PASS \
    driver_info/ipmi_address=$ADDRESS
如果IPMI沒有運行在623端口(默認端口),就需要添加driver_info信息,指定ipmi_port的值,例如:
$ ironic node-update $NODE_UUID add driver_info/ipmi_port=$PORT_NUMBER
你也可以在節點創建時,多次使用-i選項,指定所有的driver_info
$ ironic node-create -d pxe_ipmitool \
    -i ipmi_username=$USER \
    -i ipmi_password=$PASS \
    -i ipmi_address=$ADDRESS
4,指定一個與節點驅動程序兼容的部署kernel和ramdisk,例如:
$ ironic node-update $NODE_UUID add \
    driver_info/deploy_kernel=$DEPLOY_VMLINUZ_UUID \
    driver_info/deploy_ramdisk=$DEPLOY_INITRD_UUID
5,你還必須通過使用節點的每個NIC網卡MAC地址創建的port,作爲裸金屬服務的網絡接口。這些MAC地址用於實例provisioning和配置合適的網絡:
$ ironic port-create -n $NODE_UUID -a $MAC_ADDRESS
3.2 添加調度信息
1,爲節點分配一個資源類。資源類應該在你的數據中心中表示一個硬件類,它對應於計算的flavor。
例如,讓我們將硬件分成這三組:
  • a,具有大量RAM的節點和用於計算任務的強大CPU,
  • b,用於OpenCL計算的強大GPU節點,
  • c,用於開發和測試的小節點。
我們可以定義三個資源類來反映這些硬件組,分別命名爲large-cpu, large-gpu ,small r。然後,對於每個硬件組中的每個節點,我們將通過以下命令設置它們的resource_class :
$ openstack --os-baremetal-api-version 1.21 baremetal node set $NODE_UUID \
    --resource-class $CLASS_NAME
--resource-class參數也可用於創建節點時:
$ openstack --os-baremetal-api-version 1.21 baremetal node create \
    --driver $DRIVER --resource-class $CLASS_NAME
使用資源類來調度,你需要更新你的flavors,參考鏈接: Create flavors for use with the Bare Metal service.

警告:
基於資源類的調度將在Queens版本中,替換基於properties的調度。

注意:
對於獨立部署來說這不是必需的,只是對於那些使用計算服務來提供裸金屬實例的人來說。

2,更新節點的屬性以匹配實際硬件。
$ ironic node-update $NODE_UUID add \
    properties/cpus=$CPU_COUNT \
    properties/memory_mb=$RAM_MB \
    properties/local_gb=$DISK_GB \
    properties/cpu_arch=$ARCH
如上,也可以在node-create節點創建時,多次使用-p參數來指定:
$ ironic node-create -d pxe_ipmitool \
    -i ipmi_username=$USER \
    -i ipmi_password=$PASS \
    -i ipmi_address=$ADDRESS \
    -p cpus=$CPU_COUNT \
    -p memory_mb=$RAM_MB \
    -p local_gb=$DISK_GB \
    -p cpu_arch=$ARCH
在硬件檢查期間也可以發現以上需要的這些值。
(Hardware Inspection鏈接:https://docs.openstack.org/ironic/pike/admin/inspection.html

警告:
如果沒有使用基於資源類resource classes的調度,那麼三個屬性cpus, memory_mb 和local_gb必須與所創建的flavor定義一致。參考:https://docs.openstack.org/ironic/pike/install/configure-nova-flavors.html

爲local_gb屬性提供的值必須與將要部署的根設備的大小相匹配。默認情況下,ironic-python-agent選擇不小於4 GiB的最小磁盤,
如果你使用根設備提示來覆蓋這個邏輯,local_gb需要匹配選中目標盤的大小。
指定系統盤raid,具體參考: Specifying the disk for deployment (root device hints)

3,如果你希望基於硬件能力執行更高級的實例調度,可以將metadata添加到每個將要被調度的節點(參見:ComputeCapabilitiesFilter)。對這一問題的具體解釋超出了本文件的範圍。它可以通過指定節點屬性的capabilities來完成。
$ ironic node-update $NODE_UUID add \
    properties/capabilities=key1:val1,key2:val2

3.3 驗證節點信息
1,檢查裸金屬服務是否具有節點驅動程序功能所需的最小信息,可以用命令行驗證:

$ ironic node-validate $NODE_UUID
+------------+--------+--------+
| Interface  | Result | Reason |
+------------+--------+--------+
| console    | True   |        |
| deploy     | True   |        |
| management | True   |        |
| power      | True   |        |
+------------+--------+--------+
如果節點失敗了驗證,那麼每個驅動程序接口都會返回關於爲什麼失敗的信息
$ ironic node-validate $NODE_UUID
+------------+--------+-------------------------------------------------------------------------------------------------------------------------------------+
| Interface  | Result | Reason                                                                                                                              |
+------------+--------+-------------------------------------------------------------------------------------------------------------------------------------+
| console    | None   | not supported                                                                                                                       |
| deploy     | False  | Cannot validate iSCSI deploy. Some parameters were missing in node's instance_info. Missing are: ['root_gb', 'image_source']        |
| management | False  | Missing the following IPMI credentials in node's driver_info: ['ipmi_address'].                                                     |
| power      | False  | Missing the following IPMI credentials in node's driver_info: ['ipmi_address'].                                                     |
+------------+--------+-------------------------------------------------------------------------------------------------------------------------------------+
當裸金屬服務使用計算服務時,由於缺乏image信息而導致部署接口驗證錯誤可以忽略。你可以繼續enrollment。當請求部署實例時,這些信息將會在部署之前由Compute Service設置。
$ ironic node-validate $NODE_UUID
+------------+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Interface  | Result | Reason                                                                                                                                                           |
+------------+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| console    | True   |                                                                                                                                                                  |
| deploy     | False  | Cannot validate image information for node because one or more parameters are missing from its instance_info. Missing are: ['ramdisk', 'kernel', 'image_source'] |
| management | True   |                                                                                                                                                                  |
| power      | True   |                                                                                                                                                                  |
+------------+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3.4 使節點可部署
爲了能夠在節點上執行部署工作,節點必須處於available供應狀態。要做到這一點,使用API1.1.11和以上版本的節點必須從enroll狀態轉移到manageable狀態,然後轉移到available狀態。
如果使用API版本1.10或更早版本(默認情況下是這樣),可以安全地跳過這一部分。
在創建節點之後,從最初供應狀態enroll轉移狀態之前,需要在節點上配置基本電源和端口信息。
裸金屬服務需要這些信息,因爲它可以證明在將節點從enroll到manageable狀態時能夠控制節點。

把節點從enroll狀態切換到manageable狀態 :
$ 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                               |
| ...                    | ...                                                                |
+------------------------+--------------------------------------------------------------------+
注意:
由於它是一個異步調用,因此對於ironic node-set-provision-state,不論轉換是否成功,響應都不會顯示。
你可以通過ironic node-show來檢查操作的狀態。如果成功,provision_state將變爲預想的狀態。如果失敗,將會在節點的last_error中查看報錯信息。

當節點從manageable狀態轉移到available供應狀態時,如果配置cleaning,節點將會執行自動清理。鏈接: (see Configure the Bare Metal service for cleaning).

從manageable狀態轉移到available狀態:
$ 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                               |
| ...                    | ...                                                                |
+------------------------+--------------------------------------------------------------------+
有關裸金屬服務的狀態機詳細信息,可參考:  Ironic’s State Machine
ironic狀態機

3.5  將節點映射到計算cells中
如果計算服務用於調度,且裸金屬服務的計算節點配置中沒有設置discover_hosts_in_cells_interval,那麼可以登錄任何控制器節點,運行以下命令來把新節點映射到compute cells中。
配置計算節點用於裸金屬服務的配置:  Configure the Compute service to use the Bare Metal service
nova-manage cell_v2 discover_hosts
4,邏輯name
創建以example命名的節點:
$ ironic node-create -d agent_ipmitool -n example
或者更新已有節點:
$ ironic node-update $NODE_UUID add name=example
一旦分配了一個邏輯名,就可以通過替換爲名稱或UUID指向一個節點。
$ ironic node-create -d agent_ipmitool -n example
+--------------+--------------------------------------+
| Property     | Value                                |
+--------------+--------------------------------------+
| uuid         | 71e01002-8662-434d-aafd-f068f69bb85e |
| driver_info  | {}                                   |
| extra        | {}                                   |
| driver       | agent_ipmitool                       |
| chassis_uuid |                                      |
| properties   | {}                                   |
| name         | example                              |
+--------------+--------------------------------------+

$ ironic node-show example
+------------------------+--------------------------------------+
| Property               | Value                                |
+------------------------+--------------------------------------+
| target_power_state     | None                                 |
| extra                  | {}                                   |
| last_error             | None                                 |
| updated_at             | 2015-04-24T16:23:46+00:00            |
| ...                    | ...                                  |
| instance_info          | {}                                   |
+------------------------+--------------------------------------+


5,默認硬件接口
對於傳統驅動程序,所有硬件接口實現(網絡接口除外)都是硬編碼的,不能更改。 對於硬件類型,用戶可以在創建或更新節點時請求一個可用的實現接口。

在創建節點或更改節點的硬件類型時,沒有指定interface,則使用默認值。 可以使用driver details命令列出當前enabled和default的硬件類型(用於部署):
$ openstack --os-baremetal-api-version 1.31 baremetal driver show ipmi
+-------------------------------+----------------+
| Field                         | Value          |
+-------------------------------+----------------+
| default_boot_interface        | pxe            |
| default_console_interface     | no-console     |
| default_deploy_interface      | iscsi          |
| default_inspect_interface     | no-inspect     |
| default_management_interface  | ipmitool       |
| default_network_interface     | flat           |
| default_power_interface       | ipmitool       |
| default_raid_interface        | no-raid        |
| default_vendor_interface      | no-vendor      |
| enabled_boot_interfaces       | pxe            |
| enabled_console_interfaces    | no-console     |
| enabled_deploy_interfaces     | iscsi, direct  |
| enabled_inspect_interfaces    | no-inspect     |
| enabled_management_interfaces | ipmitool       |
| enabled_network_interfaces    | flat, noop     |
| enabled_power_interfaces      | ipmitool       |
| enabled_raid_interfaces       | no-raid, agent |
| enabled_vendor_interfaces     | no-vendor      |
| hosts                         | ironic-host-1  |
| name                          | ipmi           |
| type                          | dynamic        |
+-------------------------------+----------------+

默認情況下是這樣計算的:
1),如果配置了default_<IFACE>_interface選項,它的值就會被用作默認值。 如果這個實現與節點的硬件類型不兼容,則會返回給用戶一個錯誤。在這種情況下,必須爲節點的接口字段提供顯式的值。
2),否則,由操作員啓用的第一個支持的實現類型將被用作缺省值(可以設置多個)。

如果所支持的實現列表不是空的,那麼第一個被使用。否則,會返回給用戶一個錯誤。在這種情況下,必須爲其提供顯式的值 <IFACE>_interface字段
6,硬件檢查

裸金屬服務支持簡化註冊節點的硬件檢查——請參閱硬件檢查以瞭解詳細情況。  Hardware Inspection

7,租戶網絡和端口組

七,裸金屬服務作爲獨立的服務使用

略。

在沒有其他OpenStack服務的情況下使用裸金屬服務的操作步驟,詳見:

八, 使能configdrive

裸金屬服務支持給實例配置configuration drive image。
配置驅動器(configuration drive)用於存儲實例指定的metadata,並將其作爲一個標記爲config-2的磁盤分區呈現給實例。配置驅動器的最大大小爲64MB。
configuration drive的一個使用場景就是,當沒有使用DHCP 給實例指定IP時,可以使用configuration drive顯示(指定)實例的網絡配置。

配置驅動通常與計算服務一起使用,但是裸金屬服務也提供了一種獨立的使用方法。以下部分將描述這兩種方法。

1,使用計算服務時的configdrive

(1)在nova boot時,通過添加 --config-drive true參數,啓用 configuration drive
nova boot --config-drive true --flavor baremetal --image test-image instance-1
(2)在配置文件 /etc/nova/nova.conf中,通過以下配置,開啓對所有實例的config drive功能,
force_config_drive=True

2,standalone模式下的使用configdrive

3,Configuration drive在對象存儲中的存儲
4,訪問configdrive數據
當啓用configuration drive時,裸金屬服務將在實例磁盤上創建一個分區,並將configuration drive鏡像寫入實例的磁盤(系統盤倒數64MB空間)。configuration drive必須在使用前安裝。可以由許多工具自動執行的,比如cloud-init和cloudbase-init。要在支持通過標籤訪問設備的Linux發行版上手動安裝它,只需運行以下操作:
mkdir -p /mnt/configmount /dev/disk/by-label/config-2 /mnt/config
如果guest操作系統不支持通過標籤訪問設備,可以使用如blkid之類的其他工具來識別哪個設備對應configuration drive並掛載它,例如:
CONFIG_DEV=$(blkid -t LABEL="config-2" -odevice)
mkdir -p /mnt/config
mount $CONFIG_DEV /mnt/config
5,Cloud-init集成
若通過disk-image-builder製作用戶鏡像,則需要在執行製作命令時,添加對應參數
DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack" disk-image-create -o fedora-cloud-image fedora baremetal
如果是使用在虛擬化環境中,自定義製作裸金屬用戶鏡像,則需要在製作鏡像時,安裝cloudinit相關包。

九,高級功能

(一)本地引導partition鏡像

    裸金屬服務支持分區鏡像的本地引導,這意味着在節點部署後,後續重啓不會再通過PXE或虛擬介質。相反,它將從安裝在磁盤上的本地引導加載程序啓動。

注意:
  相反,Whole磁盤鏡像只支持本地引導,並在默認情況下使用它。

需要注意的是,爲了能夠正常工作,使用裸金屬服務的鏡像必須在其中安裝的grub2。

當使用裸金屬服務與計算服務一起使用時或裸金屬服務單獨使用時,啓用本地引導是不同的。以下部分將描述這兩種方法。
1, 使用計算服務時,啓用本地引導
爲了啓用本地引導,我們需要在裸金屬節點上設置一個功能。
ironic node-update <node-uuid> add properties/capabilities="boot_option:local"
通過在計算服務的flavor中添加額外的規範,可以請求將啓動選項設置爲本地的節點。
nova flavor-key baremetal set capabilities:boot_option="local"
注意:
  如果節點被配置爲使用UEFI引導,裸金屬服務將在磁盤上創建EFI分區,並將分區表格式轉換爲gpt。EFI分區稍後將由引導加載程序(從deploy ramdisk中安裝)使用。
2, 沒有計算服務時,啓用本地引導(stancalone)
  由於向節點屬性添加的屬性只會被nova scheduler用於執行更高級的實例調度,我們需要一種當計算不存在時啓用本地引導的方法。爲了做到這一點,我們可以簡單地通過節點的instance info來指定屬性,例如 :
ironic node-update <node-uuid> add instance_info/capabilities='{"boot_option": "local"}'

(二)指定部署的磁盤(根設備所在磁盤)

裸金屬服務支持將提示傳遞給部署ramdisk,用來指定它應該選擇哪個磁盤進行部署。所支持的提示列表是:
  • model模型(字符串):設備標識符
  • vendor供應商(字符串):設備供應商
  • serial串行(字符串):磁盤序列號。
  • size尺寸(INT):以GiB爲單位的設備尺寸。

注意:
  一個節點的“local_gb”屬性通常被設置爲小於實際磁盤大小的1 GiB,用於計算分區(舉幾個例子,這是DevStack、TripleO和ironic檢查等功能運行需要的)。但是,在這種情況下,大小應該是實際大小。例如,對於一個128 GiB磁盤local_gb將是127,但是大小提示將是128。

  • wwn(字符串):唯一的存儲標識符
  • wwn_with_extension (字符串)帶有供應商附加擴展的唯一的存儲標識符
  • wwn_vendor_extension(字符串):唯一的供應商存儲標識符
  • rotational轉動(布爾類型):不管它是否是旋轉裝置。當選擇判斷用哪個磁盤來部署ironic鏡像時,這個提示可以很容器區分HDDs(旋轉-磁盤)和SSDs(非旋轉-固態硬盤)。
  • hctl(字符串):SCSI地址(主機名、channel通道、Target和Lun),例如‘1:0:0:0’
  • name(字符串):設備名稱,例如/dev/md0
警告:
    根設備提示名稱應該只用於具有常量名稱的設備(例如RAID卷)。對於SATA, SCSI和IDE磁盤控制器,這個提示是不推薦的,因爲在Linux中添加設備節點的順序是任意的,導致了諸如/dev/sda和/dev/sdb這樣的設備在引導時切換。

要將一個或多個顯示與節點關聯起來,用root設備的key值,更新節點的屬性。例如:
ironic node-update <node-uuid> add properties/root_device='{"wwn": "0x4000cca77fc4dba1"}'
  這將保證裸金屬服務將選擇具有wwn且等於指定wwn值的磁盤設備,如果不能找到它,則會失敗部署。
  提示可以在這個字符串值的開頭有一個運算符。如果沒有指定操作符,默認值是==(用於數值)和s==(用於字符串值),支持的操作符有:
數值:
  • = equal to or greater than. This is equivalent to >= and is supported for legacy reasons
  • == equal to
  • != not equal to
  • >= greater than or equal to
  • > greater than
  • <= less than or equal to
  • < less than
字符串值:
  • s== equal to
  • s!= not equal to
  • s>= greater than or equal to
  • s> greater than
  • s<= less than or equal to
  • s< less than
  • <in> substring
集合:
  • <all-in> all elements contained in collection
  • <or> find one of these
找到一個大於或等於60 GiB且非旋轉的磁盤(SSD):
ironic node-update <node-uuid> add properties/root_device='{"size": ">= 60", "rotational": false}'
找出一個供應商是samsung或winsys的磁盤:
ironic node-update <node-uuid> add properties/root_device='{"vendor": "<or> samsung <or> winsys"}'
如果指定了多個提示,則設備必須滿足所有提示。

(三)引導實例時添加內核參數

裸金屬服務支持將自定義內核參數傳遞到引導的實例中,以滿足用戶需求。添加內核參數的方法取決於如何啓動實例。
3.1 網絡引導
目前,裸金屬服務支持爲PXE啓動實例分配統一的內核參數。
1,修改 [pxe]/pxe_append_params配置文件選項,例如:
[pxe]

pxe_append_params = quiet splash
2,將模板複製到另一個地方。例如:
https://git.openstack.org/cgit/openstack/ironic/tree/ironic/drivers/modules/pxe_config.template
通過 [pxe]/pxe_config_template 和 [pxe]/uefi_pxe_config_template兩個配置選項,修改並指向自定義模板。
3.2 本地引導
對於本地引導實例,用戶可以使用configuration drive的方式(請參閱),以通過一個自定義腳本來在創建實例時附加內核參數。這樣可以更靈活的改變每個實例。這裏有一個使用ubuntu的grub2的例子,用戶可以定製它以適應他們的用例。
3.3 控制檯
爲了在裸金屬服務配置文件中修改缺省console控制檯配置(在/etc/ironic/ironic.conf文件的[pxe]部分),包括端口終端和串行速度。串行速度必須與BIOS設置中的串行配置相同,這樣操作系統啓動過程就可以在串行控制檯或web控制檯中看到。下面的例子分別代表了串行和web控制檯的可能參數:
1,節點串行console,console參數 console=ttyS0,115200n8 在 115200bps, 8bit, non-parity 條件下使用 ttyS0 ,例如:
[pxe]

# Additional append parameters for baremetal PXE boot.pxe_append_params = nofb nomodeset vga=normal console=ttyS0,115200n8
2,web console使用 ttyX 形式的參數,例如:
[pxe]

# Additional append parameters for baremetal PXE boot.pxe_append_params = nofb nomodeset vga=normal console=tty0 console=ttyS0,115200n8
有關如何添加控制檯的詳細信息,請參閱參考文檔 kernel params 和 serial console,在本地啓動時,裸金屬服務無法控制內核引導參數。要在本地配置控制檯,請遵循上面的本地引導部分。 

(四) 引導模式支持

下面的驅動程序支持啓動模式(Legacy BIOS或UEFI)。
  • pxe_ipmitool
引導模式可以在裸金屬服務中以如下方式配置:
1)當沒有提供引導模式設置時,這些驅動程序的引導模式默認是LegacyBIOS。
2)只有一個啓動模式(uefi或bios)可以爲節點配置。
3)如果操作員想要一個節點總是在uefi模式或bios模式下啓動,那麼他們可能會在一個裸金屬節點的屬性域中使用功能參數。操作人員必須在裸金屬節點上手動設置適當的啓動模式。
要在uefi模式中配置節點,然後設置如下所示的功能:
ironic node-update <node-uuid> add properties/capabilities='boot_mode:uefi'
可以通過在計算服務風格中添加額外的規範來請求 ,將boot_mode設置爲uefi的節點,需要在計算服務的flavor中添加extra_spec額外屬性,如下:
nova flavor-key ironic-test-3 set capabilities:boot_mode="uefi"nova boot --flavor ironic-test-3 --image test-image instance-1
如果在上述extra_spec中使用了capabilities ,nova調度程序(ComputeCapabilitiesFilter)將只匹配在properties/capabilities中設置boot_mode 的裸金屬節點。它會過濾掉節點的其餘部分。

上面的計算服務中匹配的設施,可以在混合了uefi和bios服務器的異構環境中使用,操作者(雲運營商)希望爲用戶提供關於啓動模式的選擇。如果flavor不包含boot_mode,且在裸金屬節點中有配置boot_mode,那麼nova調度程序將考慮所有節點,那麼用戶就可能獲得bios或uefi機器。

(五)選擇磁盤標籤

 注意:
  “磁盤標籤disk_label”在Ironic一直都有使用,而且它是從parted中而來。顯然,每個人似乎對disk_label有不同的定義——認爲這些都是相同的東西:磁盤類型、分區表、分區映射等等。
  當ironic負責對磁盤進行分區時,Ironic允許操作者來自定義選擇想要把裸金屬節點部署到哪一個disk label上;因此,當部署的鏡像是whole disk image時,不支持選擇disk label來部署。
  有些情況下,有的人可能希望爲正在部署的鏡像選擇特定的disk label磁盤標籤,包括但不限於:
1)對於磁盤大於2TB,且以bios模式啓動的機器,建議使用gpt磁盤標籤。這是因爲超過2TB的容量不能通過使用MBR分區類型來尋址。但是,儘管GPT聲稱要向後兼容遺留的BIOS系統,但並不總是這樣。
2)操作人員可能希望強制分區始終是MBR(即使機器是以uefi引導模式部署的)以避免在這些實例上運行的應用程序和工具的破壞。

  在計算服務或獨立模式中使用Ironic的時候 ,disk label可以通過兩種方式配置。下面的要點和章節將描述這兩種方法:
1)當沒有提供磁盤標籤disk label時,Ironic會根據引導模式對其進行配置(請參考);bios啓動模式將使用msdos,uefi啓動模式將使用gpt。
2)裸金屬節點只能配置一個disk label:msdos或gpt

5.1 使用計算階段服務的情況下
  當ironic用於計算服務時,應該將 disk label設置到裸金屬節點的properties/capabilities字段,並將其設置到需要此功能的flavor中,例如:
ironic node-update <node-uuid> add properties/capabilities='disk_label:gpt'
關於flavor:
nova flavor-key baremetal set capabilities:disk_label="gpt"
5.2 standalone模式下
  當ironic不使用計算服務時, disk label應該直接設置到裸金屬節點的 instance_info字段,如下:
ironic node-update <node-uuid> add instance_info/capabilities='{"disk_label": "gpt"}'

(六)可信任的partation鏡像

  裸金屬服務支持partition鏡像的可信引導。這意味着在部署過程結束後,當節點被重新引導時,將執行新的用戶鏡像。它將檢測節點的BIOS、引導加載程序、可選ROM以及Kernel/Ramdisk,以確定此節點是否是ironic信任的裸金屬節點。

  需要注意的是,爲了使其工作,部署的節點必須具有Intel TXT硬件支持。被ironic部署的鏡像必須在鏡像內部安裝oat-client。

  下面將描述如何啓動trusted boot,以及通過PXE和Nova來執行引導程序:
1,創建一個安裝oat-client的自定義鏡像:
disk-image-create -u fedora baremetal oat-client -o $TRUST_IMG
創建自定義鏡像,詳情查看:Create and add images to the Image service.
2,在節點上啓用VT-x, VT-d, TXT和TPM功能,可以通過在BIOS手動啓動,根據平臺的不同,可能需要有多次重啓。
3,註冊節點,更新節點capability的值:
ironic node-create -d pxe_ipmitool

ironic node-update $NODE_UUID add properties/capabilities={'trusted_boot':true}
4,創建一個執行的flavor:
nova flavor-key $TRUST_FLAVOR_UUID set 'capabilities:trusted_boot'=true
5,準備 tboot和mboot.c32,把它們放到ironic-conductor進程控制的所有節點的tftp_root或http_root的目錄下:
Ubuntu:
    cp /usr/lib/syslinux/mboot.c32 /tftpboot/

Fedora:
    cp /usr/share/syslinux/mboot.c32 /tftpboot/
注意:mboot.c32的實際位置,在不同的發行版本中有所不同。
tboot下載:
6,安裝OAT服務。OAT服務器應該正確地運行和配置。
7,通過Nova引導一個實例:
nova boot --flavor $TRUST_FLAVOR_UUID --image $TRUST_IMG --user-data $TRUST_SCRIPT trusted_instance
注意節點將會在trusted boot時被檢測,哈希值會存到TPM。TRUST_SCRIPT的例子可以查看:
8,通過AOT服務驗證結果:
這已超出ironic的範圍。目前,用戶可以通過手動驗證步驟手動驗證結果。鏈接:  manual verify steps.

(七)通知

  裸金屬服務支持發送通知,通知是消息代理髮送的消息(如RabbitMQ或oslo消息庫支持的其他任何東西),這些消息指示發生的各種事件,比如節點改變了電源狀態。可以通過消息總線的外部服務讀取這些數據。例如,Searchlight是一個OpenStack服務,它使用通知來從裸金屬服務中索引(並創建可搜索的)資源。
默認情況下Notifications功能是禁用的。有關如何啓用可用的Notifications和說明的完整列表,請參閱: Notifications.

(八) 配置節點控制檯


十,Troubleshooting疑難問題

  一旦所有的服務都正確地運行和配置,並且一個節點已經加入了裸金屬服務且處於available 的預分配狀態,計算服務應該將節點檢測爲可用的資源,並將其暴露給調度器。
注意:
  有一個延遲,計算服務可能需要一分鐘(一個週期的任務週期)來識別裸金屬服務資源(增加和刪除)的任何變化。

  除了查看nova-compute日誌文件之外,還可以通過查看計算管理程序的列表來查看可用的資源。所報告的資源應該與裸金屬節點屬性和計算服務的flavor相匹配。
下面是一個示例集,用於比較計算服務和裸金屬服務的資源:
$ ironic node-list
+--------------------------------------+---------------+-------------+--------------------+-------------+
| UUID                                 | Instance UUID | Power State | Provisioning State | Maintenance |
+--------------------------------------+---------------+-------------+--------------------+-------------+
| 86a2b1bb-8b29-4964-a817-f90031debddb | None          | power off   | available          | False       |
+--------------------------------------+---------------+-------------+--------------------+-------------+

$ ironic node-show 86a2b1bb-8b29-4964-a817-f90031debddb
+------------------------+----------------------------------------------------------------------+
| Property               | Value                                                                |
+------------------------+----------------------------------------------------------------------+
| instance_uuid          | None                                                                 |
| properties             | {u'memory_mb': u'1024', u'cpu_arch': u'x86_64', u'local_gb': u'10',  |
|                        | u'cpus': u'1'}                                                       |
| maintenance            | False                                                                |
| driver_info            | { [SNIP] }                                                           |
| extra                  | {}                                                                   |
| last_error             | None                                                                 |
| created_at             | 2014-11-20T23:57:03+00:00                                            |
| target_provision_state | None                                                                 |
| driver                 | pxe_ipmitool                                                         |
| updated_at             | 2014-11-21T00:47:34+00:00                                            |
| instance_info          | {}                                                                   |
| chassis_uuid           | 7b49bbc5-2eb7-4269-b6ea-3f1a51448a59                                 |
| provision_state        | available                                                            |
| reservation            | None                                                                 |
| power_state            | power off                                                            |
| console_enabled        | False                                                                |
| uuid                   | 86a2b1bb-8b29-4964-a817-f90031debddb                                 |
+------------------------+----------------------------------------------------------------------+

$ nova hypervisor-show 1
+-------------------------+--------------------------------------+
| Property                | Value                                |
+-------------------------+--------------------------------------+
| cpu_info                | baremetal cpu                        |
| current_workload        | 0                                    |
| disk_available_least    | -                                    |
| free_disk_gb            | 10                                   |
| free_ram_mb             | 1024                                 |
| host_ip                 | [ SNIP ]                             |
| hypervisor_hostname     | 86a2b1bb-8b29-4964-a817-f90031debddb |
| hypervisor_type         | ironic                               |
| hypervisor_version      | 1                                    |
| id                      | 1                                    |
| local_gb                | 10                                   |
| local_gb_used           | 0                                    |
| memory_mb               | 1024                                 |
| memory_mb_used          | 0                                    |
| running_vms             | 0                                    |
| service_disabled_reason | -                                    |
| service_host            | my-test-host                         |
| service_id              | 6                                    |
| state                   | up                                   |
| status                  | enabled                              |
| vcpus                   | 1                                    |
| vcpus_used              | 0                                    |
+-------------------------+--------------------------------------+
維護模式
如果需要從資源池中取出一個節點,則可以使用維護(Maintenance)模式。將節點置爲維護模式,用於阻止裸金屬服務執行與節點相關的週期性任務。還將防止計算服務通過將節點暴露給nova調度程序而將一個租戶實例置入節點上。可以使用以下命令將節點置爲維護模式:
$ ironic node-set-maintenance $NODE_UUID on
一個維護原因是一個可選的——可一使用--reason命令行參數指定。這是一個自由的文本字段,將顯示在node-show命令的maintenance_reason部分中。
$ ironic node-set-maintenance $UUID on --reason "Need to add ram."

$ ironic node-show $UUID

+------------------------+--------------------------------------+
| Property               | Value                                |
+------------------------+--------------------------------------+
| target_power_state     | None                                 |
| extra                  | {}                                   |
| last_error             | None                                 |
| updated_at             | 2015-04-27T15:43:58+00:00            |
| maintenance_reason     | Need to add ram.                     |
| ...                    | ...                                  |
| maintenance            | True                                 |
| ...                    | ...                                  |
+------------------------+--------------------------------------+
移除維護模式、並清理maintenance_reason,使用一下命令:
$ ironic node-set-maintenance $NODE_UUID off

十一,Next steps

你的OpenStack環境現在已經包含了裸金屬服務。

參考:

https://docs.openstack.org/ironic/pike/install/index.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章