安装ironic-inspector组件
在裸金属实例管理节点注册过程中,需要将裸金属物理服务器硬件信息增加至节点中,ironic-inspector用于实现裸金属物理服务器硬件信息自动化收集,包括但不限于cpu核数、内存容量、硬盘容量、体系架构等信息。本节将介绍如何安装ironic-inspector。
ironic-inspector包含有两个服务,一个是ironic-inspector服务,用于和ipa协作完成inspect流程任务;另一个为ironic-inspector-dnsmasq服务,用于在inspect阶段承担dhcp、tftp功能。
ironic-inspector可以与Ironic-conductor在同一个节点,也可以在不同节点。本小节在Ironic-conductor所在节点安装ironic-inspector组件,因此以下操作在裸金属服务管理baremetal节点操作。
ironic-inspector网络配置
ironic-inspector组件将会为裸金属实例提供dhcp、tftp功能,因此要求ironic-inspector所在节点与裸金属服务器节点存在物理网络链路,推荐ironic-inspector组件使用单独的网络接口,以避免与其他服务相互干扰。若无单独网络接口,请参考情况二进行配置。
情况一:ironic-inspector组件使用单独的网络接口
- 创建网桥。
1
ovs-vsctl add-br br-inspector
- 连接外部网络接口。
1
ovs-vsctl add-port br-inspector eth
将eth修改为实际网络连接的接口。
- 配置br-inspector IP地址。
1 2 3
ifcongfig br-inspector up ifconfig eth 0 ifcongfig br-inspector 172.24.66.254/24
- 将eth修改为实际网络连接的接口。
- 此处所配置的IP地址不与其他网络设备冲突即可。
情况2:ironic-inspector组件其他组件使用相同网络接口
- 查看当前环境网络拓扑。
1
ovs-vsctl show
查看当前ironic管理节点网络拓扑如下:
br-ex网桥使用存在外部连接的接口。
不同环境的网络配置存在差异,找到有外部连接端口的网桥即可。
- 创建网络设备。
使用ip link命令创建ex-inspector与br-inspector设备。
1
sudo ip link add ex-inspector type veth peer name br-inspector
其中br-inspector作为ironic-inspector服务使用接口,ex-inspector用于连接br-ex与br-inspector。
- 使能网络设备。
1 2 3 4
sudo ip link set dev ex-inspector up sudo ip link set dev ex-inspector mtu 1400 sudo ip link set dev br-inspector up sudo ip link set dev br-inspector mtu 1400
- 配置br-inspector IP地址。
1
sudo ip addr add 172.24.66.254/24 dev br-inspector
此处所配置的IP地址不与其他网络设备冲突即可。
- 将ex-inspector加入br-ex网桥。
1
sudo ovs-vsctl add-port br-ex ex-inspector
- 配置iptables。
1 2
sudo iptables -I INPUT -i br-inspector -p udp --dport 69 -j ACCEPT sudo iptables -I INPUT -i br-inspector -p tcp --dport 5050 -j ACCEPT
ironic-inspector安装
ironic-inspector服务可安装任意节点,可以与Ironic-conductor在同一个节点,也可以不同,本文选择安装ironic-inspector服务于裸金属服务管理节点。
本小节内容除了1~3在控制节点进行,其他步骤在inspector服务节点进行。
- 在控制节点创建ironic-inspector数据库。
创建ironic-inspector数据库,本文与其他OpenStack服务相同使用MySQL数据库。
1 2 3 4 5
mysql -u root -p CREATE DATABASE ironic_inspector CHARACTER SET utf8; GRANT ALL PRIVILEGES ON ironic_inspector.* TO 'ironic_inspector'@'localhost' IDENTIFIED BY '<PASSWORD>'; GRANT ALL PRIVILEGES ON ironic_inspector.* TO 'ironic_inspector'@'%' IDENTIFIED BY '<PASSWORD>'; exit
为方便理解,本文将涉及到的密码全部以“PASSWORD”代替,请用户根据实际情况进行修改。此处将PASSWORD修改为ironic_inspector数据库的密码。
- 在控制节点创建ironic-inspector认证信息与endpoint,并输入ironic-inspector用户密码。
1
openstack user create --password-prompt ironic-inspector
这里输入的ironic-inspector用户密码需要和ironic-inspector数据库的访问密码一致。
1 2 3 4 5
openstack role add --user ironic-inspector --project service admin openstack service create --name ironic-inspector --description 'Bare Metal Introspection Service' --enable baremetal-introspection openstack endpoint create --region RegionOne --enable ironic-inspector admin http://{IRONIC_INSPECTOR_NODE}:5050 openstack endpoint create --region RegionOne --enable ironic-inspector internal http://{IRONIC_INSPECTOR_NODE}:5050 openstack endpoint create --region RegionOne --enable ironic-inspector public http://{IRONIC_INSPECTOR_NODE}:5050
IRONIC_INSPECTOR_NODE为ironic-inspector服务所安装节点的主机名或IP地址,若ironic-inspector安装在ironic-api所在节点,则主机名为“baremetal”。
- 在控制节点安装ironic-inspector-client。
1
sudo yum install python-ironic-inspector-client
- 在inspector服务节点安装ironic-inspector。
1
sudo yum install openstack-ironic-inspector python-ironic-inspector-client
- 配置ironic-inspector服务。
- 打开“/etc/ironic-inspector/inspector.conf”文件。
vi /etc/ironic-inspector/inspector.conf
- 按“i”进入编辑模式,在文件中增加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
[DEFAULT] rootwrap_config = /etc/ironic-inspector/rootwrap.conf transport_url = rabbit://openstack:PASSWORD@controller:5672 auth_strategy = keystone listen_address = 0.0.0.0 listen_port = 5050 [database] connection = mysql+pymysql://ironic_inspector:PASSWORD@controller/ironic_inspector?charset=utf8 [iptables] dnsmasq_interface = BR-inspect [ironic] auth_type=password auth_url=http://controller:5000/v3/ project_name=service username=ironic-inspector password=PASSWORD project_domain_name=default user_domain_name=default [keystone_authtoken] auth_type=password www_authenticate_uri=http://controller:5000 auth_url=http://controller:5000/v3/ memcached_servers = controller:11211 username=ironic-inspector password=PASSWORD project_name=service project_domain_name=default user_domain_name=default [processing] add_ports = pxe keep_ports = present always_store_ramdisk_logs = True ramdisk_logs_dir = /var/log/ironic-inspector/ramdisk-logs
表1 参数说明 参数
说明
add_ports = pxe
用于发现网卡。all表示添加所有网卡,pxe表示只添加pxe启动的那块网卡。
keep_ports = present
用于决定保留哪些网卡。all表示保留所有添加的网卡,present表示只保留当前使用的网卡。
- 将PASSWORD修改为对应组件所设置密码。
- 将BR-inspect替换为inspector-dnsmasq所使用的网桥,用于发送dhcp、tftp的报文,本节中为br-inspector。
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开“/etc/ironic-inspector/inspector.conf”文件。
- 创建inspector服务tftp根目录。
若ironic-inspector服务未安装在ironic服务节点,则需参见修改ironic配置文件完成tftp服务器安装与配置。
1
sudo mkdir -p /tftpboot/inspector
- 复制相关文件。
- 进入“/tftpboot/inspector”目录。
1
cd /tftpboot/inspector
- 复制相关文件至“/tftpboot/inspector”。
1 2
cp /tftpboot/*.efi /tftpboot/inspector cp /tftpboot/pxelinux.0 /tftpboot/inspector
- 将创建、上传用户镜像2~7获取的x86、aarch64架构的部署镜像内核、临时文件系统至“/tftpboot/inspector”,并将文件重名为ipa-{arch}.initramfs与ipa-{arch}.kernel。
arch表示体系架构,具体为x86与aarch64。
- 进入“/tftpboot/inspector”目录。
- 创建引导配置文件。
在“/tftpboot/inspector”目录完成以下操作:
- 创建引导配置文件grub.cfg,内容如下:
1 2 3 4 5 6 7
set default=master set timeout=5 set hidden_timeout_quiet=false menuentry "master" { configfile /grub-${grub_cpu}.cfg }
- 创建x86引导配置文件grub-i386.cfg,内容如下:
1 2 3 4 5 6 7 8 9
set default='Introspection for x86' set timeout=5 set hidden_timeout_quiet=false menuentry 'Introspection for x86' { linuxefi ipa-x86.kernel text showopts selinux=0 ipa-inspection-callback-url=http://{IRONIC_INSPECTOR_NODE}:5050/v1/continue ipa-inspection-collectors=default ipa-collect-lldp=1 systemd.journald.forward_to_console=yes ipa-debug=1 ipa-api-url=http://{IRONIC_NODE}:6385 initrdefi ipa-x86.initramfs }
- 创建x86引导配置文件grub-x86_64.cfg软链接。
1
ln -s grub-i386.cfg grub-x86_64.cfg
- 创建aarch64引导配置文件grub-arm64.cfg,内容如下:
1 2 3 4 5 6 7 8 9
set default='Introspection for aarch64' set timeout=5 set hidden_timeout_quiet=false menuentry 'Introspection for aarch64' { linux ipa-aarch64.kernel text showopts selinux=0 ipa-inspection-callback-url=http://{IRONIC_INSPECTOR_NODE}:5050/v1/continue ipa-inspection-collectors=default ipa-collect-lldp=1 systemd.journald.forward_to_console=yes ipa-debug=1 ipa-api-url=http://{IRONIC_NODE}:6385 initrd ipa-aarch64.initramfs }
- 创建x86 Legacy启动引导配置文件。
- 创建目录“sudo mkdir -p /tftpboot/inspector/pxelinux.cfg”。
- 在“pxelinux.cfg”目录下创建文件default,内容如下:
1 2 3 4 5 6 7
default introspect label introspect kernel ipa-x86.kernel append initrd=ipa-x86.initramfs ipa-inspection-callback-url=http://{IRONIC_INSPECTOR_NODE}:5050/v1/continue systemd.journald.forward_to_console=yes ipa-api-url=http://{IRONIC_NODE}:6385 ipappend 3
- {IRONIC_INSPECTOR_NODE}表示ironic-inspector服务所在节点IP地址,本例中为br-inspector 的IP地址为172.24.66.254。
- {IRONIC_NODE}表示ironic服务所在节点IP地址,本例中为br-inspector 的IP地址为172.24.66.254。
- 创建引导配置文件grub.cfg,内容如下:
- 配置ironic-inspector-dhcp服务。
编写“/etc/ironic-inspector/dnsmasq.conf”文件,增加如下内容:
1 2 3 4 5 6 7 8 9 10 11
interface={BR-inspect} dhcp-range=172.24.66.100,172.24.66.250 dhcp-match=set:efi,option:client-arch,7 dhcp-match=set:efi,option:client-arch,9 dhcp-match=aarch64, option:client-arch, 11 #aarch64 tftp-root=/tftpboot/inspector dhcp-boot=tag:aarch64,grubaa64.efi dhcp-boot=tag:!aarch64,tag:efi,grubx64.efi dhcp-boot=tag:!aarch64,tag:!efi,pxelinux.0 dhcp-sequential-ip
BR-inspect为inspector-dnsmasq所使用的网桥,本节中为br-inspector。dhcp-range所配置的ip范围应与5.5.1.1 小节为br-inspector配置的ip处于同一网段。
- 配置ironic服务。
- 在“/etc/ironic/ironic.conf”文件中增加如下内容:
1 2 3 4 5 6 7 8 9 10 11
[inspector] enabled = true region_name = RegionOne cafile = /opt/stack/data/ca-bundle.pem project_domain_id = default user_domain_id = default project_name = service password = PASSWORD username = ironic auth_url = http://controller:5000/v3/ auth_type = password
为方便理解,本文将涉及到的密码全部以“PASSWORD”代替,请用户根据实际情况进行修改。此处PASSWORD为2中设置的ironic-inspector用户密码。
- 重启服务。
1
sudo systemctl restart openstack-ironic-conductor
- 在“/etc/ironic/ironic.conf”文件中增加如下内容:
- 修改目录文件的权限。
1 2
sudo chown -R ironic /tftpboot/inspector sudo chmod -R 755 /tftpboot/inspector
- 同步ironic-inspector数据库。
1
ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade
- 启动服务。
1 2
systemctl enable openstack-ironic-inspector systemctl start openstack-ironic-inspector
由于inspector的DHCP服务是不区分MAC地址的,如果在flat网络中使用,跟neutron-dhcp-agent有冲突。因此如果是flat网络,建议分开进行inspector和provision。在需要再启动openstack-ironic-inspector-dnsmasq服务。