|
|
(48 intermediate revisions by 13 users not shown) |
Line 1: |
Line 1: |
− | __NOTOC__
| |
− | * '''Launchpad Entry''': [[NovaSpec]]:general-bare-metal-provisioning-framework
| |
− | * '''Created''': [https://launchpad.net/~mkkang Mikyung Kang]
| |
− | * '''Maintained''':[https://launchpad.net/~mkkang Mikyung Kang] [https://launchpad.net/~dkang David Kang] [https://launchpad.net/~50barca Ken Igarashi] [https://launchpad.net/~arata776 Arata Notsu] [https://launchpad.net/~devananda Devananda van der Veen]
| |
− | * '''Contributors''':
| |
− | ** [ [https://launchpad.net/~USC-ISI USC/ISI] ] Mikyung Kang <mkkang@isi.edu>, David Kang <dkang@isi.edu>
| |
− | ** [NTT DOCOMO] Ken Igarashi <igarashik@nttdocomo.co.jp>
| |
− | ** [[VirtualTech|Japan Inc.]] Arata Notsu <notsu@virtualtech.jp>
| |
− | ** [HP] Devananda van der Veen <devananda.vdv@gmail.com>
| |
− | * '''Mailing List''':
| |
− | ** Discussion is on the openstack-dev email list.
| |
− | ** Following convention, we use both [nova] and [baremetal] tags in the Subject line
| |
− | ** http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
| |
− | * '''Bug listing'''
| |
− | ** Use the "baremetal" tag when filing bugs in Launchpad
| |
− | ** https://bugs.launchpad.net/nova/+bugs?field.tag=baremetal
| |
− | * '''Old content''':
| |
− | ** See [[/Historical]]
| |
| | | |
− | <<[[TableOfContents]]()>> | + | <big> |
| | | |
− | == Summary ==
| + | The Nova "baremetal" driver was deprecated in the Juno release, and has been deleted from Nova. |
| | | |
− | This blueprint proposes to support general bare-metal provisioning framework in [[OpenStack]].
| + | Please see [[Ironic]] for all current work on the Bare Metal Provisioning program within OpenStack. |
| | | |
− | The target release for this is Grizzly. USC/ISI, NTT docomo, and HP are working on bare-metal driver which implements the following:
| + | </big> |
− | | |
− | * Deploy machine images onto bare metal using PXE and iSCSI
| |
− | * Control machine power using IPMI
| |
− | * Support common architectures (x86_64, i686)
| |
− | * Integration with Quantum for both openflow and non-openflow network environments
| |
− | | |
− | Future plans include:
| |
− | * Support non-PXE image deployment
| |
− | * Support other architectures (arm, tilepro)
| |
− | * Support fault-tolerance of bare-metal nova-compute node
| |
− | | |
− | == Team Branches ==
| |
− | | |
− | The USC/ISI team has a branch here (general bare-metal provisioning framework and non-PXE support):
| |
− | * https://github.com/usc-isi/hpc-trunk-essex (stable/essex)
| |
− | * https://github.com/usc-isi/nova (folsom)
| |
− | * [[HeterogeneousTileraSupport]]
| |
− | | |
− | NTT docomo has a branch here (PXE support and additional bare-metal features):
| |
− | * Working branch: https://github.com/NTTdocomo-openstack/nova (master branch)
| |
− | | |
− | HP "TripleO" team has several branches here:
| |
− | * https://github.com/tripleo/nova/tree/baremetal-dev
| |
− | * https://github.com/tripleo/devstack/tree/baremetal-dev
| |
− | | |
− | == Etherpads ==
| |
− | | |
− | Here is a list of etherpads from past summit discussions:
| |
− | * http://etherpad.openstack.org/GrizzlyBareMetalCloud
| |
− | * http://etherpad.openstack.org/FolsomBareMetalCloud
| |
− | | |
− | == Devstack ==
| |
− | | |
− | Support for running baremetal has been added to devstack, and continues to be updated as new baremetal capabilities land in nova.
| |
− | | |
− | Devstack can be used for simulating a baremetal environment on a single host. Detailed instructions for this are available at https://github.com/tripleo/incubator/blob/master/notes.md
| |
− | | |
− | Devstack can also be used with the baremetal driver to control physical hardware.
| |
− | | |
− | == Overview ==
| |
− | | |
− | /!\ NOTE /!\ This section is out of date and needs to be updated based on code which has landed in Grizzly trunk. -Devananda, 2013-01-18
| |
− | | |
− | [[Image:GeneralBareMetalProvisioningFramework$bm1.png]]
| |
− | | |
− | 1) A user requests a baremetal instance.
| |
− | | |
− | * Non-PXE (Tilera):
| |
− |
| |
− | <pre><nowiki>
| |
− | euca-run-instances -t tp64.8x8 -k my.key ami-CCC
| |
− | </nowiki></pre>
| |
− | | |
− | * PXE
| |
− |
| |
− | <pre><nowiki>
| |
− | euca-run-instances -t baremetal.small --kernel aki-AAA --ramdisk ari-BBB ami-CCC
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | 2) nova-scheduler selects a baremetal nova-compute with the following configuration.
| |
− | | |
− | [[Image:GeneralBareMetalProvisioningFramework$bm2.png]]
| |
− | | |
− | * Here we assume that:
| |
− |
| |
− | <pre><nowiki>
| |
− | $IP
| |
− | MySQL for baremetal DB runs at the machine whose IP address is $IP(127.0.0.1). It must be changed if a different IP address is used.
| |
− | | |
− | $ID
| |
− | $ID should be replaced by MySQL user id
| |
− | | |
− | $Password
| |
− | $Password should be replaced by MySQL password
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * Non-PXE (Tilera) [nova.conf]:
| |
− |
| |
− | <pre><nowiki>
| |
− | baremetal_sql_connection=mysql://$ID:$Password@$IP/nova_bm
| |
− | compute_driver=nova.virt.baremetal.driver.BareMetalDriver
| |
− | baremetal_driver=nova.virt.baremetal.tilera.TILERA
| |
− | power_manager=nova.virt.baremetal.tilera_pdu.Pdu
| |
− | instance_type_extra_specs=cpu_arch:tilepro64
| |
− | baremetal_tftp_root = /tftpboot
| |
− | scheduler_host_manager=nova.scheduler.baremetal_host_manager.BaremetalHostManager
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * PXE [nova.conf]:
| |
− |
| |
− | <pre><nowiki>
| |
− | baremetal_sql_connection=mysql://$ID:$Password@$IP/nova_bm
| |
− | compute_driver=nova.virt.baremetal.driver.BareMetalDriver
| |
− | baremetal_driver=nova.virt.baremetal.pxe.PXE
| |
− | power_manager=nova.virt.baremetal.ipmi.Ipmi
| |
− | instance_type_extra_specs=cpu_arch:x86_64
| |
− | baremetal_tftp_root = /tftpboot
| |
− | scheduler_host_manager=nova.scheduler.baremetal_host_manager.BaremetalHostManager
| |
− | baremetal_deploy_kernel = xxxxxxxxxx
| |
− | baremetal_deploy_ramdisk = yyyyyyyy
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * [[Image:GeneralBareMetalProvisioningFramework$bm3.png]]
| |
− | | |
− | 3) The bare-metal nova-compute selects a bare-metal node from its pool based on hardware resources and the instance type (# of cpus, memory, HDDs).
| |
− | | |
− | 4) Deployment images and configuration are prepared.
| |
− | | |
− | * Non-PXE (Tilera):
| |
− | ** The key injected file system is prepared and then NFS directory is configured for the bare-metal nodes. The kernel is already put to CF(Compact Flash Memory) of each tilera board and the ramdisk is not used for the tilera bare-metal nodes. For NFS mounting, /tftpboot/fs_x (x=node_id) should be set before launching instances.
| |
− | * PXE:
| |
− | ** kernel and ramdisk for the deployment, and the user specified kernel and ramdisk are put to TFTP server. PXE are configured for the baremetal host.
| |
− | | |
− | 5) The baremetal nova-compute powers on the baremetal node thorough
| |
− | | |
− | * Non-PXE (Tilera): PDU(Power Distribution Unit)
| |
− | * PXE: IPMI
| |
− | | |
− | 6) The image is deployed to bare-metal node.
| |
− | | |
− | * Non-PXE (Tilera): The images are deployed to bare-metal nodes. nova-compute mounts AMI into NFS directory based on the id of the selected tilera bare-metal node.
| |
− | * PXE: The host uses the deployment kernel and ramdisk, and the baremetal nova-copute writes AMI to the host's local disk via iSCSI.
| |
− | | |
− | 7) Bare-metal node is booted.
| |
− | | |
− | * Non-PXE (Tilera):
| |
− | ** The bare-metal node is configured for network, ssh, and iptables rule.
| |
− | ** Done.
| |
− | ** [[Image:GeneralBareMetalProvisioningFramework$bm4.png]]
| |
− | * PXE:
| |
− | ** The host is rebooted.
| |
− | ** Next, the host is booted up by the user specified kernel, ramdisk and its local disk.
| |
− | ** Done.
| |
− | ** [[Image:GeneralBareMetalProvisioningFramework$bm5.png]]
| |
− | | |
− | == Packages A: Non-PXE (Tilera) ==
| |
− | | |
− | * This procedure is for RHEL. Reading 'tilera-bm-instance-creation.txt' may make this document easy to understand.
| |
− | * TFTP, NFS, EXPECT, and Telnet installation:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ yum install nfs-utils.x86_64 expect.x86_64 tftp-server.x86_64 telnet
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * TFTP configuration:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ cat /etc/xinetd.d/tftp
| |
− | # default: off
| |
− | # description: The tftp server serves files using the trivial file transfer \
| |
− | # protocol. The tftp protocol is often used to boot diskless \
| |
− | # workstations, download configuration files to network-aware printers,
| |
− | # \
| |
− | # and to start the installation process for some operating systems.
| |
− | service tftp
| |
− | {
| |
− | socket_type = dgram
| |
− | protocol = udp
| |
− | wait = yes
| |
− | user = root
| |
− | server = /usr/sbin/in.tftpd
| |
− | server_args = -s /tftpboot
| |
− | disable = no
| |
− | per_source = 11
| |
− | cps = 100 2
| |
− | flags = IPv4
| |
− | }
| |
− | $ /etc/init.d/xinetd restart
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * NFS configuration:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ mkdir /tftpboot
| |
− | $ mkdir /tftpboot/fs_x (x: the id of tilera board)
| |
− | $ cat /etc/exports
| |
− | /tftpboot/fs_0 tilera0-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_1 tilera1-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_2 tilera2-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_3 tilera3-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_4 tilera4-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_5 tilera5-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_6 tilera6-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_7 tilera7-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_8 tilera8-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | /tftpboot/fs_9 tilera9-eth0(sync,rw,no_root_squash,no_all_squash,no_subtree_check)
| |
− | $ sudo /etc/init.d/nfs restart
| |
− | $ sudo /usr/sbin/exportfs
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * TileraMDE install: TileraMDE-3.0.1.125620:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ cd /usr/local/
| |
− | $ tar -xvf tileramde-3.0.1.125620_tilepro.tar
| |
− | $ tar -xjvf tileramde-3.0.1.125620_tilepro_apps.tar.bz2
| |
− | $ tar -xjvf tileramde-3.0.1.125620_tilepro_src.tar.bz2
| |
− | $ mkdir /usr/local/TileraMDE-3.0.1.125620/tilepro/tile
| |
− | $ cd /usr/local/TileraMDE-3.0.1.125620/tilepro/tile/
| |
− | $ tar -xjvf tileramde-3.0.1.125620_tilepro_tile.tar.bz2
| |
− | $ ln -s /usr/local/TileraMDE-3.0.1.125620/tilepro/ /usr/local/TileraMDE
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * Installation for 32-bit libraries to execute TileraMDE:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ yum install glibc.i686 glibc-devel.i686
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | == Packages B: PXE ==
| |
− | | |
− | * This procedure is for Ubuntu 12.04 x86_64. Reading 'baremetal-instance-creation.txt' may make this document easy to understand.
| |
− | * dnsmasq (PXE server for baremetal hosts)
| |
− | * syslinux (bootloader for PXE)
| |
− | * ipmitool (operate IPMI)
| |
− | * qemu-kvm (only for qemu-img)
| |
− | * open-iscsi (connect to iSCSI target at berametal hosts)
| |
− | * busybox (used in deployment ramdisk)
| |
− | * tgt (used in deployment ramdisk)
| |
− | * Example:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ sudo apt-get install dnsmasq syslinux ipmitool qemu-kvm open-iscsi
| |
− | $ sudo apt-get install busybox tgt
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * Ramdisk for Deployment
| |
− | * To create a deployment ramdisk, use 'baremetal-mkinitrd.sh' in [baremetal-initrd-builder](https://github.com/NTTdocomo-openstack/baremetal-initrd-builder):
| |
− |
| |
− | <pre><nowiki>
| |
− | $ cd baremetal-initrd-builder
| |
− | $ ./baremetal-mkinitrd.sh <ramdisk output path> <kernel version>
| |
− | </nowiki></pre>
| |
− | | |
− |
| |
− | <pre><nowiki>
| |
− | $ ./baremetal-mkinitrd.sh /tmp/deploy-ramdisk.img 3.2.0-26-generic
| |
− | working in /tmp/baremetal-mkinitrd.9AciX98N
| |
− | 368017 blocks
| |
− | Register the kernel and the ramdisk to Glance.
| |
− | </nowiki></pre>
| |
− | | |
− |
| |
− | <pre><nowiki>
| |
− | $ glance add name="baremetal deployment ramdisk" is_public=true container_format=ari disk_format=ari < /tmp/deploy-ramdisk.img
| |
− | Uploading image 'baremetal deployment ramdisk'
| |
− | ===========================================[100%] 114.951697M/s, ETA 0h 0m 0s
| |
− | Added new image with ID: e99775cb-f78d-401e-9d14-acd86e2f36e3
| |
− |
| |
− | $ glance add name="baremetal deployment kernel" is_public=true container_format=aki disk_format=aki < /boot/vmlinuz-3.2.0-26-generic
| |
− | Uploading image 'baremetal deployment kernel'
| |
− | ===========================================[100%] 46.9M/s, ETA 0h 0m 0s
| |
− | Added new image with ID: d76012fc-4055-485c-a978-f748679b89a9
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * ShellInABox
| |
− | * Baremetal nova-compute uses [ShellInABox](http://code.google.com/p/shellinabox/) so that users can access baremetal host's console through web browsers.
| |
− | * Build from source and install:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ sudo apt-get install gcc make
| |
− | $ tar xzf shellinabox-2.14.tar.gz
| |
− | $ cd shellinabox-2.14
| |
− | $ ./configure
| |
− | $ sudo make install
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * PXE Boot Server
| |
− | * Prepare TFTP root directory:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ sudo mkdir /tftpboot
| |
− | $ sudo cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
| |
− | $ sudo mkdir /tftpboot/pxelinux.cfg
| |
− | </nowiki></pre>
| |
− | | |
− | * Start dnsmasq. Example: start dnsmasq on eth1 with PXE and TFTP enabled:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ sudo dnsmasq --conf-file= --port=0 --enable-tftp --tftp-root=/tftpboot --dhcp-boot=pxelinux.0 --bind-interfaces --pid-file=/dnsmasq.pid --interface=eth1 --dhcp-range=192.168.175.100,192.168.175.254
| |
− |
| |
− | (You may need to stop and disable dnsmasq)
| |
− | $ sudo /etc/init.d/dnsmasq stop
| |
− | $ sudo sudo update-rc.d dnsmasq disable
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * How to create an image:
| |
− | * Example: create a partition image from ubuntu cloud images' Precise tarball:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-root.tar.gz
| |
− | $ dd if=/dev/zero of=precise.img bs=1M count=0 seek=1024
| |
− | $ mkfs -F -t ext4 precise.img
| |
− | $ sudo mount -o loop precise.img /mnt/
| |
− | $ sudo tar -C /mnt -xzf ~/precise-server-cloudimg-amd64-root.tar.gz
| |
− | $ sudo mv /mnt/etc/resolv.conf /mnt/etc/resolv.conf_orig
| |
− | $ sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
| |
− | $ sudo chroot /mnt apt-get install linux-image-3.2.0-26-generic vlan open-iscsi
| |
− | $ sudo mv /mnt/etc/resolv.conf_orig /mnt/etc/resolv.conf
| |
− | $ sudo umount /mnt
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | == Nova Directories ==
| |
− | | |
− | <pre><nowiki>
| |
− | $ sudo mkdir /var/lib/nova/baremetal
| |
− | $ sudo mkdir /var/lib/nova/baremetal/console
| |
− | $ sudo mkdir /var/lib/nova/baremetal/dnsmasq
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | == Baremetal Database ==
| |
− | | |
− | * Create the baremetal database. Grant all provileges to the user specified by the 'baremetal_sql_connection' flag. Example:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ mysql -p
| |
− | mysql> create database nova_bm;
| |
− | mysql> grant all privileges on nova_bm.* to '$ID'@'%' identified by '$Password';
| |
− | mysql> exit
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * Create tables:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ bm_db_sync
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | == Create Baremetal Instance Type ==
| |
− | | |
− | * First, create an instance type in the normal way.
| |
− |
| |
− | <pre><nowiki>
| |
− | $ nova-manage instance_type create --name=tp64.8x8 --cpu=64 --memory=16218 --root_gb=917 --ephemeral_gb=0 --flavor=6 --swap=1024 --rxtx_factor=1
| |
− | $ nova-manage instance_type create --name=bm.small --cpu=2 --memory=4096 --root_gb=10 --ephemeral_gb=20 --flavor=7 --swap=1024 --rxtx_factor=1
| |
− | (about --flavor, see 'How to choose the value for flavor' section below)
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * Next, set baremetal extra_spec to the instance type:
| |
− |
| |
− | <pre><nowiki>
| |
− | $ nova-manage instance_type set_key --name=tp64.8x8 --key cpu_arch --value 'tilepro64'
| |
− | $ nova-manage instance_type set_key --name=bm.small --key cpu_arch --value 'x86_64'
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | == How to choose the value for flavor ==
| |
− | | |
− | * Run nova-manage instance_type list, find the maximum FlavorID in output. Use the maximum FlavorID+1 for new instance_type.
| |
− |
| |
− | <pre><nowiki>
| |
− | $ nova-manage instance_type list
| |
− | m1.medium: Memory: 4096MB, VCPUS: 2, Root: 40GB, Ephemeral: 0Gb, FlavorID: 3, Swap: 0MB, RXTX Factor: 1.0, ExtraSpecs {}
| |
− | m1.small: Memory: 2048MB, VCPUS: 1, Root: 20GB, Ephemeral: 0Gb, FlavorID: 2, Swap: 0MB, RXTX Factor: 1.0, ExtraSpecs {}
| |
− | m1.large: Memory: 8192MB, VCPUS: 4, Root: 80GB, Ephemeral: 0Gb, FlavorID: 4, Swap: 0MB, RXTX Factor: 1.0, ExtraSpecs {}
| |
− | m1.tiny: Memory: 512MB, VCPUS: 1, Root: 0GB, Ephemeral: 0Gb, FlavorID: 1, Swap: 0MB, RXTX Factor: 1.0, ExtraSpecs {}
| |
− | m1.xlarge: Memory: 16384MB, VCPUS: 8, Root: 160GB, Ephemeral: 0Gb, FlavorID: 5, Swap: 0MB, RXTX Factor: 1.0, ExtraSpecs {}
| |
− | </nowiki></pre>
| |
− | | |
− | * In the example above, the maximum Flavor ID is 5, so use 6 and 7.
| |
− | | |
− | == Start Processes ==
| |
− | | |
− | <pre><nowiki>
| |
− | (Currently, you might have trouble if run processes as a user other than the superuser...)
| |
− | $ sudo bm_deploy_server &
| |
− | $ sudo nova-scheduler &
| |
− | $ sudo nova-compute &
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | == Register Baremetal Node and NIC ==
| |
− | | |
− | * First, register a baremetal node.
| |
− | * non-PXE (Tilera): Next, register the baremetal node's NICs.
| |
− | * PXE: First, register a baremetal node. In this step, one of the NICs must be specified as a PXE NIC. Ensure the NIC is PXE-enabled and the NIC is selected as a primary boot device in BIOS. Next, register all the NICs except the PXE NIC specified in the first step.
| |
− | * To register a baremetal node, use 'nova-bm-manage node create'. It takes the parameters listed below.
| |
− |
| |
− | <pre><nowiki>
| |
− | --host: baremetal nova-compute's hostname
| |
− | --cpus=: number of CPU cores
| |
− | --memory_mb: memory size in MegaBytes
| |
− | --local_gb: local disk size in GigaBytes
| |
− | --pm_address: tilera node's IP address / IPMI address
| |
− | --pm_user: IPMI username
| |
− | --pm_password: IPMI password
| |
− | --prov_mac_address: tilera node's MAC address / PXE NIC's MAC address
| |
− | --terminal_port: TCP port for ShellInABox. Each node must use unique TCP port. If you do not need console access, use 0.
| |
− | </nowiki></pre>
| |
− | | |
− |
| |
− | <pre><nowiki>
| |
− | # Tilera example
| |
− | $ nova-bm-manage node create --host=bm1 --cpus=64 --memory_mb=16218 --local_gb=917 --pm_address=10.0.2.1 --pm_user=test --pm_password=password --prov_mac_address=98:4b:e1:67:9a:4c --terminal_port=0
| |
− | # PXE/IPMI example
| |
− | $ nova-bm-manage node create --host=bm1 --cpus=4 --memory_mb=6144 --local_gb=64 --pm_address=172.27.2.116 --pm_user=test --pm_password=password --prov_mac_address=98:4b:e1:11:22:33 --terminal_port=8000
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * To verify the node registration, run 'nova-bm-manage node list':
| |
− |
| |
− | <pre><nowiki>
| |
− | $ nova-bm-manage node list
| |
− | ID SERVICE_HOST INSTANCE_ID CPUS Memory Disk PM_Address PM_User TERMINAL_PORT PROV_MAC PROV_VLAN
| |
− | 1 bm1 None 64 16218 917 10.0.2.1 test 0 98:4b:e1:67:9a:4c None
| |
− | 2 bm1 None 4 6144 64 172.27.2.116 test 8000 98:4b:e1:11:22:33 None
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * To register NIC, use 'nova-bm-manage interface create'. It takes the parameters listed below.
| |
− |
| |
− | <pre><nowiki>
| |
− | --node_id: ID of the baremetal node owns this NIC (the first column of 'bm_node_list')
| |
− | --mac_address: this NIC's MAC address in the form of xx:xx:xx:xx:xx:xx
| |
− | --datapath_id: datapath ID of OpenFlow switch this NIC is connected to
| |
− | --port_no: OpenFlow port number this NIC is connected to
| |
− | (--datapath_id and --port_no are used for network isolation. It is OK to put 0, if you do not have OpenFlow switch.)
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− |
| |
− | <pre><nowiki>
| |
− | # example: node 1, without OpenFlow
| |
− | $ nova-bm-manage interface create --node_id=1 --mac_address=98:4b:e1:67:9a:4e --datapath_id=0 --port_no=0
| |
− | # example: node 2, with OpenFlow
| |
− | $ nova-bm-manage interface create --node_id=2 --mac_address=98:4b:e1:11:22:34 --datapath_id=0x123abc --port_no=24
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | * To verify the NIC registration, run 'bm_interface_list':
| |
− |
| |
− | <pre><nowiki>
| |
− | $ bm_interface_list
| |
− | ID BM_NODE_ID MAC_ADDRESS DATAPATH_ID PORT_NO
| |
− | 1 1 98:4b:e1:67:9a:4e 0x0 0
| |
− | 2 2 98:4b:e1:11:22:34 0x123abc 24
| |
− | </nowiki></pre>
| |
− | | |
− | | |
− | == Run Instance ==
| |
− | | |
− | * Run instance using the baremetal instance type. Make sure to use kernel and image that support baremetal hardware (i.e contain drivers for baremetal hardware ).
| |
− |
| |
− | <pre><nowiki>
| |
− | euca-run-instances -t tp64.8x8 -k my.key ami-CCC
| |
− | euca-run-instances -t bm.small --kernel aki-AAA --ramdisk ari-BBB ami-CCC
| |
− | </nowiki></pre>
| |
The Nova "baremetal" driver was deprecated in the Juno release, and has been deleted from Nova.