Bug 1733273

Summary: DOC BUG: Direct Deploy without using Swift Object Storage (Swift) - Image streamed onto device
Product: Red Hat OpenStack Reporter: mlammon
Component: documentationAssignee: Dan Macpherson <dmacpher>
Status: CLOSED CURRENTRELEASE QA Contact: RHOS Documentation Team <rhos-docs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 15.0 (Stein)CC: amoralej, ccopello, dmacpher
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-04-17 20:44:15 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description mlammon 2019-07-25 14:56:46 UTC
Description of problem:
DOC BUG: Direct Deploy without using Swift Object Storage (Swift) - Image streamed onto device

Swift has been used by default to serve images when using the direct deploy method. There is now an alternative way of serving them via the existing ironic-conductor HTTP server to the agent. This will avoid dependency on Swift alone. This new feature will be able to convert images to RAW format on the conductor, then stream them to IPA, avoiding in-memory conversion. "Image streamed onto device" - This should work for both whole disk images and also partitioned images.

There needs to be documentation describing the feature and configurations
to enablement.

Reference RFE/Bugs/upstream links
https://bugzilla.redhat.com/show_bug.cgi?id=1607779
https://bugzilla.redhat.com/show_bug.cgi?id=1630964

Comment 1 mlammon 2019-08-07 20:47:38 UTC
Basically we need to include documentation which give examples on how to configure this feature to work with Ironic in UC as well as Ironic in OC

1) Ironic in UC

The openstack baremetal node direct_interface must be set to 'direct' and not iscsi


Note: using undercloud_custom_env.yaml 

(undercloud) [stack@undercloud-0 ~]$ cat undercloud.conf
[DEFAULT]
# Network interface on the Undercloud that will be handling the PXE
# boots and DHCP for Overcloud instances. (string value)
local_interface = eth0
local_ip = 192.168.24.1/24
undercloud_public_host = 192.168.24.2
undercloud_admin_host = 192.168.24.3
#TODO: use release >= 10 when RHBZ#1633193 is resolved
undercloud_ntp_servers=clock1.rdu2.redhat.com
container_images_file=/home/stack/containers-prepare-parameter.yaml
container_insecure_registries = brew-pulp-docker01.web.prod.ext.phx2.redhat.com:8888
undercloud_timezone = UTC
undercloud_service_certificate = /etc/pki/instack-certs/undercloud.pem
hieradata_override = /home/stack/hiera_override.yaml
custom_env_files = /home/stack/undercloud_custom_env.yaml
[ctlplane-subnet]
local_subnet = ctlplane-subnet
cidr = 192.168.24.0/24
dhcp_start = 192.168.24.5
dhcp_end = 192.168.24.24
gateway = 192.168.24.1
inspection_iprange = 192.168.24.100,192.168.24.120
masquerade = true
#TODO(skatlapa): add param to override masq



(undercloud) [stack@undercloud-0 ~]$ cat /home/stack/undercloud_custom_env.yaml
parameter_defaults:
   IronicDefaultDeployInterface: direct
   IronicImageDownloadSource: http


2) Ironic in OC

In this case we configure the same variable but in overcloud deployment.

IronicImageDownloadSource: http

See /home/stack/virt/ironic-custom.yaml

(undercloud) [stack@undercloud-0 ~]$ cat overcloud_deploy.sh
#!/bin/bash

openstack overcloud deploy \
--timeout 100 \
--templates /usr/share/openstack-tripleo-heat-templates \
--stack overcloud \
--libvirt-type kvm \
--ntp-server clock1.rdu2.redhat.com \
-e /home/stack/virt/config_lvm.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /home/stack/virt/network/network-environment.yaml \
-e /home/stack/virt/network/dvr-override.yaml \
-e /home/stack/virt/inject-trust-anchor.yaml \
-e /home/stack/virt/hostnames.yml \
-e /home/stack/virt/debug.yaml \
-e /home/stack/virt/nodes_data.yaml \
--environment-file /usr/share/openstack-tripleo-heat-templates/environments/services/ironic-overcloud.yaml \
-e ~/containers-prepare-parameter.yaml \
-e /home/stack/virt/ironic-custom.yaml \
--log-file overcloud_deployment_3.log

(undercloud) [stack@undercloud-0 ~]$ cat /home/stack/virt/ironic-custom.yaml
parameter_defaults:
  NeutronBridgeMappings: datacentre:br-ex,baremetal:br-baremetal
  NeutronFlatNetworks: datacentre,baremetal
  IronicCleaningNetwork: baremetal
  IronicCleaningDiskErase: metadata
  IronicIPXEEnabled: true
  IronicEnabledHardwareTypes:
      - ipmi
      - fake-hardware
  IronicEnabledBootInterfaces: [pxe, fake]
  IronicEnabledConsoleInterfaces: [ipmitool-socat, no-console, fake]
  IronicEnabledDeployInterfaces: [iscsi, direct, fake]
  IronicEnabledManagementInterfaces: [ipmitool, fake]
  IronicEnabledPowerInterfaces: [ipmitool, fake]
  IronicEnabledRaidInterfaces: [no-raid, fake]
  IronicEnabledVendorInterfaces: [ipmitool, fake, no-vendor]
  IronicEnabledInspectInterfaces: [no-inspect, inspector, fake]
  NovaSchedulerDefaultFilters:
      - RetryFilter
      - AggregateInstanceExtraSpecsFilter
      - AvailabilityZoneFilter
      - ComputeFilter
      - ComputeCapabilitiesFilter
      - ImagePropertiesFilter
  IronicImageDownloadSource: http

In both cases, verification can be completed in the ramdisk deploy logs
/var/log/container/ironic/deploy

Comment 3 Dan Macpherson 2019-09-18 16:53:46 UTC
Merged into master for OSP15.

Comment 4 Chuck Copello 2020-04-17 20:43:40 UTC
Content is updated and published on the Customer Portal.