在裸金属实例管理节点注册过程中,需要将裸金属物理服务器硬件信息增加至节点中,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组件将会为裸金属实例提供dhcp、tftp功能,因此要求ironic-inspector所在节点与裸金属服务器节点存在物理网络链路,推荐ironic-inspector组件使用单独的网络接口,以避免与其他服务相互干扰。若无单独网络接口,请参考情况二进行配置。
情况一:ironic-inspector组件使用单独的网络接口
1
|
ovs-vsctl add-br br-inspector |
1
|
ovs-vsctl add-port br-inspector eth |
将eth修改为实际网络连接的接口。
1 2 3 |
ifcongfig br-inspector up ifconfig eth 0 ifcongfig br-inspector 172.24.66.254/24 |
情况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 |
1
|
sudo ip addr add 172.24.66.254/24 dev br-inspector |
此处所配置的IP地址不与其他网络设备冲突即可。
1
|
sudo ovs-vsctl add-port br-ex ex-inspector |
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-conductor在同一个节点,也可以不同,本文选择安装ironic-inspector服务于裸金属服务管理节点。
本小节内容除了1~3在控制节点进行,其他步骤在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数据库的密码。
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”。
1
|
sudo yum install python-ironic-inspector-client |
1
|
sudo yum install openstack-ironic-inspector python-ironic-inspector-client |
vi /etc/ironic-inspector/inspector.conf
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 |
参数 |
说明 |
---|---|
add_ports = pxe |
用于发现网卡。all表示添加所有网卡,pxe表示只添加pxe启动的那块网卡。 |
keep_ports = present |
用于决定保留哪些网卡。all表示保留所有添加的网卡,present表示只保留当前使用的网卡。 |
若ironic-inspector服务未安装在ironic服务节点,则需参见修改ironic配置文件完成tftp服务器安装与配置。
1
|
sudo mkdir -p /tftpboot/inspector |
1
|
cd /tftpboot/inspector |
1 2 |
cp /tftpboot/*.efi /tftpboot/inspector cp /tftpboot/pxelinux.0 /tftpboot/inspector |
arch表示体系架构,具体为x86与aarch64。
在“/tftpboot/inspector”目录完成以下操作:
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 } |
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 } |
1
|
ln -s grub-i386.cfg grub-x86_64.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 } |
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 |
编写“/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处于同一网段。
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 |
1
|
sudo systemctl restart openstack-ironic-conductor |
1 2 |
sudo chown -R ironic /tftpboot/inspector sudo chmod -R 755 /tftpboot/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服务。