From 382a43627e6f1b9c419749e211426b9a887409c7 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Tue, 29 Dec 2020 17:34:35 +0100 Subject: [PATCH] Mark the iSCSI deploy as deprecated in the docs Also move it to the bottom of the user guide and fix some ancient bits (more fixing required). Change-Id: I118d3385110c85cb6e5f1beacb7c5d1887bda616 --- doc/source/admin/interfaces/deploy.rst | 42 ++++---- doc/source/user/index.rst | 143 ++++++++++++------------- 2 files changed, 94 insertions(+), 91 deletions(-) diff --git a/doc/source/admin/interfaces/deploy.rst b/doc/source/admin/interfaces/deploy.rst index 151d113cbf..d7884d8163 100644 --- a/doc/source/admin/interfaces/deploy.rst +++ b/doc/source/admin/interfaces/deploy.rst @@ -6,25 +6,6 @@ A *deploy* interface plays a critical role in the provisioning process. It orchestrates the whole deployment and defines how the image gets transferred to the target disk. -.. _iscsi-deploy: - -iSCSI deploy -============ - -With ``iscsi`` deploy interface, the deploy ramdisk publishes the node's hard -drive as an iSCSI_ share. The ironic-conductor then copies the image to this -share. See :ref:`iSCSI deploy diagram ` for a detailed -explanation of how this deploy interface works. - -This interface is used by default, if enabled (see -:ref:`enable-hardware-interfaces`). You can specify it explicitly -when creating or updating a node:: - - baremetal node create --driver ipmi --deploy-interface iscsi - baremetal node set --deploy-interface iscsi - -.. _iSCSI: https://en.wikipedia.org/wiki/ISCSI - .. _direct-deploy: Direct deploy @@ -147,3 +128,26 @@ Ramdisk deploy The ramdisk interface is intended to provide a mechanism to "deploy" an instance where the item to be deployed is in reality a ramdisk. It is documented separately, see :doc:`/admin/ramdisk-boot`. + +.. _iscsi-deploy: + +iSCSI deploy +============ + +.. warning:: + This deploy interface is deprecated and will be removed in the Xena release + cycle. Please use `direct deploy`_ instead. + +With ``iscsi`` deploy interface, the deploy ramdisk publishes the node's hard +drive as an iSCSI_ share. The ironic-conductor then copies the image to this +share. See :ref:`iSCSI deploy diagram ` for a detailed +explanation of how this deploy interface works. + +This interface is used by default, if enabled (see +:ref:`enable-hardware-interfaces`). You can specify it explicitly +when creating or updating a node:: + + baremetal node create --driver ipmi --deploy-interface iscsi + baremetal node set --deploy-interface iscsi + +.. _iSCSI: https://en.wikipedia.org/wiki/ISCSI diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst index 3d1b1a46ce..c6884558cf 100644 --- a/doc/source/user/index.rst +++ b/doc/source/user/index.rst @@ -119,15 +119,15 @@ These pre-requisites must be met before the deployment process: - user-image-vmlinuz - user-image-initrd -* Hardware to be enrolled via Ironic RESTful API service. +* Hardware to be enrolled via the bare metal API service. Deploy Process -------------- -This describes a typical ironic node deployment using PXE and the Ironic -Python Agent (IPA). Depending on the ironic driver interfaces used, some of the -steps might be marginally different, however the majority of them will remain -the same. +This describes a typical bare metal node deployment within OpenStack using PXE +to boot the ramdisk. Depending on the ironic driver interfaces used, some of +the steps might be marginally different, however the majority of them will +remain the same. #. A boot instance request comes in via the Nova API, through the message queue to the Nova scheduler. @@ -178,19 +178,18 @@ the same. #. The ironic node's management interface issues commands to enable network boot of a node. -#. The ironic node's deploy interface caches the instance image (in case of - ``iscsi`` deploy interface), and kernel and ramdisk if needed (it is - needed in case of netboot for example). +#. The ironic node's deploy interface caches the instance image, kernel and + ramdisk if needed (it is needed in case of netboot for example). #. The ironic node's power interface instructs the node to power on. #. The node boots the deploy ramdisk. -#. Depending on the exact driver used, either the conductor copies the image - over iSCSI to the physical node (:ref:`iscsi-deploy`) or the deploy ramdisk - downloads the image from a temporary URL (:ref:`direct-deploy`). - The temporary URL can be generated by Swift API-compatible object stores, - for example Swift itself or RadosGW. +#. Depending on the exact driver used, the deploy ramdisk downloads the image + from a URL (:ref:`direct-deploy`) or the conductor uses SSH to execute + commands (:ref:`ansible-deploy`). The URL can be generated by Swift + API-compatible object stores, for example Swift itself or RadosGW, or + provided by a user. The image deployment is done. @@ -259,67 +258,9 @@ The following two examples describe what ironic is doing in more detail, leaving out the actions performed by nova and some of the more advanced options. -.. _iscsi-deploy-example: - -Example 1: PXE Boot and iSCSI Deploy Process --------------------------------------------- - -This process is how :ref:`iscsi-deploy` works. - -.. seqdiag:: - :scale: 75 - - diagram { - Nova; API; Conductor; Neutron; HTTPStore; "TFTP/HTTPd"; Node; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Nova -> API [label = "Set instance_info\n(image_source,\nroot_gb, etc.)"]; - Nova -> API [label = "Validate power and deploy\ninterfaces"]; - Nova -> API [label = "Plug VIFs to the node"]; - Nova -> API [label = "Set provision_state,\noptionally pass configdrive"]; - API -> Conductor [label = "do_node_deploy()"]; - Conductor -> Conductor [label = "Validate power and deploy interfaces"]; - Conductor -> HTTPStore [label = "Store configdrive if configdrive_use_swift \noption is set"]; - Conductor -> Node [label = "POWER OFF"]; - Conductor -> Neutron [label = "Attach provisioning network to port(s)"]; - Conductor -> Neutron [label = "Update DHCP boot options"]; - Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ndeployment"]; - Conductor -> Node [label = "Set PXE boot device \nthrough the BMC"]; - Conductor -> Conductor [label = "Cache deploy\nkernel, ramdisk,\ninstance images"]; - Conductor -> Node [label = "REBOOT"]; - Node -> Neutron [label = "DHCP request"]; - Neutron -> Node [label = "next-server = Conductor"]; - Node -> Node [label = "Runs agent\nramdisk"]; - Node -> API [label = "lookup()"]; - API -> Node [label = "Pass UUID"]; - Node -> API [label = "Heartbeat (UUID)"]; - API -> Conductor [label = "Heartbeat"]; - Conductor -> Node [label = "Send IPA a command to expose disks via iSCSI"]; - Conductor -> Node [label = "iSCSI attach"]; - Conductor -> Node [label = "Copies user image and configdrive, if present"]; - Conductor -> Node [label = "iSCSI detach"]; - Conductor -> Conductor [label = "Delete instance\nimage from cache"]; - Conductor -> Node [label = "Install boot loader, if requested"]; - Conductor -> Neutron [label = "Update DHCP boot options"]; - Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ninstance image"]; - Conductor -> Node [label = "Set boot device either to PXE or to disk"]; - Conductor -> Node [label = "Collect ramdisk logs"]; - Conductor -> Node [label = "POWER OFF"]; - Conductor -> Neutron [label = "Detach provisioning network\nfrom port(s)"]; - Conductor -> Neutron [label = "Bind tenant port"]; - Conductor -> Node [label = "POWER ON"]; - Conductor -> Conductor [label = "Mark node as\nACTIVE"]; - } - -(From a `talk`_ and `slides`_) - .. _direct-deploy-example: -Example 2: PXE Boot and Direct Deploy Process +Example 1: PXE Boot and Direct Deploy Process --------------------------------------------- This process is how :ref:`direct-deploy` works. @@ -377,5 +318,63 @@ This process is how :ref:`direct-deploy` works. (From a `talk`_ and `slides`_) +.. _iscsi-deploy-example: + +Example 2: PXE Boot and iSCSI Deploy Process +-------------------------------------------- + +This process is how the currently deprecated :ref:`iscsi-deploy` works. + +.. seqdiag:: + :scale: 75 + + diagram { + Nova; API; Conductor; Neutron; HTTPStore; "TFTP/HTTPd"; Node; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Nova -> API [label = "Set instance_info\n(image_source,\nroot_gb, etc.)"]; + Nova -> API [label = "Validate power and deploy\ninterfaces"]; + Nova -> API [label = "Plug VIFs to the node"]; + Nova -> API [label = "Set provision_state,\noptionally pass configdrive"]; + API -> Conductor [label = "do_node_deploy()"]; + Conductor -> Conductor [label = "Validate power and deploy interfaces"]; + Conductor -> HTTPStore [label = "Store configdrive if configdrive_use_swift \noption is set"]; + Conductor -> Node [label = "POWER OFF"]; + Conductor -> Neutron [label = "Attach provisioning network to port(s)"]; + Conductor -> Neutron [label = "Update DHCP boot options"]; + Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ndeployment"]; + Conductor -> Node [label = "Set PXE boot device \nthrough the BMC"]; + Conductor -> Conductor [label = "Cache deploy\nkernel, ramdisk,\ninstance images"]; + Conductor -> Node [label = "REBOOT"]; + Node -> Neutron [label = "DHCP request"]; + Neutron -> Node [label = "next-server = Conductor"]; + Node -> Node [label = "Runs agent\nramdisk"]; + Node -> API [label = "lookup()"]; + API -> Node [label = "Pass UUID"]; + Node -> API [label = "Heartbeat (UUID)"]; + API -> Conductor [label = "Heartbeat"]; + Conductor -> Node [label = "Send IPA a command to expose disks via iSCSI"]; + Conductor -> Node [label = "iSCSI attach"]; + Conductor -> Node [label = "Copies user image and configdrive, if present"]; + Conductor -> Node [label = "iSCSI detach"]; + Conductor -> Conductor [label = "Delete instance\nimage from cache"]; + Conductor -> Node [label = "Install boot loader, if requested"]; + Conductor -> Neutron [label = "Update DHCP boot options"]; + Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ninstance image"]; + Conductor -> Node [label = "Set boot device either to PXE or to disk"]; + Conductor -> Node [label = "Collect ramdisk logs"]; + Conductor -> Node [label = "POWER OFF"]; + Conductor -> Neutron [label = "Detach provisioning network\nfrom port(s)"]; + Conductor -> Neutron [label = "Bind tenant port"]; + Conductor -> Node [label = "POWER ON"]; + Conductor -> Conductor [label = "Mark node as\nACTIVE"]; + } + +(From a `talk`_ and `slides`_) + .. _talk: https://www.openstack.org/summit/vancouver-2015/summit-videos/presentation/isn-and-039t-it-ironic-the-bare-metal-cloud .. _slides: http://www.slideshare.net/devananda1/isnt-it-ironic-managing-a-bare-metal-cloud-osl-tes-2015