在 Oracle® Solaris 中安装和配置 OpenStack (Kilo)

退出打印视图

更新时间: 2016 年 6 月
 
 

如何安装和配置 Ironic

开始之前

如果您要将 Ironic 与其余 OpenStack 组件部署在一起,请务必首先配置以下核心组件。至少,在操作 Ironic 之前必须完成 Keystone 和 Glance 配置。

同样,请确保设置 Ironic 的数据库。此过程遵循图 1 中的 3 节点参考体系结构,其中数据库安装在控制器节点上,与其余 OpenStack 数据库在一起。

  1. 创建 Ironic 数据库。
    1. 为 "Controller"(控制器)管理节点设置全局 shell 变量。
      controller# export CONTROLLER_ADMIN_NODE=controller-node

      其中 controller-node 可以为控制器的 IP 地址或主机名。有关设置变量的更多信息,请参见准备主机名、变量和口令

    2. 使用以下命令创建数据库:
      controller# mysql -u root -p
      Enter password: MySQL-root-password
      mysql> create database ironic default character set utf8 default collate utf8_general_ci;
      mysql> grant all privileges on ironic.* to 'ironic'@'$CONTROLLER_ADMIN_NODE' identified by 'service-password';
      mysql> flush privileges;
      mysql> quit
  2. 安装 OpenStack Ironic 软件包。
    # pkg install ironic ironicclient rabbitmq
    # pkg update stevedore stevedore-27
  3. 安装 AI 服务器和管理工具。

    无论您是在本地随 Ironic 安装 AI 服务器软件包还是在另一主机上远程安装,请使用相同的命令。

    # pkg install pkg:/install/installadm
  4. 如果 AI 位于远程,请在该服务器上配置 Ironic 用户。
    remote-AI# useradd -d /var/lib/ironic -m -g 88 -u 88 \
       -P "Install Service Management" ironic
    remote-AI# passwd ironic
    New Password: password
    Re-enter new Password: password
    

    注 -  如果 AI 是随 Ironic 在本地安装的,则 Ironic 安装过程会自动在系统上创建 ironic 用户。
  5. 为 Ironic 用户创建和管理 SSH 密钥。
    • 如果 AI 随 Ironic 一起位于本地,请在该系统上发出以下命令:
      ironic-localhost# su - ironic
      ironic-localhost# mkdir /var/lib/ironic/.ssh
      ironic-localhost# ssh-keygen -N '' -t rsa \
         -f /var/lib/ironic/.ssh/id_rsa
      ironic-localhost# cat /var/lib/ironic/.ssh/id_rsa.pub > \
         /var/lib/ironic/.ssh/authorized_keys
    • 如果 AI 位于远程,请执行以下步骤:
      1. 在远程 AI 服务器上,发出以下命令:
        remote-AI# su - ironic
        remote-AI# mkdir /var/lib/ironic/.ssh
        remote-AI# ssh-keygen -N '' -t rsa \
           -f /var/lib/ironic/.ssh/id_rsa
        remote-AI# cat /var/lib/ironic/.ssh/id_rsa.pub > \
           /var/lib/ironic/.ssh/authorized_keys
      2. 在 Ironic 主机上,发出以下命令:
        ironic-localhost# mkdir /var/lib/ironic/.ssh
        ironic-localhost# scp ironic@AI-server:~/.ssh/id_rsa /var/lib/ironic/.ssh
        ironic-localhost# scp ironic@AI-server:~/.ssh/id_rsa.pub /var/lib/ironic/.ssh
        ironic-localhost# cat /var/lib/ironic/.ssh/id_rsa.pub > \
           /var/lib/ironic/.ssh/authorized_keys
        ironic-localhost# chown -R ironic:ironic /var/lib/ironic/.ssh

        其中,AI-server 可以是 AI 服务器的 IP 地址或主机名。

  6. 编辑 /etc/ironic/ironic.conf 文件。

    注意有关在该文件中配置特定参数的以下注意事项:

    auth_strategy

    如果要将 Ironic 用作独立组件,请在 DEFAULT 部分下指定 noauth。如果要将 Ironic 与其他 OpenStack 组件一起部署,请指定 keystone

    server

    如果自动安装程序 (Automated Installer, AI) 随 Ironic 位于本地,请在 ai 部分下指定 localhost。如果 AI 位于远程,则指定该服务器的 IP 地址或主机名。

    connection

    [database] 部分下,指定与 MySQL 数据库的连接。

    glance_host

    如果 auth_strategy 参数设置为 keystone,请在 glance 部分下指定 Glance 服务器的 IP 地址或主机名。

    glance_api_ servers

    此外,还要在 glance 部分下指定主机名或 IP 地址及其对应的端口号,例如 192.168.0.150:9292。不要指定 localhost

    请使用以下样例文件指导您配置 Ironic 正常运行所需的所有参数。请注意,在该样例文件中,变量 glance-serverIP 表示 Glance 服务器的 IP 地址或主机名。

    [DEFAULT]
    enabled_drivers=solaris
    auth_strategy=设置取决于 Ironic 是否独立
    pybasedir = /usr/lib/python2.6/vendor-packages/ironic
    bindir = /usr/lib/ironic
    host = ironic
    
    [ai]
    server=设置取决于 AI 是本地的还是远程的
    username=ironic
    port=22
    timeout=10
    ssh_key_file=/var/lib/ironic/.ssh/id_rsa
    deploy_interval=30
    
    [api]
    port=6385
    
    [conductor]
    api_url=http://localhost:6385/
    heartbeat_timeout=60
    heartbeat_interval=60
    sync_power_state_interval=300
    check_provision_state_interval=120
    
    [database]
    connection= mysql://ironic:service-password@$CONTROLLER_ADMIN_NODE/ironic
    
    [solaris_ipmi]
    imagecache_dirname = /var/lib/ironic/images
    imagecache_lock_timeout = 60
    
    [glance]
    glance_host = glance-serverIP
    glance_port = 9292
    glance_protocol = http
    glance_api_servers = glance-serverIP:port
    auth_strategy = 对于要使用 Keystone 与 Glance 交互的 Ironic,请指定 keystone
    
    [keystone_authtoken]在 DEFAULT 下 auth_strategy = keystone 时配置
    auth_host = localhost
    auth_uri = http://$CONTROLLER_ADMIN_NODE:5000/v2.0
    identity_uri = http://$CONTROLLER_ADMIN_NODE:35357
    admin_user = ironic
    admin_password = service-password
    admin_tenant_name = tenant
    signing_dir = $state_path/keystone-signing
    
    [neutron]
    auth_strategy = 对于要使用 Keystone 与 Neutron 交互的 Ironic,请指定 keystone
    
    [oslo_messaging_rabbit]
    rabbit_host=$CONTROLLER_ADMIN_NODE
    
  7. 确保 Ironic 的 SMF 服务正在运行。
    ironic-localhost# svcs -a | grep rabbitmq
    ironic-localhost# svcs -a | grep ironic
    

    如果 Ironic 处于独立模式,您可能需要手动启用这些服务。

    ironic-localhost# svcadm enable rabbitmq
    ironic-localhost# svcadm enable ironic-db
    ironic-localhost# svcadm enable ironic-api ironic-conductor
    
  8. (u53ef选) 测试命令行实用程序。
    1. 为 Ironic 设置全局 shell 变量。
      • 如果 auth_strategy 设置为 noauth,请按如下所示设置 shell 变量:
        ironic-localhost# export OS_AUTH_TOKEN=fake-token
        ironic-localhost# export IRONIC_URL=http://localhost:6385
      • 如果 auth_strategy 设置为 keystone,请按如下所示设置 shell 变量。

        如果 Keystone 服务位于与 Ironic 不同的节点中,则对于 OS_AUTH_URL,请指定安装了 Keystone 的主机名或 IP 地址。

        ironic-localhost# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0
        ironic-localhost# export OS_PROJECT_NAME=service
        ironic-localhost# export OS_USERNAME=ironic
        ironic-localhost# export OS_PASSWORD=service-password
        ironic-localhost# export IRONIC_URL=http://localhost:6385/
    2. 发出 Ironic 命令行。
      # ironic driver-list
      +---------------------+----------------+
      | Supported driver(s) | Active host(s) |
      +---------------------+----------------+
      | solaris             | ironic         |
      +---------------------+----------------+

      当前,solaris 是 Ironic 中唯一启用并经过测试的驱动程序。不过,您可以通过将驱动程序的名称包括在 /etc/ironic/ironic.conf 文件的 [enabled_drivers] 部分下向列表中添加驱动程序。在添加驱动程序后,需要重新启动 ironic-apiironic-conductor SMF 服务。