中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

安装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. 创建网桥。
    1
    ovs-vsctl add-br br-inspector
    
  2. 连接外部网络接口。
    1
    ovs-vsctl add-port br-inspector eth
    

    将eth修改为实际网络连接的接口。

  3. 配置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. 查看当前环境网络拓扑。
    1
    ovs-vsctl show
    

    查看当前ironic管理节点网络拓扑如下:

    br-ex网桥使用存在外部连接的接口。

    不同环境的网络配置存在差异,找到有外部连接端口的网桥即可。

  2. 创建网络设备。

    使用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。

  3. 使能网络设备。
    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
    
  4. 配置br-inspector IP地址。
    1
    sudo ip addr add 172.24.66.254/24 dev br-inspector
    

    此处所配置的IP地址不与其他网络设备冲突即可。

  5. 将ex-inspector加入br-ex网桥。
    1
    sudo ovs-vsctl add-port br-ex ex-inspector
    
  6. 配置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服务节点进行。

  1. 在控制节点创建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数据库的密码。

  2. 在控制节点创建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”。

  3. 在控制节点安装ironic-inspector-client。
    1
    sudo yum install python-ironic-inspector-client
    
  4. 在inspector服务节点安装ironic-inspector。
    1
    sudo yum install openstack-ironic-inspector python-ironic-inspector-client
    
  5. 配置ironic-inspector服务。
    1. 打开“/etc/ironic-inspector/inspector.conf”文件。
      vi /etc/ironic-inspector/inspector.conf
    2. 按“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。
    3. 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
  6. 创建inspector服务tftp根目录。

    若ironic-inspector服务未安装在ironic服务节点,则需参见修改ironic配置文件完成tftp服务器安装与配置。

    1
    sudo mkdir -p /tftpboot/inspector
    
  7. 复制相关文件。
    1. 进入“/tftpboot/inspector”目录。
      1
      cd /tftpboot/inspector
      
    2. 复制相关文件至“/tftpboot/inspector”
      1
      2
      cp /tftpboot/*.efi /tftpboot/inspector
      cp /tftpboot/pxelinux.0 /tftpboot/inspector
      
    3. 将创建、上传用户镜像2~7获取的x86、aarch64架构的部署镜像内核、临时文件系统至“/tftpboot/inspector”,并将文件重名为ipa-{arch}.initramfs与ipa-{arch}.kernel。

      arch表示体系架构,具体为x86与aarch64。

  8. 创建引导配置文件。

    “/tftpboot/inspector”目录完成以下操作:

    1. 创建引导配置文件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
      }
      
    2. 创建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
      }
      
    3. 创建x86引导配置文件grub-x86_64.cfg软链接。
      1
      ln -s grub-i386.cfg grub-x86_64.cfg
      
    4. 创建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
      }
      
    5. 创建x86 Legacy启动引导配置文件。
    6. 创建目录“sudo mkdir -p /tftpboot/inspector/pxelinux.cfg”
    7. “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。
  9. 配置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处于同一网段。

  10. 配置ironic服务。
    1. “/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用户密码。

    2. 重启服务。
      1
      sudo systemctl restart openstack-ironic-conductor
      
  11. 修改目录文件的权限。
    1
    2
    sudo chown -R ironic /tftpboot/inspector
    sudo chmod -R 755  /tftpboot/inspector
    
  12. 同步ironic-inspector数据库。
    1
    ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade
    
  13. 启动服务。
    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服务。