Ironic 安装和配置详解

 

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

 

1.Install Openstack With Neutron

2.Create and delete vm to test the setup

3.Configure existing setup for ironic

 3.1.Configure ironic user in keystone

 # keystone user-create --name=ironic --pass=IRONIC_PASSWORD   --email=ironic@example.com # keystone user-role-add --user=ironic --tenant=service --role=admin

 3.2.Register ironic with keystone

 # keystone service-create --name=ironic --type=baremetal --description="Ironic bare metal provisioning service"# keystone endpoint-create  --service-id=the_service_id_above --publicurl=http://IRONIC_NODE:6385 --internalurl=http://IRONIC_NODE:6385 --  adminurl=http://IRONIC_NODE:6385 

 

 3.3.Setup DataBase

 # mysql -u root -pmysql> CREATE DATABASE ironic CHARACTER SET utf8;mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' \IDENTIFIED BY 'IRONIC_DBPASSWORD';mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' \IDENTIFIED BY 'IRONIC_DBPASSWORD';

 3.4.The Bare Metal Service is configured via its configuration file.

This file is typically located at /etc/ironic/ironic.conf.

[DEFAULT]
enabled_drivers = pxe_ipmitool
debug=True
auth_strategy=keystone
log_dir=/var/log/ironic/
rabbit_host=<rabbitmq_server>
[api]
port=6385
[conductor]
[database]
connection = mysql://ironic:ironic@<database_server>/ironic?charset=utf8
[glance]
glance_host=<glance_server>
glance_port=9292
glance_protocol=http
glance_num_retries=2
auth_strategy=keystone
[ipmi]
[keystone_authtoken]
signing_dir = /var/cache/ironic/api
admin_password = ironic
admin_user = ironic
admin_tenant_name = service
auth_uri = http://<keystone_server>:5000/v2.0
identity_uri = http://<keystone_server>:35357
auth_protocol = http
auth_port = 35357
auth_host = <keystone_server>
admin_token = token123
[matchmaker_redis]
[matchmaker_ring]
[neutron]
url=http://<neutron_server>:9696
[pxe]
[rpc_notifier2]
[seamicro]
[ssh]
[ssl]

3.5.Create the Bare Metal Service database tables:

#ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema 

3.6.Restart the Bare Metal Service:

#service ironic-api restart
#service ironic-conductor restart 

3.7.Configure the compute service


compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
compute_driver=ironic.nova.virt.ironic.IronicDriver
scheduler_host_manager=ironic.nova.scheduler.ironic_host_manager.IronicHostManager
ram_allocation_ratio=1.0
reserved_host_memory_mb=0


[ironic]# Ironic keystone admin name
admin_username=ironic#Ironic keystone admin password.
admin_password=ironic# keystone API endpoint
admin_url=http://<keystone_server>:35357/v2.0

# Ironic keystone tenant name.
admin_tenant_name=service# URL for Ironic API endpoint.
api_endpoint=http://<ironic_api_server>:6385/v1

 

3.8.Restart Nova services 

#service nova-scheduler restart
#service nova-compute restart

3.9.Configure Neutron

3.9.1.Edit /etc/neutron/plugins/ml2/ml2_conf.ini and modify these:


[ml2]
type_drivers = flat
tenant_network_types = flat
mechanism_drivers = openvswitch[ml2_type_flat]
flat_networks = physnet1[securitygroup]
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
enable_security_group = True[ovs]
network_vlan_ranges = physnet1
bridge_mappings = physnet1:br-em2
# Replace eth2 with the interface on the neutron node which you
# are using to connect to the bare metal server 

3.9.2.Add the integration bridge to Open vSwitch:


#ovs-vsctl add-br br-int


3.9.3.Create the br-eth2 network bridge to handle communication between the OpenStack (and Bare Metal services) and the bare metal nodes using eth2. Replace eth2 with the interface on the neutron node which you are using to connect to the Bare Metal Service:


# ovs-vsctl add-br br-em2
# ovs-vsctl add-port br-em2 em2


3.9.4.Restart the Open vSwitch agent:

 

#service neutron-plugin-openvswitch-agent restart
#ovs-vsctl showBridge br-exPort "em1"Interface "em1"Port br-exInterface br-extype: internalBridge br-intPort "int-br-em2"Interface "int-br-em2"Port br-intInterface br-inttype: internalBridge "br-em2"Port "br-em2"Interface "br-em2"type: internalPort "phy-br-em2"Interface "phy-br-em2"Port "em2"Interface "em2"ovs_version: "2.0.1"

     
3.9.5.Create the flat network on which you are going to launch the instances:

#neutron net-create --tenant-id $TENANT_ID sharednet1 --shared --provider:network_type flat --provider:physical_network physnet1


3.9.6.Create subnet 

