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.

选择启动方式为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 

ironic+nova详解的更多相关文章

  1. 【OpenStack】OpenStack系列8之Nova详解 Neutron详解

    Neutron下载安装 下载:git clone -b stable/icehouse https://github.com/openstack/neutron.git pip install -r ...

  2. 【OpenStack】OpenStack系列7之Nova详解

    源码下载.安装 参考: https://github.com/yongluo2013/osf-openstack-training/blob/master/installation/openstack ...

  3. Ironic 安装和配置详解

    转自:http://amar266.blogspot.com/2014/12/ironic-installation-and-configuration.html 1.Install Openstac ...

  4. 云计算---OpenStack Neutron详解

    简介: neutron是openstack核心项目之一,提供云计算环境下的虚拟网络功能 OpenStack网络(neutron)管理OpenStack环境中所有虚拟网络基础设施(VNI),物理网络基础 ...

  5. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...

  6. Centos7上部署openstack ocata配置详解

    之前写过一篇<openstack mitaka 配置详解>然而最近使用发现阿里不再提供m版本的源,所以最近又开始学习ocata版本,并进行总结,写下如下文档 OpenStack ocata ...

  7. (转)Centos7上部署openstack ocata配置详解

    原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124  文章-2  评论-82  Centos7上部署openstack ocata配置详解 ...

  8. Openstack keystone组件详解

    OpenStack Keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源 ...

  9. OpenStack各组件详解和通信流程

    一.openstack由来 openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成.后来以apache许可证授权,旨在为公共及私有云平台建设.open ...

随机推荐

  1. 请给出linux中查看系统已经登录用户的命令?

    w命令 第一行:当前系统运行了多久和系统负载 谁正在远程登录系统并且在干什么 [root@martin ~]# w 11:30:33 up 4 days, 18:10, 2 users, load a ...

  2. Spring Boot:整合Spring Data JPA

    综合概述 JPA是Java Persistence API的简称,是一套Sun官方提出的Java持久化规范.其设计目标主要是为了简化现有的持久化开发工作和整合ORM技术,它为Java开发人员提供了一种 ...

  3. 拉格朗日乘子法 - KKT条件 - 对偶问题

    接下来准备写支持向量机,然而支持向量机和其他算法相比牵涉较多的数学知识,其中首当其冲的就是标题中的拉格朗日乘子法.KKT条件和对偶问题,所以本篇先作个铺垫. 大部分机器学习算法最后都可归结为最优化问题 ...

  4. kubernetes实战篇之dashboard搭建

    系列目录 kubernetes dashboard是kubernetes官方提供的web管理界面,通过dashboard可以很方便地查看集群的各种资源.以及修改资源编排文件,对集群进行扩容操作,查看日 ...

  5. 攻防世界 web进阶练习 NewsCenter

    攻防世界 web进阶练习 NewsCenter   题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...

  6. Java 自定义异常(转载)

    1.异常的分类 1. 非运行时异常(Checked Exception) Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常. 2. 运行时异常(R ...

  7. PATB 1038. 统计同成绩学生(20)

    https://www.patest.cn/contests/pat-b-practise/1038 #include <cstdio> int cnt[110]; int temp[10 ...

  8. Python开发【第七篇】: 面向对象和模块补充

    内容概要 特殊成员 反射 configparser模块 hashlib模块 logging模块 异常处理 模块 包 1. 特殊成员 什么是特殊成员呢? __init_()就是个特殊的成员. 带双下划线 ...

  9. vSphere Client克隆虚拟机

    免费的VMWare ESXi5.5非常强大,使用ESXi经常会遇到这样的问题,我需要建立多个虚拟机,系统一个一个安装很麻烦.VMware ESXi.VMware vCenter Server 和 vS ...

  10. zabbix2.4汉化

    zabbix的2.4版本安装完后,这里的语言界面选择没有中文,其实是这个版本把中文的屏蔽了. [root@zabbix-server opt]# vim /var/www/html/include/l ...