• 安装与配置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

  • 相关阅读:
    终极版:Mybatis整合Spring配置
    出错: IOException parsing XML document from ServletContext resource [/cn.mgy.conig]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/cn.mgy.conig]
    出错:Error creating bean with name 'studentServiceImpl': Unsatisfied dependency expressed through field 'studentMapper';
    Spring出现事务代理的原因
    SpringMVC:处理静态资源
    运行maven命令的时候出现jre不正确
    spring-mybatis的整合
    [leetcode] 17. Letter Combinations of a Phone Number (medium)
    [PTA] 数据结构与算法题目集 6-12 二叉搜索树的操作集
    [PTA] 数据结构与算法题目集 6-11 先序输出叶结点
  • 原文地址:https://www.cnblogs.com/menkeyi/p/6063553.html
Copyright © 2020-2023  润新知