#neutron subnet-create sharednet1 --gateway <GateWay> <Network_CIDR> --name subnet1 

3.10.Bare Metal provisioning requires two sets of images: the deploy images and the user images.


The disk-image-builder can be used to create images required for deployment and the actual OS which the user is going to run.

3.10.1.Clone the project and run the subsequent commands from the project directory:

#git clone https://github.com/openstack/diskimage-builder.git
#cd diskimage-builder


3.10.2.Build the image your users will run (Ubuntu image has been taken as an example):

#bin/disk-image-create -u ubuntu -o my-image

The above command creates my-image.qcow2 file. If you want to use Fedora image, replace ubuntu with fedora in the above command.

 

3.10.3.Extract the kernel & ramdisk:

#bin/disk-image-get-kernel -d ./ -o my -i $(pwd)/my-image.qcow2

The above command creates my-vmlinuz and my-initrd files. These images are used while deploying the actual OS the users will run, my-image in our case.

3.10.4.Build the deploy image:

#bin/ramdisk-image-create ubuntu deploy-ironic  -o my-deploy-ramdisk

The above command creates my-deploy-ramdisk.kernel and my-deploy-ramdisk.initramfs files which are used initially for preparing the server (creating disk partitions) before the actual OS deploy. If you want to use a Fedora image, replace ubuntu with fedora in the above command.

3.10.5.Add the user images to glance

Load all the images created in the below steps into Glance, and note the glance image UUIDs for each one as it is generated.

 

3.10.6.Add the kernel and ramdisk images to glance:

#glance image-create --name my-kernel --public  --disk-format aki  < my-vmlinuz

3.10.7.Store the image uuid obtained from the above step as $MY_VMLINUZ_UUID.

#glance image-create --name my-ramdisk --public --disk-format ari  < my-initrd
Store the image UUID obtained from the above step as $MY_INITRD_UUID.

3.10.8.Add the my-image to glance which is going to be the OS that the user is going to run. Also associate the above created images with this OS image.

These two operations can be done by executing the following command:
#glance image-create --name my-image --public --disk-format qcow2 --container-format bare --property kernel_id=$MY_VMLINUZ_UUID --property      ramdisk_id=$MY_INITRD_UUID < my-image

3.10.9.Add the deploy images to glance


Add the my-deploy-ramdisk.kernel and my-deploy-ramdisk.initramfs images to glance:
# glance image-create --name deploy-vmlinuz --public --disk-format aki < my-deploy-ramdisk.kernel

Store the image UUID obtained from the above step as $DEPLOY_VMLINUZ_UUID.
# glance image-create --name deploy-initrd --public --disk-format ari < my-deploy-ramdisk.initramfs

Store the image UUID obtained from the above step as $DEPLOY_INITRD_UUID.

3.11.You’ll need to create a special Bare Metal flavor in Nova.

The flavor is mapped to the bare metal server through the hardware specifications.


Change these to match your hardware
 RAM_MB=1024CPU=2DISK_GB=100ARCH={i686|x86_64}

 

 3.11.1.Create the baremetal flavor by executing the following command:
 #nova flavor-create my-baremetal-flavor auto $RAM_MB $DISK_GB $CPU#nova flavor-key my-baremetal-flavor set cpu_arch=$ARCH "baremetal:deploy_kernel_id"=$DEPLOY_VMLINUZ_UUID "baremetal:deploy_ramdisk_id"=$DEPLOY_INITRD_UUID

3.12. Create node in ironic


# ironic node-create -d pxe_ipmitool -i ipmi_address=<ipmi_address> -i ipmi_username=<ipmi_username> -i ipmi_password=<ipmi_password>
# ironic node-update $NODE_UUID add driver_info/pxe_deploy_kernel=$DEPLOY_VMLINUZ_UUID driver_info/pxe_deploy_ramdisk=$DEPLOY_INITRD_UUID
# ironic port-create -n <node_id> -a<mac_id of server> 

3.13.If you will be using PXE, it needs to be set up on the Bare Metal Service node(s) where ironic-conductor is running.


Make sure the tftp root directory exist and can be written to by the user the ironic-conductor is running as. For example:

#sudo mkdir -p /tftpboot
#sudo chown -R ironic -p /tftpboot
Install tftp server and the syslinux package with the PXE boot images:
Ubuntu:
#sudo apt-get install tftpd-hpa syslinux syslinux-common
Fedora/RHEL:
#sudo yum install tftp-server syslinux-tftpboot
#Setup tftp server to serve /tftpboot.

Copy the PXE image to /tftpboot. The PXE image might be found at [1]:
Ubuntu:
#sudo cp /usr/lib/syslinux/pxelinux.0 /tftpboot
#Go to /etc/defaults/tftp-hpa remove everything and paste following
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="[::]:69"
#TFTP_OPTIONS="--secure"
TFTP_OPTIONS="--map-file /tftpboot/map-file -v -v -v -v"

