您的位置:首页 > 运维架构

ironic部署

2015-12-03 16:18 609 查看

ironic部署过程

通过nova boot启动一个实例,nova api将请求通过消息队列发送nova scheduler

nova scheduler应用过滤器找到一个合适的计算节点,nova scheduler使用额外参数匹配一个物理节点,例如‘cpu_arch’, ‘baremetal:deploy_kernel_id’, baremetal:deploy_ramdisk_id’

nova compute manager调用driver.spawn产生一个实例,此实例包含所有信息,如image和networking。

ironic conductor从数据库获取匹配物理节点的信息,并将其标记为使用。

ironic conductor从glance下载镜像。

虚拟网卡被接入neutron网络,neutron api更新dhcp支持pxe/tftp选项

nova ironic通过ironic api产生一个部署请求给ironic conductor

pxe driver准备好tftp bootloader

ipmi driver通过命令设置远程节点从网络启动,并且将其开机。

物理节点通过DHCP/PXE启动内存文件系统。pxe driver通过iscsi拷贝镜像数据到本地,将镜像dd到本地磁盘,关闭iscsi连接。ironic conductor将pxe config标志设置已部署成功。

IPMI启动裸金属节点。

部署环境

硬件环境:3台服务器(32 cores + 500G ssd + 128G ram + 2*10G NICs),一台交换机

操作系统:ubuntu 14.04

网络角色计算机名称ip地址
mgmt控制器controller172.30.82.11
计算ironic172.30.82.12
public控制器controller172.30.83.11
计算ironic172.30.83.12
进行下面配置之前,请先配置好Identity、Image、Compute和Networing服务(Liberty)

配置组件步骤:(compute节点上配置)

1. 为Bare Metal服务配置Identity认证

1)创建bare metal服务用户

openstack user create --password-prompt ironic
openstack role add --project service --user ironic admin


2)向Identity注册Bare Metal服务

openstack service create --name ironic --description "Openstack Bare Metal service" baremetal


3)向Identity注册服务访问端点

openstack endpoint create --region RegionOne baremetal public http://172.30.83.12:6385 openstack endpoint create --region RegionOne baremetal internal http://172.30.82.12:6385 openstack endpoint create --region RegionOne baremetal admin http://172.30.82.12:6385[/code] 

2. 设置数据库

mysql -u root -p
create database ironic character set utf8;
grant all privileges on ironic.* to 'ironic'@'localhost' identified by 'ironic';
grant all privileges on ironic.* to 'ironic'@'%' identified by 'ironic';


3. 安装Bare Metal服务组件

apt-get install ironic-api ironic-conductor python-ironicclient -y


4. 配置Bare Metal服务,vi /etc/ironic/ironic.conf

[DEFAULT]
debug=true
verbose=true
log_dir=/var/log/ironic

rabbit_host=172.30.82.11
auth_strategy=keystone

notification_driver = messaging
send_sensor_data = true
send_sensor_data_types=Temperature,Fan,Voltage
enabled_drivers=pxe_ipmitool
log_file=/var/log/ironic/api.log
my_ip=172.30.82.12

[api]
host_ip=0.0.0.0
port=6385

[conductor]
api_url=http://172.30.83.12:6385
sync_power_state_interval=60

[console]
terminal_cert_dir=/tmp/ca

[keystone_authtoken]
#auth_host=172.30.82.11
auth_uri=http://172.30.83.11:5000/v2.0/
identity_uri = http://controller:35357/ admin_user=ironic
admin_password=ironic
admin_tenant_name=service

[database]
connection = mysql+pymysql://ironic:ironic@172.30.82.11/ironic?charset=utf8

[neutron]
url=http://172.30.83.11:9696

[glance]
glance_host=172.30.83.11

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
rabbit_virtual_host=/

[oslo_policy]
policy_file=/etc/ironic/policy.json

[pxe]
pxe_append_params = nofb nomodeset vga=normal console=tty0 console=ttyS0,115200n8
tftp_server=172.30.83.12
tftp_root=/tftpboot


5. 初始化数据库表

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


6. 重启BareMetal服务

service ironic-api restart
service ironic-conductor restart


7. 配置Compute使用BareMetal服务(controller and ironic)

1)在控制节点和计算节点的nova.conf配置文件中添加一下配置项

[default]
compute_driver=nova.virt.ironic.IronicDriver
firewall_driver=nova.virt.firewall.NoopFirewallDriver
scheduler_host_manager=nova.scheduler.ironic_host_manager.IronicHostManager
ram_allocation_ratio=1.0
reserved_host_memory_mb=0
compute_manager=ironic.nova.compute.manager.ClusteredComputeManager
scheduler_use_baremetal_filters=True
scheduler_tracks_instance_changes=False

