安装及配置

由于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之后就可以被调度了。

结合状态装换图来理解

安装与配置ironic的更多相关文章

  1. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  2. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  3. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

  4. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  5. 环境搭建系列-系统安装之centos 6.5安装与配置

    按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...

  6. ZooKeeper安装与配置

    一. 单机安装.配置: 1. 下载zookeeper二进制安装包下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3 ...

  7. mac 下JDK 与 tomcat 的安装与配置

    一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...

  8. 烂泥:zabbix3.0安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这个月又快过完了,最近也比较忙,没时间写文章,今天挤点时间把zabbix3.0安装与配置 ...

  9. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

随机推荐

  1. HDU 3926 并查集 图同构简单判断 STL

    给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...

  2. kle 日志收集系统维护之清理索引及索引优化脚本

    logstash每天往es建好索引,按天生成,就目前的需求,需要清理不需要的数据,以保证最新日志的速度展示,哈哈,瞎搞了这个脚本,路过的大神批评. #!/usr/bin/env python # co ...

  3. css3中新增的样式使用方法

    在PC版开发中由于IE原因,我们很少用到css3,但随着平板和智能手机进入我们的生活,以及现在越来越流行,在手机版和平板版开发中我们就可以大胆的使用了,下面我们探讨常用几个css3属性: 1.css3 ...

  4. $file函数

    引用:http://www.jb51.net/article/26508.htm 如: 复制代码代码如下: <form enctype="multipart/form-data&quo ...

  5. void指针和NULL指针

    Void指针和NULL指针 Void指针: Void指针我们称之为通用指针,就是可以指向任意类型的数据.也就是说,任何类型的指针都可以赋值给Void指针. 举例: #include<stdio. ...

  6. ActiveMQ笔记之安装(Linux)

    1. 基本概念 MQ(MessageQueue),消息队列,是一个消息接收和转发的容器. Apache ActiveMQ是一个JMS Provider实现. 2. 安装 从官网下载安装包: wget ...

  7. zedboard学习记录.1.纯PL流水灯

    环境:vivado 217.4 开发板: zedboard ver.d xc7z020clg484-1 1.打开Vivado新建一个RTL工程. 2.add source->add/create ...

  8. 35 - 并发编程-GIL-多进程

    目录 1 GIL 1.1 为什么会有GIL 1.2 GIL与thread lock 1.3 个人总结 2 multiprocessing模块 2.1 Process类 2.2 Process类的方法 ...

  9. tera term通过ttl脚本 自动连接服务器(转自http://www.cnblogs.com/wxb0328/p/teraterm.html)

    转自http://www.cnblogs.com/wxb0328/p/teraterm.html 在现在的这个公司一直使用tera term来远程连接服务器,感觉很方便,特别是它的ttl脚本配置的自动 ...

  10. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...