To be able to access absolute path on tftp do following steps
Create a map file in /tftpboot/map-file
r ^([^/]) /tftpboot/\1

tftp service should be running like below
/usr/sbin/in.tftpd --listen --user tftp --address [::]:69 --map-file /tftpboot/map-file -v -v -v -v /tftpboot

3.14.IPMI support

If using the IPMITool driver, the ipmitool command must be present on the service node(s) where ironic-conductor is running. On most distros, this is provided as part of the ipmitool package. Source code is available at http://ipmitool.sourceforge.net/

Note that certain distros, notably Mac OS X and SLES, install openipmi instead of ipmitool by default. THIS DRIVER IS NOT COMPATIBLE WITH openipmi AS IT RELIES ON ERROR HANDLING OPTIONS NOT PROVIDED BY THIS TOOL.

Check that you can connect to and authenticate with the IPMI controller in your bare metal server by using ipmitool:

ipmitool -I lanplus -H <ip-address> -U <username> -P <password> chassis power status

3.15.Test Setup with nova

nova boot --flavor baremetal --key-name mykey --image my-image  --nic net-id=d3b9b3c5-378e-493b-9515-22c17433c23a   bm1

3.16. Debug commands

3.16.1.Sometimes vm goes in error state and does not got deleted ,for that run following command in ironic

  
 ironic node-update 0d78301c-2d78-42e0-b14d-4a031e5a7cd4 remove instance_uuid

3.16.2.Always Check the node is not in maintenance mode if it is in maintenance mode then remove it
 
  ironic node-update 0d78301c-2d78-42e0-b14d-4a031e5a7cd4 replace maintenance=False

 

转载于:https://www.cnblogs.com/pinganzi/p/6796838.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack使用优化(基本篇)

转自&#xff1a;https://github.com/lcxfs1991/blog/issues/2 前言 本文不是webpack入门文章&#xff0c;如果对webpack还不了解&#xff0c;请前往题叶的Webpack入门&#xff0c;或者阮老师的Webpack-Demos。 为什么要使用Webpack 与react一类模块化开发的框架搭配着用比较好…

word2vec中单词向词向量的转换过程详解

目录前言&#xff1a;1、Word2Vec两种模型的大致印象2、CBOW模型流程举例3、CBOW模型流程举例总结&#xff1a; 目录 前言&#xff1a; 针对word2vec是如何得到词向量的&#xff1f;这篇文章肯定能解决你的疑惑。该篇文章主要参考知乎某大神的回答&#xff0c;个人在此基础上…

Python把函数作为参数传入的高阶编程方法

map:接受两个参数&#xff08;函数&#xff0c;Iterable&#xff09;&#xff0c;map将传入的函数依次作用于Iterable的每个元素&#xff0c;并且返回新的Iterable def f(x):return x*x r map(f,[1,2,3,4]) #此时的r为惰性求值——可用next()和for...in取值 #通过list()返…

《编程珠玑(第2版•修订版)》—第2章2.2节无处不在的二分搜索

本节书摘来自异步社区《编程珠玑&#xff08;第2版•修订版&#xff09;》一书中的第2章2.2节无处不在的二分搜索&#xff0c;作者【美】Jon Bentley&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.2 无处不在的二分搜索我想到的一个数在1到100之间&…

JavaScript学习笔记(四)——jQuery插件开发与发布

jQuery插件就是以jQuery库为基础衍生出来的库&#xff0c;jQuery插件的好处是封装功能&#xff0c;提高了代码的复用性&#xff0c;加快了开发速度&#xff0c;现在网络上开源的jQuery插件非常多&#xff0c;随着版本的不停迭代越来越稳定好用&#xff0c;在jQuery官网有许多插…

AIML元素详细说明

目录前言&#xff1a;1、简介2、详细说明总结&#xff1a; 目录 前言&#xff1a; 智能客服客户咨询功能的实现主要依靠的就是Python的AIML库&#xff0c;这里就先介绍下AIML。 详细的使用教程可参考&#xff1a;https://github.com/andelf/PyAIML 目前大部分AIML只支持Py…

【解决】如何打开.ipynb文件

最近碰到文件名后缀为.ipynb文件&#xff0c;起初没太在意这种文件格式&#xff0c;用Notepad打开之后看到也是类似于JSON格式的信息&#xff0c;以为也是为其他的一些文件服务的&#xff08;类似于配置一些HTML文件的配置文件&#xff09;。但是后来才发现这也是一种文本表示形…

《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡

本节书摘来异步社区《树莓派学习指南&#xff08;基于Linux&#xff09;》一书中的第1章&#xff0c;第1.4节&#xff0c;作者&#xff1a;【英】Peter Membrey ,【澳】David Hows &#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.4 将Raspbian烧录到SD卡 …