[ironic]
admin_username=ironic
admin_password=ironic
admin_url=http://controller:35357/v2.0
admin_tenant_name=service
api_endpoint=http://172.30.82.12:6385/v1


2)重启nova-scheduler服务和nova-compute服务

service nova-scheduler restart
service nova-compute restart


8. 配置BareMetal与Networking服务交互(controller)

创建网络


neutron net-create ext_net --shared --provider:network_type flat --provider:physical_network physical-net
neutron subnet-create ext_net 172.30.81.0/24 --name ext-subnet --ip-version=4                       --gateway=172.30.81.1 --allocation-pool start=172.30.81.50,end=172.30.81.250 --enable-dhcp
neutron subnet-create ext_net 172.30.65.0/24 --name ext-subnet-65 --ip-version=4                  --gateway=172.30.65.1 --allocation-pool start=172.30.65.50,end=172.30.65.100


9. 配置镜像(controller)

1)制作用户镜像和部署镜像

disk-image-create ubuntu baremetal dhcp-all-interfaces -o user-image
ramdisk-image-create ubuntu deploy-ironic -o deploy-image


2)上传部署镜像

glance image-create --name deploy-kernel --visibility public --disk-format aki --container-format bare < deploy-image.vmlinuz
glance image-create --name deploy-initrd --visibility public --disk-format ari --container-format bare < deploy-image.initrd


3)上传用户镜像(非dd安装方式)

glance image-create --name my-kernel --visibility public --disk-format aki --container-format bare < my-image.vmlinuz
glance image-create --name my-image.initrd --visibility public --disk-format ari --container-format bare < my-image.initrd
glance image-create --name my-image --visibility public --disk-format qcow2 --container-format bare --property kernel_id=$MY_VMLINUZ_UUID --property ramdisk_id=$MY_INITRD_UUID < user-image.qcow2


(dd方式安装)


glance image-create --name my-whole-disk-image --visibility public --disk-format qcow2 --container-format bare < my-whole-disk-image.qcow2


4)dd镜像制作

创建镜像

预装机器操作:

fdisk
df
dd if=/dev/sda conv=sync,noerror bs=8M count=5000 | nc 172.30.65.21 8888

glance机器:
nc -l 8888 > whole-disk-image.img


10. 创建flavor(controller)

nova flavor-create baremetal <id> $RAM_MB $DISK_GB $CPU
nova flavor-key my-baremetal-flavor set cpu_arch=$ARCH


11. PXE和IMPI设置(ironic)

1)配置tftp服务

apt-get install tftpd-hpa syslinux-common syslinux -y
mkdir -p /tftpboot


配置tftp配置文件/etc/default/tftpd-hpa


TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="172.30.83.12:69"
TFTP_OPTIONS="-l -s -c"
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
cp /usr/lib/syslinux/chain.c32 /tftpboot
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
chown -R ironic /tftpboot


2)配置impitool

apt-get install ipmitool -y
ipmitool -I lanplus -H <ip-address> -U <username> -P <password> chassis power status
service ironic-conductor restart


12. 配置baremetal控制台访问

apt-get install shellinabox -y
apt-get install openssl -y
mkdir -p /tmp/ca
cd /tmp/ca
openssl genrsa -des3 -out xyq.key 1024
openssl req -new -key xyq.key -out xyq.csr
cp xyq.key xyq.key.org
openssl rsa -in xyq.key.org -out xyq.key
openssl x509 -req -days 3650 -in xyq.csr -signkey xyq.key -out xyq.crt
cat xyq.crt xyq.key > certificate.pem


13. 向BareMetal服务注册节点

1)注册节点

ironic node-create -d pxe_ipmitool -i ipmi_address=<ipmi_address> -i ipmi_username=<ipmi_user> -i ipmi_password=<ipmi_password> -i ipmi_priv_level=OPERATOR -i deploy_kernel=$DEPLOY_VMLINUZ_UUID -i deploy_ramdisk=$DEPLOY_INITRD_UUID -p cpus=$CPU -p memory_mb=$RAM_MB -p local_gb=$DISK_GB -p cpu_arch=$ARCH


2) 显示节点信息

ironic node-show <node-uuid>


3)为节点添加端口

ironic port-create -n $NODE_UUID -a $MAC_ADDRESS


4)配置节点控制台访问

ironic node-update $NODE_UUID add driver_info/ipmi_terminal_port=9000 ironic node-set-console-mode $NODE_UUID true


5)配置节点从本地启动

ironic node-update <node-uuid> add properties/capabilities="boot_option:local" nova flavor-key baremetal set capabilities:boot_option="local"


6)验证节点

ironic node-validate <node-uuid>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ironic openstack baremetal