From 41af7d6b741a5a24e2cd212ab543b0b5be105551 Mon Sep 17 00:00:00 2001 From: Sandhya Balakrishnan Date: Thu, 27 Mar 2014 16:12:28 +0530 Subject: [PATCH] Add Ironic User Guide Add a User guide, Initial chapters to cover introduction, architecture diagrams, terminology for Ironic service. Change-Id: I08faac6204aa412e330362133eb14241f3c21b34 --- doc/source/deploy/userguide.rst | 110 ++++++++++++++++++ doc/source/images/conceptual_architecture.gif | Bin 0 -> 32185 bytes doc/source/images/logical_architecture.gif | Bin 0 -> 22520 bytes doc/source/index.rst | 11 ++ 4 files changed, 121 insertions(+) create mode 100644 doc/source/deploy/userguide.rst create mode 100644 doc/source/images/conceptual_architecture.gif create mode 100644 doc/source/images/logical_architecture.gif diff --git a/doc/source/deploy/userguide.rst b/doc/source/deploy/userguide.rst new file mode 100644 index 0000000000..9a03ef650d --- /dev/null +++ b/doc/source/deploy/userguide.rst @@ -0,0 +1,110 @@ + +======================= +Introduction to Ironic +======================= +| + Ironic is an OpenStack project which provisions physical hardware as opposed to virtual machines. + Ironic provides several reference drivers which leverage common technologies like PXE and IPMI, to + cover a wide range of hardware. Ironic's pluggable driver architecture also allows vendor-specific + drivers to be added for improved performance or functionality not provided by reference drivers. +| + If one thinks of traditional hypervisor functionality (e.g., creating a VM, enumerating virtual devices, managing + the power state, loading an OS onto the VM, and so on), then Ironic may be thought of as a hypervisor API gluing + together multiple drivers, each of which implement some portion of that functionality with respect to physical hardware. +| +| + Openstack's Ironic project makes physical servers as easy to provision as virtual machines in cloud, which in turn will + open up new avenues for enterprises and service providers. +| + Ironic's driver will replace the Nova "bare metal" driver of Grizzly, Havana and Icehouse releases. It is targeting inclusion + in the OpenStack Juno release. See https://wiki.openstack.org/wiki/Baremetal for more information. +| +| +Why Provision Bare Metal +========================== +| + Here are a few use-cases for bare metal (physical server) provisioning in cloud; there are doubtless many more interesting ones. +| +| + High-performance computing clusters +| + Computing tasks that require access to hardware devices which can't be virtualized +| + Database hosting (some databases run poorly in a hypervisor) +| + Single tenant, dedicated hardware for performance, security, dependability and other regulatory requirements +| + Or, rapidly deploying a cloud infrastructure +| +| +Conceptual Architecture +======================== +| + The following diagram shows the relationships and how all services come into play during the provisioning of a + physical server. +| +.. figure:: ../images/conceptual_architecture.gif + :alt: ConceptualArchitecture +| +| +Logical Architecture +===================== +| + The Ironic service is composed of the following components, +| +| + A RESTful API service, by which operators and other services may interact with the managed bare metal servers. +| +| + A Conductor service, which does the bulk of the work. Functionality is exposed via the API service. + The Conductor and API services communicate via RPC. +| +| + A Message Queue +| +| + A Database for storing the state of the Conductor and Drivers. +| +| + +.. figure:: ../images/logical_architecture.gif + :alt: Logical Architecture +| +| +Key Technologies for Bare Metal Hosting +=========================================== +| +PXE +----- +| +Preboot Execution Environment (PXE) is part of the Wired for Management (WfM) specification developed by Intel and Microsoft. +The PXE enables system's BIOS and network interface card (NIC) to bootstrap a computer from the network in place of a disk. Bootstrapping is the process by which a system loads the OS into local memory so that it can be executed by the processor. +This capability of allowing a system to boot over a network simplifies server deployment and server management for administrators. + +| +DHCP +------ +| +Dynamic Host Configuration Protocol (DHCP) is a standardized networking protocol used on Internet Protocol (IP) networks for dynamically distributing network configuration parameters, such as IP addresses for interfaces and services. +Using PXE, the BIOS uses DHCP to obtain an IP address for the network interface and to locate the server that stores the network bootstrap program (NBP). + +| +NBP +------ +| +Network Bootstrap Program (NBP) is equivalent to GRUB (GRand Unified Bootloader) or LILO (LInux LOader) - loaders which are traditionally used in local booting. Like the boot program in a hard drive environment, the NBP is responsible for loading the OS kernel into memory so that the OS can be bootstrapped over a network. + +| +TFTP +------ +| + Trivial File Transfer Protocol (TFTP) is a simple file transfer protocol that is generally used for automated transfer of configuration or boot files between machines in a local environment. +In a PXE environment, TFTP is used to download NBP over the network using information from the DHCP server. + +| +IPMI +------ +| +Intelligent Platform Management Interface (IPMI) is a standardized computer system interface used by system administrators for out-of-band management of computer systems and monitoring of their operation. +It is a method to manage systems that may be unresponsive or powered off by using only a network connection to the hardware rather than to an operating system. + diff --git a/doc/source/images/conceptual_architecture.gif b/doc/source/images/conceptual_architecture.gif new file mode 100644 index 0000000000000000000000000000000000000000..dd75e79a39002138b47a9efa7c19bf7d9a2f4d61 GIT binary patch literal 32185 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 literal 0 HcmV?d00001 diff --git a/doc/source/images/logical_architecture.gif b/doc/source/images/logical_architecture.gif new file mode 100644 index 0000000000000000000000000000000000000000..40d6679e6b12478effccd86e7225bb12f251dd03 GIT binary patch literal 22520 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 F06V;8eft0a literal 0 HcmV?d00001 diff --git a/doc/source/index.rst b/doc/source/index.rst index 4d6ecc95d7..2164ca8243 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -76,6 +76,17 @@ Python API Quick Reference dev/drivers dev/conductor +Admin Guide +======================= + +Overview +---------- + +.. toctree:: + :maxdepth: 1 + + deploy/userguide + Indices and tables ==================