python单向链表和双向链表的图示代码说明

图示说明&#xff1a; 单向链表&#xff1a; insert、 remove、 update、pop方法 class Node:def __init__(self, data):self.data dataself.next Nonedef __str__(self):return str(self.data)# 通过单链表构建一个list的结构&#xff1a; 添加 删除 插入 查找 获取长…

不使用Ajax,如何实现表单提交不刷新页面

不使用Ajax&#xff0c;如何实现表单提交不刷新页面&#xff1f; 目前&#xff0c;我想到的是使用<iframe>&#xff0c;如果有其他的方式&#xff0c;后续再补。举个栗子&#xff1a; 在表单上传文件的时候必须设置enctype"multipart/form-data"表示表单既有文…

AIML知识库数据匹配原理解析

目录&#xff1a;前言&#xff1a;1、AIML系统工作流程2、AIML的核心推理机制3、推理举例4、匹配规则及实践中遇到的一些问题的解释总结&#xff1a; 目录&#xff1a; 前言&#xff1a; 参考&#xff1a;《Alice机理分析与应用研究》 关于AIML库这里就不介绍了&#xff0c…

【Python】模拟面试技术面试题答

一、 python语法 1. 请说一下你对迭代器和生成器的区别&#xff1f; 2. 什么是线程安全&#xff1f; 3. 你所遵循的代码规范是什么&#xff1f;请举例说明其要求&#xff1f; 4. Python中怎么简单的实现列表去重&#xff1f; 5. python 中 yield 的用法…

ROS机器人程序设计(原书第2版)2.3 理解ROS开源社区级

2.3 理解ROS开源社区级 ROS开源社区级的概念主要是ROS资源&#xff0c;其能够通过独立的网络社区分享软件和知识。这些资源包括&#xff1a; 发行版&#xff08;Distribution&#xff09; ROS发行版是可以独立安装、带有版本号的一系列综合功能包。ROS发行版像Linux发行版一样…

Win7 U盘安装Ubuntu16.04 双系统

Win7系统下安装Ubuntu系统&#xff0c;主要分为三步&#xff1a; 第1步&#xff1a;制作U盘启动盘 第2步&#xff1a;安装Ubuntu系统 第3步&#xff1a;创建启动系统引导 第1步&#xff1a;制作U盘启动盘 1.下载Ubuntu16.04安装镜像&#xff0c;官网地址&#xff1a;http://www…

Word2VecDoc2Vec总结

转自&#xff1a;http://www.cnblogs.com/maybe2030/p/5427148.html 目录&#xff1a;1、词向量2、Distributed representation词向量表示3、word2vec算法思想4、doc2vec算法思想5、Doc2Vec主要参数详解总结&#xff1a; 目录&#xff1a; 1、词向量 自然语言理解的问题要转…

ubantu安装pycharm破解+Linux基础简介

一、课程简介 linux服务器配置及常用命令 Ubuntu centos 开发软件配置及服务环境的搭建 软件的安装和配置 mysql数据库使用、monDB使用、redius的使用 git的使用 html/css 课程学习方式 表达训练 学习方法&#xff1a; linux学习基本上都是命令和配置 命令要多敲多记 …

《游戏视频主播手册》——2.2 哪些人适合做游戏主播

本节书摘来自异步社区《游戏视频主播手册》一书中的第2章&#xff0c;第2.2节&#xff0c;作者 王岩&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.2 哪些人适合做游戏主播 据不完全统计&#xff0c;目前国内有超过26000名活跃的游戏主播。所谓“活跃的…

Doc2Vec实践

目录:前言&#xff1a;第一步&#xff1a;首先我们需要拿到对应的数据&#xff0c;相关的代码如下&#xff1a;第二步&#xff1a;拿到对应的数据后&#xff0c;就开始训练数据生成对应的model&#xff0c;对应的代码如下&#xff1a;第三步&#xff1a;得到生成的model后&…

Linux常用命令全网最全

一、linux文件系统结构 sudo apt-get install treetree --help #查看帮助tree -L 1 #显示文件目录 rootubuntu16 /# tree -L 1 . #系统根目录&#xff0c;有且只有一个根目录 ├── bin #存放常见的命令 ├── boot #系统启动文件和核心文件都在这个目录…

《开源思索集》一Source Code + X

本节书摘来异步社区《开源思索集》一书中的第1章&#xff0c;作者&#xff1a; 庄表伟 责编&#xff1a; 杨海玲, 更多章节内容可以访问云栖社区“异步社区”公众号查看。 Source Code X 开源思索集最近&#xff0c;有一位来自学术界朋友&#xff0c;找到了我们这个开源的圈子…