Merge "restructure of associate training guide"
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-compute-node-concept-neutron">
|
||||
<title>Conceptual Neutron</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-compute-node-concept-nova">
|
||||
<title>Conceptual Nova</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-compute-node-install-neutron">
|
||||
<title>Install Neutron</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-compute-node-install-nova">
|
||||
<title>Install Nova</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-compute-node-lab">
|
||||
<title>Lab</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-compute-node-quiz">
|
||||
<title>Quiz</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-computer-node">
|
||||
<title>Compute Node</title>
|
||||
<xi:include href="associate-compute-node-concept-nova.xml"/>
|
||||
<xi:include href="associate-compute-node-install-nova.xml"/>
|
||||
<xi:include href="associate-compute-node-concept-neutron.xml"/>
|
||||
<xi:include href="associate-compute-node-install-neutron.xml"/>
|
||||
<xi:include href="associate-compute-node-lab.xml"/>
|
||||
<xi:include href="associate-compute-node-quiz.xml"/>
|
||||
</chapter>
|
||||
@@ -1,249 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-concept-cinder">
|
||||
<title>Conceptual Cinder</title>
|
||||
<para>OpenStack Block Storage</para>
|
||||
<para><emphasis role="bold">Block Storage and OpenStack
|
||||
Compute</emphasis></para>
|
||||
<para>OpenStack provides two classes of block storage, "ephemeral"
|
||||
storage and persistent "volumes". Ephemeral storage exists only
|
||||
for the life of an instance, it will persist across reboots of the
|
||||
guest operating system but when the instance is deleted so is the
|
||||
associated storage. All instances have some ephemeral storage.
|
||||
Volumes are persistent virtualized block devices independent of
|
||||
any particular instance. Volumes may be attached to a single
|
||||
instance at a time, but may be detached or reattached to a
|
||||
different instance while retaining all data, much like a USB
|
||||
drive.</para>
|
||||
<para><guilabel>Ephemeral Storage</guilabel></para>
|
||||
<para>Ephemeral storage is associated with a single unique instance.
|
||||
Its size is defined by the flavor of the instance.</para>
|
||||
<para>Data on ephemeral storage ceases to exist when the instance it
|
||||
is associated with is terminated. Rebooting the VM or restarting
|
||||
the host server, however, will not destroy ephemeral data. In the
|
||||
typical use case an instance's root filesystem is stored on
|
||||
ephemeral storage. This is often an unpleasant surprise for people
|
||||
unfamiliar with the cloud model of computing.</para>
|
||||
<para>In addition to the ephemeral root volume all flavors except
|
||||
the smallest, m1.tiny, provide an additional ephemeral block
|
||||
device varying from 20G for the m1.small through 160G for the
|
||||
m1.xlarge by default - these sizes are configurable. This is
|
||||
presented as a raw block device with no partition table or
|
||||
filesystem. Cloud aware operating system images may discover,
|
||||
format, and mount this device. For example the cloud-init package
|
||||
included in Ubuntu's stock cloud images will format this space as
|
||||
an ext3 filesystem and mount it on /mnt. It is important to note
|
||||
this a feature of the guest operating system. OpenStack only
|
||||
provisions the raw storage.</para>
|
||||
<para><guilabel>Volume Storage</guilabel></para>
|
||||
<para>Volume storage is independent of any particular instance and
|
||||
is persistent. Volumes are user created and within quota and
|
||||
availability limits may be of any arbitrary size.</para>
|
||||
<para>When first created volumes are raw block devices with no
|
||||
partition table and no filesystem. They must be attached to an
|
||||
instance to be partitioned and/or formatted. Once this is done
|
||||
they may be used much like an external disk drive. Volumes may
|
||||
attached to only one instance at a time, but may be detached and
|
||||
reattached to either the same or different instances.</para>
|
||||
<para>It is possible to configure a volume so that it is bootable
|
||||
and provides a persistent virtual instance similar to traditional
|
||||
non-cloud based virtualization systems. In this use case the
|
||||
resulting instance may still have ephemeral storage depending on
|
||||
the flavor selected, but the root filesystem (and possibly others)
|
||||
will be on the persistent volume and thus state will be maintained
|
||||
even if the instance it shutdown. Details of this configuration
|
||||
are discussed in the<link
|
||||
xlink:href="http://docs.openstack.org/user-guide/content/"
|
||||
>OpenStack End User Guide</link>.</para>
|
||||
<para>Volumes do not provide concurrent access from multiple
|
||||
instances. For that you need either a traditional network
|
||||
filesystem like NFS or CIFS or a cluster filesystem such as
|
||||
GlusterFS. These may be built within an OpenStack cluster or
|
||||
provisioned outside of it, but are not features provided by the
|
||||
OpenStack software.</para>
|
||||
<para>The OpenStack Block Storage service works via the interaction
|
||||
of a series of daemon processes named cinder-* that reside
|
||||
persistently on the host machine or machines. The binaries can all
|
||||
be run from a single node, or spread across multiple nodes. They
|
||||
can also be run on the same node as other OpenStack
|
||||
services.</para>
|
||||
<para><guilabel>The current services available in OpenStack Block
|
||||
Storage are:</guilabel></para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">cinder-api</emphasis> - The
|
||||
cinder-api service is a WSGI app that authenticates and routes
|
||||
requests throughout the Block Storage system. It supports the
|
||||
OpenStack API's only, although there is a translation that can
|
||||
be done via Nova's EC2 interface which calls in to the
|
||||
cinderclient.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">cinder-scheduler</emphasis> - The
|
||||
cinder-scheduler is responsible for scheduling/routing
|
||||
requests to the appropriate volume service. As of Grizzly;
|
||||
depending upon your configuration this may be simple
|
||||
round-robin scheduling to the running volume services, or it
|
||||
can be more sophisticated through the use of the Filter
|
||||
Scheduler. The Filter Scheduler is the default in Grizzly and
|
||||
enables filter on things like Capacity, Availability Zone,
|
||||
Volume Types and Capabilities as well as custom
|
||||
filters.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">cinder-volume</emphasis> - The
|
||||
cinder-volume service is responsible for managing Block
|
||||
Storage devices, specifically the back-end devices
|
||||
themselves.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">cinder-backup</emphasis> - The
|
||||
cinder-backup service provides a means to back up a Cinder
|
||||
Volume to OpenStack Object Store (SWIFT).</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para><guilabel>Introduction to OpenStack Block
|
||||
Storage</guilabel></para>
|
||||
<para>OpenStack Block Storage provides persistent High Performance
|
||||
Block Storage resources that can be consumed by OpenStack Compute
|
||||
instances. This includes secondary attached storage similar to
|
||||
Amazon's Elastic Block Storage (EBS). In addition images can be
|
||||
written to a Block Storage device and specified for OpenStack
|
||||
Compute to use a bootable persistent instance.</para>
|
||||
<para>There are some differences from Amazon's EBS that one should
|
||||
be aware of. OpenStack Block Storage is not a shared storage
|
||||
solution like NFS, but currently is designed so that the device is
|
||||
attached and in use by a single instance at a time.</para>
|
||||
<para><guilabel>Backend Storage Devices</guilabel></para>
|
||||
<para>OpenStack Block Storage requires some form of back-end storage
|
||||
that the service is built on. The default implementation is to use
|
||||
LVM on a local Volume Group named "cinder-volumes". In addition to
|
||||
the base driver implementation, OpenStack Block Storage also
|
||||
provides the means to add support for other storage devices to be
|
||||
utilized such as external Raid Arrays or other Storage
|
||||
appliances.</para>
|
||||
<para><guilabel>Users and Tenants (Projects)</guilabel></para>
|
||||
<para>The OpenStack Block Storage system is designed to be used by
|
||||
many different cloud computing consumers or customers, basically
|
||||
tenants on a shared system, using role-based access assignments.
|
||||
Roles control the actions that a user is allowed to perform. In
|
||||
the default configuration, most actions do not require a
|
||||
particular role, but this is configurable by the system
|
||||
administrator editing the appropriate policy.json file that
|
||||
maintains the rules. A user's access to particular volumes is
|
||||
limited by tenant, but the username and password are assigned per
|
||||
user. Key pairs granting access to a volume are enabled per user,
|
||||
but quotas to control resource consumption across available
|
||||
hardware resources are per tenant.</para>
|
||||
<para><guilabel>For tenants, quota controls are available to limit
|
||||
the:</guilabel></para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Number of volumes which may be created</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Number of snapshots which may be created</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Total number of Giga Bytes allowed per tenant (shared
|
||||
between snapshots and volumes)</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para><guilabel>Volumes Snapshots and Backups</guilabel></para>
|
||||
<para>This introduction provides a high level overview of the two
|
||||
basic resources offered by the OpenStack Block Storage service.
|
||||
The first is Volumes and the second is Snapshots which are derived
|
||||
from Volumes.</para>
|
||||
<para><guilabel>Volumes</guilabel></para>
|
||||
<para>Volumes are allocated block storage resources that can be
|
||||
attached to instances as secondary storage or they can be used as
|
||||
the root store to boot instances. Volumes are persistent R/W Block
|
||||
Storage devices most commonly attached to the Compute node via
|
||||
iSCSI.</para>
|
||||
<para><guilabel>Snapshots</guilabel></para>
|
||||
<para>A Snapshot in OpenStack Block Storage is a read-only point in
|
||||
time copy of a Volume. The Snapshot can be created from a Volume
|
||||
that is currently in use (via the use of '--force True') or in an
|
||||
available state. The Snapshot can then be used to create a new
|
||||
volume via create from snapshot.</para>
|
||||
<para><guilabel>Backups</guilabel></para>
|
||||
<para>A Backup is an archived copy of a Volume currently stored in
|
||||
Object Storage (Swift).</para>
|
||||
<para><guilabel>Managing Volumes</guilabel></para>
|
||||
<para>Cinder is the OpenStack service that allows you to give extra
|
||||
block level storage to your OpenStack Compute instances. You may
|
||||
recognize this as a similar offering from Amazon EC2 known as
|
||||
Elastic Block Storage (EBS). The default Cinder implementation is
|
||||
an iSCSI solution that employs the use of Logical Volume Manager
|
||||
(LVM) for Linux. Note that a volume may only be attached to one
|
||||
instance at a time. This is not a ‘shared storage’ solution like a
|
||||
SAN of NFS on which multiple servers can attach to. It's also
|
||||
important to note that Cinder also includes a number of drivers to
|
||||
allow you to use a number of other vendor's back-end storage
|
||||
devices in addition to or instead of the base LVM
|
||||
implementation.</para>
|
||||
<para>Here is brief walk-through of a simple create/attach sequence,
|
||||
keep in mind this requires proper configuration of both OpenStack
|
||||
Compute via cinder.conf and OpenStack Block Storage via
|
||||
cinder.conf.</para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>The volume is created via cinder create; which creates
|
||||
an LV into the volume group (VG) "cinder-volumes"</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The volume is attached to an instance via nova
|
||||
volume-attach; which creates a unique iSCSI IQN that will be
|
||||
exposed to the compute node</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The compute node which run the concerned instance has
|
||||
now an active ISCSI session; and a new local storage
|
||||
(usually a /dev/sdX disk)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>libvirt uses that local storage as a storage for the
|
||||
instance; the instance get a new disk (usually a /dev/vdX
|
||||
disk)</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<para><guilabel>Block Storage Capabilities</guilabel></para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>OpenStack provides persistent block level storage
|
||||
devices for use with OpenStack compute instances.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The block storage system manages the creation, attaching
|
||||
and detaching of the block devices to servers. Block storage
|
||||
volumes are fully integrated into OpenStack Compute and the
|
||||
Dashboard allowing for cloud users to manage their own
|
||||
storage needs.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>In addition to using simple Linux server storage, it has
|
||||
unified storage support for numerous storage platforms
|
||||
including Ceph, NetApp, Nexenta, SolidFire, and
|
||||
Zadara.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Block storage is appropriate for performance sensitive
|
||||
scenarios such as database storage, expandable file systems,
|
||||
or providing a server with access to raw block level
|
||||
storage.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Snapshot management provides powerful functionality for
|
||||
backing up data stored on block storage volumes. Snapshots
|
||||
can be restored or used to create a new block storage
|
||||
volume.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-concept-glance">
|
||||
<title>Conceptual Glance</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,172 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-concept-keystone">
|
||||
<title>Conceptual Keystone</title>
|
||||
<para>More Content To be Added ...</para>
|
||||
<para><guilabel>Identity Service Concepts</guilabel></para>
|
||||
<para>The Identity service performs the following
|
||||
functions:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>User management. Tracks users and their
|
||||
permissions.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Service catalog. Provides a catalog of available
|
||||
services with their API endpoints.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>To understand the Identity Service, you must understand the
|
||||
following concepts:</para>
|
||||
<para><guilabel>User</guilabel></para>
|
||||
<para>Digital representation of a person, system, or service who
|
||||
uses OpenStack cloud services. Identity authentication
|
||||
services will validate that incoming request are being made by
|
||||
the user who claims to be making the call. Users have a login
|
||||
and may be assigned tokens to access resources. Users may be
|
||||
directly assigned to a particular tenant and behave as if they
|
||||
are contained in that tenant.</para>
|
||||
<para><guilabel><anchor xml:id="h.i1npk4aiu35hs"/>Credentials</guilabel></para>
|
||||
<para>Data that is known only by a user that proves who they
|
||||
are. In the Identity Service, examples are:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Username and password</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Username and API key</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>An authentication token provided by the Identity
|
||||
Service</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para><guilabel><anchor xml:id="h.aa29gdlbf7qas"/>Authentication</guilabel></para>
|
||||
<para>The act of confirming the identity of a user. The Identity
|
||||
Service confirms an incoming request by validating a set of
|
||||
credentials supplied by the user. These credentials are
|
||||
initially a username and password or a username and API key.
|
||||
In response to these credentials, the Identity Service issues
|
||||
the user an authentication token, which the user provides in
|
||||
subsequent requests.</para>
|
||||
<para><guilabel><anchor xml:id="h.grqljkbnx8fss"/>Token</guilabel></para>
|
||||
<para>An arbitrary bit of text that is used to access resources.
|
||||
Each token has a scope which describes which resources are
|
||||
accessible with it. A token may be revoked at anytime and is
|
||||
valid for a finite duration.</para>
|
||||
<para>While the Identity Service supports token-based
|
||||
authentication in this release, the intention is for it to
|
||||
support additional protocols in the future. The intent is for
|
||||
it to be an integration service foremost, and not aspire to be
|
||||
a full-fledged identity store and management solution.</para>
|
||||
<para><guilabel><anchor xml:id="h.qz798xvt751fs"/>Tenant</guilabel></para>
|
||||
<para>A container used to group or isolate resources and/or
|
||||
identity objects. Depending on the service operator, a tenant
|
||||
may map to a customer, account, organization, or
|
||||
project.</para>
|
||||
<para><guilabel><anchor xml:id="h.ayp97sn984mys"/>Service</guilabel></para>
|
||||
<para>An OpenStack service, such as Compute (Nova), Object
|
||||
Storage (Swift), or Image Service (Glance). Provides one or
|
||||
more endpoints through which users can access resources and
|
||||
perform operations.</para>
|
||||
<para><guilabel><anchor xml:id="h.74y77xwdnwlms"/>Endpoint</guilabel></para>
|
||||
<para>An network-accessible address, usually described by URL,
|
||||
from where you access a service. If using an extension for
|
||||
templates, you can create an endpoint template, which
|
||||
represents the templates of all the consumable services that
|
||||
are available across the regions.</para>
|
||||
<para><guilabel><anchor xml:id="h.r7samiog05ins"/>Role</guilabel></para>
|
||||
<para>A personality that a user assumes that enables them to
|
||||
perform a specific set of operations. A role includes a set of
|
||||
rights and privileges. A user assuming that role inherits
|
||||
those rights and privileges.</para>
|
||||
<para>In the Identity Service, a token that is issued to a user
|
||||
includes the list of roles that user can assume. Services that
|
||||
are being called by that user determine how they interpret the
|
||||
set of roles a user has and which operations or resources each
|
||||
role grants access to.</para>
|
||||
<figure>
|
||||
<title>Keystone Authentication</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image19.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel><anchor xml:id="h.rdpcpnbvn06ws"/>User management</guilabel></para>
|
||||
<para>The main components of Identity user management are:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Users</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Tenants</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Roles</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>A userrepresents a human user, and has associated
|
||||
information such as username, password and email. This example
|
||||
creates a user named "alice":</para>
|
||||
<para>$ keystone user-create --name=alice --pass=mypassword123
|
||||
--email=alice@example.com</para>
|
||||
<para>A tenantcan be a project, group, or organization. Whenever
|
||||
you make requests to OpenStack services, you must specify a
|
||||
tenant. For example, if you query the Compute service for a list
|
||||
of running instances, you will receive a list of all of the
|
||||
running instances in the tenant you specified in your query.
|
||||
This example creates a tenant named "acme":</para>
|
||||
<para>$ keystone tenant-create --name=acmeA rolecaptures what
|
||||
operations a user is permitted to perform in a given tenant.
|
||||
This example creates a role named "compute-user":</para>
|
||||
<para>$ keystone role-create --name=compute-userThe Identity
|
||||
service associates a user with a tenant and a role. To continue
|
||||
with our previous examples, we may wish to assign the "alice"
|
||||
user the "compute-user" role in the "acme" tenant:</para>
|
||||
<para>$ keystone user-list</para>
|
||||
<para>$ keystone user-role-add --user=892585 --role=9a764e
|
||||
--tenant-id=6b8fd2</para>
|
||||
<para>A user can be assigned different roles in different tenants:
|
||||
for example, Alice may also have the "admin" role in the
|
||||
"Cyberdyne" tenant. A user can also be assigned multiple roles
|
||||
in the same tenant.</para>
|
||||
<para>The /etc/[SERVICE_CODENAME]/policy.json controls what users
|
||||
are allowed to do for a given service. For example,
|
||||
/etc/nova/policy.json specifies the access policy for the
|
||||
Compute service, /etc/glance/policy.json specifies the access
|
||||
policy for the Image service, and /etc/keystone/policy.json
|
||||
specifies the access policy for the Identity service.</para>
|
||||
<para>The default policy.json files in the Compute, Identity, and
|
||||
Image service recognize only the admin role: all operations that
|
||||
do not require the admin role will be accessible by any user
|
||||
that has any role in a tenant.</para>
|
||||
<para>If you wish to restrict users from performing operations in,
|
||||
say, the Compute service, you need to create a role in the
|
||||
Identity service and then modify /etc/nova/policy.json so that
|
||||
this role is required for Compute operations.</para>
|
||||
<para>For example, this line in /etc/nova/policy.json specifies
|
||||
that there are no restrictions on which users can create
|
||||
volumes: if the user has any role in a tenant, they will be able
|
||||
to create volumes in that tenant.</para>
|
||||
<para><guilabel><anchor xml:id="h.f5989v85c3fds"/></guilabel></para>
|
||||
<para><guilabel><anchor xml:id="h.1rrjgvz0nkwhs"/>Service
|
||||
management</guilabel></para>
|
||||
<para>The Identity Service provides the following service
|
||||
management functions:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Services</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Endpoints</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>The Identity Service also maintains a user that corresponds
|
||||
to each service (such as, a user named nova, for the Compute
|
||||
service) and a special service tenant, which is called
|
||||
service.</para>
|
||||
<para>The commands for creating services and endpoints are
|
||||
described in a later section.</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-concept-mysql">
|
||||
<title>Conceptual MySQL</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,331 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-concept-neutron">
|
||||
<title>Conceptual Neutron</title>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Networking in OpenStack</para>
|
||||
<para><guilabel>Networking in OpenStack</guilabel></para>
|
||||
<para>OpenStack Networking provides a rich tenant-facing API
|
||||
for defining network connectivity and addressing in the
|
||||
cloud. The OpenStack Networking project gives operators
|
||||
the ability to leverage different networking technologies
|
||||
to power their cloud networking. It is a virtual network
|
||||
service that provides a powerful API to define the network
|
||||
connectivity and addressing used by devices from other
|
||||
services, such as OpenStack Compute. It has a rich API
|
||||
which consists of the following components.</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Network:</emphasis> An
|
||||
isolated L2 segment, analogous to VLAN in the physical
|
||||
networking world.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Subnet:</emphasis> A block
|
||||
of v4 or v6 IP addresses and associated configuration
|
||||
state.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Port:</emphasis> A
|
||||
connection point for attaching a single device, such
|
||||
as the NIC of a virtual server, to a virtual network.
|
||||
Also describes the associated network configuration,
|
||||
such as the MAC and IP addresses to be used on that
|
||||
port.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>You can configure rich network topologies by creating
|
||||
and configuring networks and subnets, and then instructing
|
||||
other OpenStack services like OpenStack Compute to attach
|
||||
virtual devices to ports on these networks. In
|
||||
particular, OpenStack Networking supports each tenant
|
||||
having multiple private networks, and allows tenants to
|
||||
choose their own IP addressing scheme, even if those IP
|
||||
addresses overlap with those used by other tenants. This
|
||||
enables very advanced cloud networking use cases, such as
|
||||
building multi-tiered web applications and allowing
|
||||
applications to be migrated to the cloud without changing
|
||||
IP addresses.</para>
|
||||
<para><guilabel>Plugin Architecture: Flexibility to Choose
|
||||
Different Network Technologies</guilabel></para>
|
||||
<para>Enhancing traditional networking solutions to provide rich
|
||||
cloud networking is challenging. Traditional networking is not
|
||||
designed to scale to cloud proportions or to configure
|
||||
automatically.</para>
|
||||
<para>The original OpenStack Compute network implementation
|
||||
assumed a very basic model of performing all isolation through
|
||||
Linux VLANs and IP tables. OpenStack Networking introduces the
|
||||
concept of a plugin, which is a pluggable back-end
|
||||
implementation of the OpenStack Networking API. A plugin can
|
||||
use a variety of technologies to implement the logical API
|
||||
requests. Some OpenStack Networking plugins might use basic
|
||||
Linux VLANs and IP tables, while others might use more
|
||||
advanced technologies, such as L2-in-L3 tunneling or OpenFlow,
|
||||
to provide similar benefits.</para>
|
||||
<para>The current set of plugins include:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Open vSwitch:</emphasis>
|
||||
Documentation included in this guide.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Cisco:</emphasis> Documented
|
||||
externally at: <link
|
||||
xlink:href="http://wiki.openstack.org/cisco-quantum"
|
||||
>http://wiki.openstack.org/cisco-quantum</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Linux Bridge:</emphasis>
|
||||
Documentation included in this guide and <link
|
||||
xlink:href="http://wiki.openstack.org/Quantum-Linux-Bridge-Plugin"
|
||||
>http://wiki.openstack.org/Quantum-Linux-Bridge-Plugin</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Nicira NVP:</emphasis>
|
||||
Documentation include in this guide, <link
|
||||
xlink:href="http://www.vmware.com/products/datacenter-virtualization/nicira.html"
|
||||
>NVP Product Overview </link>, and <link
|
||||
xlink:href="http://www.nicira.com/support">NVP
|
||||
Product Support</link>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Ryu:</emphasis>
|
||||
<link
|
||||
xlink:href="https://github.com/osrg/ryu/wiki/OpenStack"
|
||||
>https://github.com/osrg/ryu/wiki/OpenStack</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">NEC OpenFlow:</emphasis>
|
||||
<link
|
||||
xlink:href="http://wiki.openstack.org/Quantum-NEC-OpenFlow-Plugin"
|
||||
>http://wiki.openstack.org/Quantum-NEC-OpenFlow-Plugin</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Big Switch, Floodlight REST
|
||||
Proxy:</emphasis>
|
||||
<link
|
||||
xlink:href="http://www.openflowhub.org/display/floodlightcontroller/Quantum+REST+Proxy+Plugin"
|
||||
>http://www.openflowhub.org/display/floodlightcontroller/Quantum+REST+Proxy+Plugin</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">PLUMgrid:</emphasis>
|
||||
<link
|
||||
xlink:href="https://wiki.openstack.org/wiki/Plumgrid-quantum"
|
||||
>https://wiki.openstack.org/wiki/Plumgrid-quantum</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Hyper-V
|
||||
Plugin</emphasis></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Brocade
|
||||
Plugin</emphasis></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Midonet
|
||||
Plugin</emphasis></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Plugins can have different properties in terms of hardware
|
||||
requirements, features, performance, scale, operator tools,
|
||||
etc. Supporting many plugins enables the cloud administrator
|
||||
to weigh different options and decide which networking
|
||||
technology is right for the deployment.</para>
|
||||
<para>Components of OpenStack Networking</para>
|
||||
<para>To deploy OpenStack Networking, it is useful to understand
|
||||
the different components that make up the solution and how
|
||||
those components interact with each other and with other
|
||||
OpenStack services.</para>
|
||||
<para>OpenStack Networking is a standalone service, just like
|
||||
other OpenStack services such as OpenStack Compute, OpenStack
|
||||
Image service, OpenStack Identity service, and the OpenStack
|
||||
Dashboard. Like those services, a deployment of OpenStack
|
||||
Networking often involves deploying several processes on a
|
||||
variety of hosts.</para>
|
||||
<para>The main process of the OpenStack Networking server is
|
||||
quantum-server, which is a Python daemon that exposes the
|
||||
OpenStack Networking API and passes user requests to the
|
||||
configured OpenStack Networking plugin for additional
|
||||
processing. Typically, the plugin requires access to a
|
||||
database for persistent storage, similar to other OpenStack
|
||||
services.</para>
|
||||
<para>If your deployment uses a controller host to run centralized
|
||||
OpenStack Compute components, you can deploy the OpenStack
|
||||
Networking server on that same host. However, OpenStack
|
||||
Networking is entirely standalone and can be deployed on its
|
||||
own server as well. OpenStack Networking also includes
|
||||
additional agents that might be required depending on your
|
||||
deployment:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">plugin agent
|
||||
(quantum-*-agent):</emphasis>Runs on each
|
||||
hypervisor to perform local vswitch configuration.
|
||||
Agent to be run depends on which plugin you are using,
|
||||
as some plugins do not require an agent.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">dhcp agent
|
||||
(quantum-dhcp-agent):</emphasis>Provides DHCP
|
||||
services to tenant networks. This agent is the same
|
||||
across all plugins.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">l3 agent
|
||||
(quantum-l3-agent):</emphasis>Provides L3/NAT
|
||||
forwarding to provide external network access for VMs
|
||||
on tenant networks. This agent is the same across all
|
||||
plugins.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>These agents interact with the main quantum-server process
|
||||
in the following ways:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Through RPC. For example, rabbitmq or qpid.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Through the standard OpenStack Networking
|
||||
API.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>OpenStack Networking relies on the OpenStack Identity
|
||||
Project (Keystone) for authentication and authorization of all
|
||||
API request.</para>
|
||||
<para>OpenStack Compute interacts with OpenStack Networking
|
||||
through calls to its standard API. As part of creating a VM,
|
||||
nova-compute communicates with the OpenStack Networking API to
|
||||
plug each virtual NIC on the VM into a particular
|
||||
network.</para>
|
||||
<para>The OpenStack Dashboard (Horizon) has integration with the
|
||||
OpenStack Networking API, allowing administrators and tenant
|
||||
users, to create and manage network services through the
|
||||
Horizon GUI.</para>
|
||||
<para><emphasis role="bold">Place Services on Physical
|
||||
Hosts</emphasis></para>
|
||||
<para>Like other OpenStack services, OpenStack Networking provides
|
||||
cloud administrators with significant flexibility in deciding
|
||||
which individual services should run on which physical
|
||||
devices. On one extreme, all service daemons can be run on a
|
||||
single physical host for evaluation purposes. On the other,
|
||||
each service could have its own physical hosts, and some cases
|
||||
be replicated across multiple hosts for redundancy.</para>
|
||||
<para>In this guide, we focus primarily on a standard architecture
|
||||
that includes a “cloud controller” host, a “network gateway”
|
||||
host, and a set of hypervisors for running VMs. The "cloud
|
||||
controller" and "network gateway" can be combined in simple
|
||||
deployments, though if you expect VMs to send significant
|
||||
amounts of traffic to or from the Internet, a dedicated
|
||||
network gateway host is suggested to avoid potential CPU
|
||||
contention between packet forwarding performed by the
|
||||
quantum-l3-agent and other OpenStack services.</para>
|
||||
<para><emphasis role="bold">Network Connectivity for Physical
|
||||
Hosts</emphasis></para>
|
||||
<figure>
|
||||
<title>Network Diagram</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image33.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para>A standard OpenStack Networking setup has up to four
|
||||
distinct physical data center networks:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Management
|
||||
network:</emphasis>Used for internal communication
|
||||
between OpenStack Components. The IP addresses on this
|
||||
network should be reachable only within the data
|
||||
center.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Data network:</emphasis>Used
|
||||
for VM data communication within the cloud deployment.
|
||||
The IP addressing requirements of this network depend
|
||||
on the OpenStack Networking plugin in use.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">External
|
||||
network:</emphasis>Used to provide VMs with Internet
|
||||
access in some deployment scenarios. The IP addresses
|
||||
on this network should be reachable by anyone on the
|
||||
Internet.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">API network:</emphasis>Exposes
|
||||
all OpenStack APIs, including the OpenStack Networking
|
||||
API, to tenants. The IP addresses on this network
|
||||
should be reachable by anyone on the Internet. This
|
||||
may be the same network as the external network, as it
|
||||
is possible to create a subnet for the external
|
||||
network that uses IP allocation ranges to use only
|
||||
less than the full range of IP addresses in an IP
|
||||
block.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>OpenStack Networking Concepts</para>
|
||||
<para><emphasis role="bold">Network Types</emphasis></para>
|
||||
<para>The OpenStack Networking configuration provided by the
|
||||
Rackspace Private Cloud cookbooks allows you to choose between
|
||||
VLAN or GRE isolated networks, both provider- and
|
||||
tenant-specific. From the provider side, an administrator can
|
||||
also create a flat network.</para>
|
||||
<para>The type of network that is used for private tenant networks
|
||||
is determined by the network_type attribute, which can be
|
||||
edited in the Chef override_attributes. This attribute sets
|
||||
both the default provider network type and the only type of
|
||||
network that tenants are able to create. Administrators can
|
||||
always create flat and VLAN networks. GRE networks of any type
|
||||
require the network_type to be set to gre.</para>
|
||||
<para><emphasis role="bold">Namespaces</emphasis></para>
|
||||
<para>For each network you create, the Network node (or Controller
|
||||
node, if combined) will have a unique network namespace
|
||||
(netns) created by the DHCP and Metadata agents. The netns
|
||||
hosts an interface and IP addresses for dnsmasq and the
|
||||
quantum-ns-metadata-proxy. You can view the namespaces with
|
||||
the ip netns [list], and can interact with the namespaces with
|
||||
the ip netns exec <namespace> <command>
|
||||
command.</para>
|
||||
<para><emphasis role="bold">Metadata</emphasis></para>
|
||||
<para>Not all networks or VMs need metadata access. Rackspace
|
||||
recommends that you use metadata if you are using a single
|
||||
network. If you need metadata, you may also need a default
|
||||
route. (If you don't need a default route, no-gateway will
|
||||
do.)</para>
|
||||
<para>To communicate with the metadata IP address inside the
|
||||
namespace, instances need a route for the metadata network
|
||||
that points to the dnsmasq IP address on the same namespaced
|
||||
interface. OpenStack Networking only injects a route when you
|
||||
do not specify a gateway-ip in the subnet.</para>
|
||||
<para>If you need to use a default route and provide instances
|
||||
with access to the metadata route, create the subnet without
|
||||
specifying a gateway IP and with a static route from 0.0.0.0/0
|
||||
to your gateway IP address. Adjust the DHCP allocation pool so
|
||||
that it will not assign the gateway IP. With this
|
||||
configuration, dnsmasq will pass both routes to instances.
|
||||
This way, metadata will be routed correctly without any
|
||||
changes on the external gateway.</para>
|
||||
<para><emphasis role="bold">OVS Bridges</emphasis></para>
|
||||
<para>An OVS bridge for provider traffic is created and configured
|
||||
on the nodes where single-network-node and single-compute are
|
||||
applied. Bridges are created, but physical interfaces are not
|
||||
added. An OVS bridge is not created on a Controller-only
|
||||
node.</para>
|
||||
<para>When creating networks, you can specify the type and
|
||||
properties, such as Flat vs. VLAN, Shared vs. Tenant, or
|
||||
Provider vs. Overlay. These properties identify and determine
|
||||
the behavior and resources of instances attached to the
|
||||
network. The cookbooks will create bridges for the
|
||||
configuration that you specify, although they do not add
|
||||
physical interfaces to provider bridges. For example, if you
|
||||
specify a network type of GRE, a br-tun tunnel bridge will be
|
||||
created to handle overlay traffic.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-concept-nova">
|
||||
<title>Conceptual Nova</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,442 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-concept-rabbitmq">
|
||||
<title>Conceptual RabbitMQ (Messging in OpenStack)</title>
|
||||
<figure>
|
||||
<title>Messaging in OpenStack</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image04.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para>AMQP is the messaging technology chosen by the OpenStack
|
||||
cloud. The AMQP broker, either RabbitMQ or Qpid, sits between any
|
||||
two Nova components and allows them to communicate in a loosely
|
||||
coupled fashion. More precisely, Nova components (the compute
|
||||
fabric of OpenStack) use Remote Procedure Calls (RPC hereinafter)
|
||||
to communicate to one another; however such a paradigm is built
|
||||
atop the publish/subscribe paradigm so that the following benefits
|
||||
can be achieved:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Decoupling between client and servant (such as the client
|
||||
does not need to know where the servant’s reference
|
||||
is).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Full a-synchronism between client and servant (such as the
|
||||
client does not need the servant to run at the same time of
|
||||
the remote call).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Random balancing of remote calls (such as if more servants
|
||||
are up and running, one-way calls are transparently dispatched
|
||||
to the first available servant).</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Nova uses direct, fanout, and topic-based exchanges. The
|
||||
architecture looks like the one depicted in the figure
|
||||
below:</para>
|
||||
<figure>
|
||||
<title>AMQP</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image24.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para>Nova implements RPC (both request+response, and one-way,
|
||||
respectively nicknamed ‘rpc.call’ and ‘rpc.cast’) over AMQP by
|
||||
providing an adapter class which take cares of marshaling and
|
||||
unmarshaling of messages into function calls. Each Nova service
|
||||
(for example Compute, Scheduler, etc.) create two queues at the
|
||||
initialization time, one which accepts messages with routing keys
|
||||
‘NODE-TYPE.NODE-ID’ (for example compute.hostname) and another,
|
||||
which accepts messages with routing keys as generic ‘NODE-TYPE’
|
||||
(for example compute). The former is used specifically when
|
||||
Nova-API needs to redirect commands to a specific node like
|
||||
‘euca-terminate instance’. In this case, only the compute node
|
||||
whose host’s hypervisor is running the virtual machine can kill
|
||||
the instance. The API acts as a consumer when RPC calls are
|
||||
request/response, otherwise is acts as publisher only.</para>
|
||||
<para><guilabel>Nova RPC Mappings</guilabel></para>
|
||||
<para>The figure below shows the internals of a message broker
|
||||
node (referred to as a RabbitMQ node in the diagrams) when a
|
||||
single instance is deployed and shared in an OpenStack cloud.
|
||||
Every Nova component connects to the message broker and,
|
||||
depending on its personality (for example a compute node or a
|
||||
network node), may use the queue either as an Invoker (such as
|
||||
API or Scheduler) or a Worker (such as Compute or Network).
|
||||
Invokers and Workers do not actually exist in the Nova object
|
||||
model, but we are going to use them as an abstraction for sake
|
||||
of clarity. An Invoker is a component that sends messages in the
|
||||
queuing system via two operations: 1) rpc.call and ii) rpc.cast;
|
||||
a Worker is a component that receives messages from the queuing
|
||||
system and reply accordingly to rcp.call operations.</para>
|
||||
<para>Figure 2 shows the following internal elements:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Topic Publisher:</emphasis>a Topic
|
||||
Publisher comes to life when an rpc.call or an rpc.cast
|
||||
operation is executed; this object is instantiated and used to
|
||||
push a message to the queuing system. Every publisher connects
|
||||
always to the same topic-based exchange; its life-cycle is
|
||||
limited to the message delivery.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Direct Consumer:</emphasis>a
|
||||
Direct Consumer comes to life if (an only if) a rpc.call
|
||||
operation is executed; this object is instantiated and used to
|
||||
receive a response message from the queuing system; Every
|
||||
consumer connects to a unique direct-based exchange via a
|
||||
unique exclusive queue; its life-cycle is limited to the
|
||||
message delivery; the exchange and queue identifiers are
|
||||
determined by a UUID generator, and are marshaled in the
|
||||
message sent by the Topic Publisher (only rpc.call
|
||||
operations).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Topic Consumer:</emphasis>a Topic
|
||||
Consumer comes to life as soon as a Worker is instantiated and
|
||||
exists throughout its life-cycle; this object is used to
|
||||
receive messages from the queue and it invokes the appropriate
|
||||
action as defined by the Worker role. A Topic Consumer
|
||||
connects to the same topic-based exchange either via a shared
|
||||
queue or via a unique exclusive queue. Every Worker has two
|
||||
topic consumers, one that is addressed only during rpc.cast
|
||||
operations (and it connects to a shared queue whose exchange
|
||||
key is ‘topic’) and the other that is addressed only during
|
||||
rpc.call operations (and it connects to a unique queue whose
|
||||
exchange key is ‘topic.host’).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Direct Publisher:</emphasis>a
|
||||
Direct Publisher comes to life only during rpc.call operations
|
||||
and it is instantiated to return the message required by the
|
||||
request/response operation. The object connects to a
|
||||
direct-based exchange whose identity is dictated by the
|
||||
incoming message.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Topic Exchange:</emphasis>The
|
||||
Exchange is a routing table that exists in the context of a
|
||||
virtual host (the multi-tenancy mechanism provided by Qpid or
|
||||
RabbitMQ); its type (such as topic vs. direct) determines the
|
||||
routing policy; a message broker node will have only one
|
||||
topic-based exchange for every topic in Nova.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Direct Exchange:</emphasis>this is
|
||||
a routing table that is created during rpc.call operations;
|
||||
there are many instances of this kind of exchange throughout
|
||||
the life-cycle of a message broker node, one for each rpc.call
|
||||
invoked.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Queue Element:</emphasis>A Queue
|
||||
is a message bucket. Messages are kept in the queue until a
|
||||
Consumer (either Topic or Direct Consumer) connects to the
|
||||
queue and fetch it. Queues can be shared or can be exclusive.
|
||||
Queues whose routing key is ‘topic’ are shared amongst Workers
|
||||
of the same personality.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<figure>
|
||||
<title>RabbitMQ</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image20.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel>RPC Calls</guilabel></para>
|
||||
<para>The diagram below shows the message flow during an rp.call
|
||||
operation:</para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>a Topic Publisher is instantiated to send the message
|
||||
request to the queuing system; immediately before the
|
||||
publishing operation, a Direct Consumer is instantiated to
|
||||
wait for the response message.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>once the message is dispatched by the exchange, it is
|
||||
fetched by the Topic Consumer dictated by the routing key
|
||||
(such as ‘topic.host’) and passed to the Worker in charge of
|
||||
the task.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>once the task is completed, a Direct Publisher is
|
||||
allocated to send the response message to the queuing
|
||||
system.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>once the message is dispatched by the exchange, it is
|
||||
fetched by the Direct Consumer dictated by the routing key
|
||||
(such as ‘msg_id’) and passed to the Invoker.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<figure>
|
||||
<title>RabbitMQ</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image28.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel>RPC Casts</guilabel></para>
|
||||
<para>The diagram below the message flow during an rp.cast
|
||||
operation:</para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>A Topic Publisher is instantiated to send the message
|
||||
request to the queuing system.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Once the message is dispatched by the exchange, it is
|
||||
fetched by the Topic Consumer dictated by the routing key
|
||||
(such as ‘topic’) and passed to the Worker in charge of the
|
||||
task.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<figure>
|
||||
<title>RabbitMQ</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image20.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel>AMQP Broker Load</guilabel></para>
|
||||
<para>At any given time the load of a message broker node running
|
||||
either Qpid or RabbitMQ is function of the following
|
||||
parameters:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Throughput of API calls: the number of API calls (more
|
||||
precisely rpc.call ops) being served by the OpenStack cloud
|
||||
dictates the number of direct-based exchanges, related
|
||||
queues and direct consumers connected to them.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Number of Workers: there is one queue shared amongst
|
||||
workers with the same personality; however there are as many
|
||||
exclusive queues as the number of workers; the number of
|
||||
workers dictates also the number of routing keys within the
|
||||
topic-based exchange, which is shared amongst all
|
||||
workers.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>The figure below shows the status of a RabbitMQ node after
|
||||
Nova components’ bootstrap in a test environment. Exchanges and
|
||||
queues being created by Nova components are:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Exchanges</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>nova (topic exchange)</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Queues</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>compute.phantom (phantom is hostname)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>compute</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>network.phantom (phantom is hostname)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>network</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>scheduler.phantom (phantom is hostname)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>scheduler</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<para><guilabel>RabbitMQ Gotchas</guilabel></para>
|
||||
<para>Nova uses Kombu to connect to the RabbitMQ environment.
|
||||
Kombu is a Python library that in turn uses AMQPLib, a library
|
||||
that implements the standard AMQP 0.8 at the time of writing.
|
||||
When using Kombu, Invokers and Workers need the following
|
||||
parameters in order to instantiate a Connection object that
|
||||
connects to the RabbitMQ server (please note that most of the
|
||||
following material can be also found in the Kombu documentation;
|
||||
it has been summarized and revised here for sake of
|
||||
clarity):</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Hostname:</emphasis> The hostname
|
||||
to the AMQP server.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Userid:</emphasis> A valid
|
||||
username used to authenticate to the server.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Password:</emphasis> The password
|
||||
used to authenticate to the server.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Virtual_host:</emphasis> The name
|
||||
of the virtual host to work with. This virtual host must exist
|
||||
on the server, and the user must have access to it. Default is
|
||||
“/”.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Port:</emphasis> The port of the
|
||||
AMQP server. Default is 5672 (amqp).</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>The following parameters are default:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Insist:</emphasis> insist on
|
||||
connecting to a server. In a configuration with multiple
|
||||
load-sharing servers, the Insist option tells the server that
|
||||
the client is insisting on a connection to the specified
|
||||
server. Default is False.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Connect_timeout:</emphasis> the
|
||||
timeout in seconds before the client gives up connecting to
|
||||
the server. The default is no timeout.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">SSL:</emphasis> use SSL to connect
|
||||
to the server. The default is False.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>More precisely Consumers need the following
|
||||
parameters:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Connection:</emphasis> the above
|
||||
mentioned Connection object.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Queue:</emphasis>name of the
|
||||
queue.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Exchange:</emphasis>name of the
|
||||
exchange the queue binds to.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Routing_key:</emphasis>the
|
||||
interpretation of the routing key depends on the value of the
|
||||
exchange_type attribute.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Direct exchange:</emphasis>if the
|
||||
routing key property of the message and the routing_key
|
||||
attribute of the queue are identical, then the message is
|
||||
forwarded to the queue.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Fanout
|
||||
exchange:</emphasis>messages are forwarded to the queues bound
|
||||
the exchange, even if the binding does not have a key.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Topic exchange:</emphasis>if the
|
||||
routing key property of the message matches the routing key of
|
||||
the key according to a primitive pattern matching scheme, then
|
||||
the message is forwarded to the queue. The message routing key
|
||||
then consists of words separated by dots (”.”, like domain
|
||||
names), and two special characters are available; star (“”)
|
||||
and hash (“#”). The star matches any word, and the hash
|
||||
matches zero or more words. For example ”.stock.#” matches the
|
||||
routing keys “usd.stock” and “eur.stock.db” but not
|
||||
“stock.nasdaq”.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Durable:</emphasis>this flag
|
||||
determines the durability of both exchanges and queues;
|
||||
durable exchanges and queues remain active when a RabbitMQ
|
||||
server restarts. Non-durable exchanges/queues (transient
|
||||
exchanges/queues) are purged when a server restarts. It is
|
||||
worth noting that AMQP specifies that durable queues cannot
|
||||
bind to transient exchanges. Default is True.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Auto_delete:</emphasis>if set, the
|
||||
exchange is deleted when all queues have finished using it.
|
||||
Default is False.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Exclusive:</emphasis>exclusive
|
||||
queues (such as non-shared) may only be consumed from by the
|
||||
current connection. When exclusive is on, this also implies
|
||||
auto_delete. Default is False.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Exchange_type:</emphasis>AMQP
|
||||
defines several default exchange types (routing algorithms)
|
||||
that covers most of the common messaging use cases.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold"
|
||||
>Auto_ack:</emphasis>acknowledgement is handled automatically
|
||||
once messages are received. By default auto_ack is set to
|
||||
False, and the receiver is required to manually handle
|
||||
acknowledgment.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">No_ack:</emphasis>it disable
|
||||
acknowledgement on the server-side. This is different from
|
||||
auto_ack in that acknowledgement is turned off altogether.
|
||||
This functionality increases performance but at the cost of
|
||||
reliability. Messages can get lost if a client dies before it
|
||||
can deliver them to the application.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Auto_declare:</emphasis>if this is
|
||||
True and the exchange name is set, the exchange will be
|
||||
automatically declared at instantiation. Auto declare is on by
|
||||
default. Publishers specify most the parameters of Consumers
|
||||
(such as they do not specify a queue name), but they can also
|
||||
specify the following:</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Delivery_mode:</emphasis>the
|
||||
default delivery mode used for messages. The value is an
|
||||
integer. The following delivery modes are supported by
|
||||
RabbitMQ:</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">1 or “transient”:</emphasis>the
|
||||
message is transient. Which means it is stored in memory only,
|
||||
and is lost if the server dies or restarts.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">2 or “persistent”:</emphasis>the
|
||||
message is persistent. Which means the message is stored both
|
||||
in-memory, and on disk, and therefore preserved if the server
|
||||
dies or restarts.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>The default value is 2 (persistent). During a send
|
||||
operation, Publishers can override the delivery mode of messages
|
||||
so that, for example, transient messages can be sent over a
|
||||
durable queue.</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-cinder">
|
||||
<title>Install Cinder</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-glance">
|
||||
<title>Install Glance</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-horizon">
|
||||
<title>Install Horizon</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-keystone">
|
||||
<title>Install Keystone</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-mysql">
|
||||
<title>Conceptual MySQL</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-neutron">
|
||||
<title>Install Neutron</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-nova">
|
||||
<title>Install Nova</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-install-rabbitmq">
|
||||
<title>Install RabbitMQ</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-lab">
|
||||
<title>Lab</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-quiz">
|
||||
<title>Quiz</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-controller-node">
|
||||
<title>Controller Node</title>
|
||||
<xi:include href="associate-controller-node-concept-mysql.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-mysql.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-concept-rabbitmq.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-rabbitmq.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-concept-keystone.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-keystone.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-concept-glance.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-glance.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-concept-neutron.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-neutron.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-concept-nova.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-nova.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-concept-cinder.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-cinder.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-concept-horizon.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-install-horizon.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-lab.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node-quiz.xml"></xi:include>
|
||||
</chapter>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="using-horizon-cli">
|
||||
<title>Using Horizon and the CLI for Operations Tasks</title>
|
||||
<xi:include href="module001-ch006-overview-horizon-cli.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(/*/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback></xi:include>
|
||||
<para><link xlink:href="https://blueprints.launchpad.net/openstack-manuals/+filebug" xlink:show="new">Submit a bug on
|
||||
the section above. Short description for the bug summary. Paragraph for the description and
|
||||
then tag with training-manuals.</link></para>
|
||||
</section>
|
||||
@@ -1,657 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-network-node-concept-neutron">
|
||||
<title>Concept Neutron</title>
|
||||
<section xml:id="mnetworking-in-openstack">
|
||||
<title>Networking in OpenStack</title>
|
||||
<para><guilabel>Networking in OpenStack</guilabel></para>
|
||||
<para>OpenStack Networking provides a rich tenant-facing API
|
||||
for defining network connectivity and addressing in the
|
||||
cloud. The OpenStack Networking project gives operators
|
||||
the ability to leverage different networking technologies
|
||||
to power their cloud networking. It is a virtual network
|
||||
service that provides a powerful API to define the network
|
||||
connectivity and addressing used by devices from other
|
||||
services, such as OpenStack Compute. It has a rich API
|
||||
which consists of the following components.</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Network:</emphasis> An
|
||||
isolated L2 segment, analogous to VLAN in the physical
|
||||
networking world.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Subnet:</emphasis> A block
|
||||
of v4 or v6 IP addresses and associated configuration
|
||||
state.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Port:</emphasis> A
|
||||
connection point for attaching a single device, such
|
||||
as the NIC of a virtual server, to a virtual network.
|
||||
Also describes the associated network configuration,
|
||||
such as the MAC and IP addresses to be used on that
|
||||
port.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>You can configure rich network topologies by creating
|
||||
and configuring networks and subnets, and then instructing
|
||||
other OpenStack services like OpenStack Compute to attach
|
||||
virtual devices to ports on these networks. In
|
||||
particular, OpenStack Networking supports each tenant
|
||||
having multiple private networks, and allows tenants to
|
||||
choose their own IP addressing scheme, even if those IP
|
||||
addresses overlap with those used by other tenants. This
|
||||
enables very advanced cloud networking use cases, such as
|
||||
building multi-tiered web applications and allowing
|
||||
applications to be migrated to the cloud without changing
|
||||
IP addresses.</para>
|
||||
<para><guilabel>Plugin Architecture: Flexibility to Choose
|
||||
Different Network Technologies</guilabel></para>
|
||||
<para>Enhancing traditional networking solutions to provide rich
|
||||
cloud networking is challenging. Traditional networking is not
|
||||
designed to scale to cloud proportions or to configure
|
||||
automatically.</para>
|
||||
<para>The original OpenStack Compute network implementation
|
||||
assumed a very basic model of performing all isolation through
|
||||
Linux VLANs and IP tables. OpenStack Networking introduces the
|
||||
concept of a plugin, which is a pluggable back-end
|
||||
implementation of the OpenStack Networking API. A plugin can
|
||||
use a variety of technologies to implement the logical API
|
||||
requests. Some OpenStack Networking plugins might use basic
|
||||
Linux VLANs and IP tables, while others might use more
|
||||
advanced technologies, such as L2-in-L3 tunneling or OpenFlow,
|
||||
to provide similar benefits.</para>
|
||||
<para>The current set of plugins include:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Open vSwitch:</emphasis>
|
||||
Documentation included in this guide.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Cisco:</emphasis> Documented
|
||||
externally at: <link
|
||||
xlink:href="http://wiki.openstack.org/cisco-quantum"
|
||||
>http://wiki.openstack.org/cisco-quantum</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Linux Bridge:</emphasis>
|
||||
Documentation included in this guide and <link
|
||||
xlink:href="http://wiki.openstack.org/Quantum-Linux-Bridge-Plugin"
|
||||
>http://wiki.openstack.org/Quantum-Linux-Bridge-Plugin</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Nicira NVP:</emphasis>
|
||||
Documentation include in this guide, <link
|
||||
xlink:href="http://www.vmware.com/products/datacenter-virtualization/nicira.html"
|
||||
>NVP Product Overview </link>, and <link
|
||||
xlink:href="http://www.nicira.com/support">NVP
|
||||
Product Support</link>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Ryu:</emphasis>
|
||||
<link
|
||||
xlink:href="https://github.com/osrg/ryu/wiki/OpenStack"
|
||||
>https://github.com/osrg/ryu/wiki/OpenStack</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">NEC OpenFlow:</emphasis>
|
||||
<link
|
||||
xlink:href="http://wiki.openstack.org/Quantum-NEC-OpenFlow-Plugin"
|
||||
>http://wiki.openstack.org/Quantum-NEC-OpenFlow-Plugin</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Big Switch, Floodlight REST
|
||||
Proxy:</emphasis>
|
||||
<link
|
||||
xlink:href="http://www.openflowhub.org/display/floodlightcontroller/Quantum+REST+Proxy+Plugin"
|
||||
>http://www.openflowhub.org/display/floodlightcontroller/Quantum+REST+Proxy+Plugin</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">PLUMgrid:</emphasis>
|
||||
<link
|
||||
xlink:href="https://wiki.openstack.org/wiki/Plumgrid-quantum"
|
||||
>https://wiki.openstack.org/wiki/Plumgrid-quantum</link></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Hyper-V
|
||||
Plugin</emphasis></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Brocade
|
||||
Plugin</emphasis></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Midonet
|
||||
Plugin</emphasis></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Plugins can have different properties in terms of hardware
|
||||
requirements, features, performance, scale, operator tools,
|
||||
etc. Supporting many plugins enables the cloud administrator
|
||||
to weigh different options and decide which networking
|
||||
technology is right for the deployment.</para>
|
||||
<para>Components of OpenStack Networking</para>
|
||||
<para>To deploy OpenStack Networking, it is useful to understand
|
||||
the different components that make up the solution and how
|
||||
those components interact with each other and with other
|
||||
OpenStack services.</para>
|
||||
<para>OpenStack Networking is a standalone service, just like
|
||||
other OpenStack services such as OpenStack Compute, OpenStack
|
||||
Image service, OpenStack Identity service, and the OpenStack
|
||||
Dashboard. Like those services, a deployment of OpenStack
|
||||
Networking often involves deploying several processes on a
|
||||
variety of hosts.</para>
|
||||
<para>The main process of the OpenStack Networking server is
|
||||
quantum-server, which is a Python daemon that exposes the
|
||||
OpenStack Networking API and passes user requests to the
|
||||
configured OpenStack Networking plugin for additional
|
||||
processing. Typically, the plugin requires access to a
|
||||
database for persistent storage, similar to other OpenStack
|
||||
services.</para>
|
||||
<para>If your deployment uses a controller host to run centralized
|
||||
OpenStack Compute components, you can deploy the OpenStack
|
||||
Networking server on that same host. However, OpenStack
|
||||
Networking is entirely standalone and can be deployed on its
|
||||
own server as well. OpenStack Networking also includes
|
||||
additional agents that might be required depending on your
|
||||
deployment:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">plugin agent
|
||||
(quantum-*-agent):</emphasis>Runs on each
|
||||
hypervisor to perform local vswitch configuration.
|
||||
Agent to be run depends on which plugin you are using,
|
||||
as some plugins do not require an agent.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">dhcp agent
|
||||
(quantum-dhcp-agent):</emphasis>Provides DHCP
|
||||
services to tenant networks. This agent is the same
|
||||
across all plugins.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">l3 agent
|
||||
(quantum-l3-agent):</emphasis>Provides L3/NAT
|
||||
forwarding to provide external network access for VMs
|
||||
on tenant networks. This agent is the same across all
|
||||
plugins.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>These agents interact with the main quantum-server process
|
||||
in the following ways:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Through RPC. For example, rabbitmq or qpid.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Through the standard OpenStack Networking
|
||||
API.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>OpenStack Networking relies on the OpenStack Identity
|
||||
Project (Keystone) for authentication and authorization of all
|
||||
API request.</para>
|
||||
<para>OpenStack Compute interacts with OpenStack Networking
|
||||
through calls to its standard API. As part of creating a VM,
|
||||
nova-compute communicates with the OpenStack Networking API to
|
||||
plug each virtual NIC on the VM into a particular
|
||||
network.</para>
|
||||
<para>The OpenStack Dashboard (Horizon) has integration with the
|
||||
OpenStack Networking API, allowing administrators and tenant
|
||||
users, to create and manage network services through the
|
||||
Horizon GUI.</para>
|
||||
<para><emphasis role="bold">Place Services on Physical
|
||||
Hosts</emphasis></para>
|
||||
<para>Like other OpenStack services, OpenStack Networking provides
|
||||
cloud administrators with significant flexibility in deciding
|
||||
which individual services should run on which physical
|
||||
devices. On one extreme, all service daemons can be run on a
|
||||
single physical host for evaluation purposes. On the other,
|
||||
each service could have its own physical hosts, and some cases
|
||||
be replicated across multiple hosts for redundancy.</para>
|
||||
<para>In this guide, we focus primarily on a standard architecture
|
||||
that includes a “cloud controller” host, a “network gateway”
|
||||
host, and a set of hypervisors for running VMs. The "cloud
|
||||
controller" and "network gateway" can be combined in simple
|
||||
deployments, though if you expect VMs to send significant
|
||||
amounts of traffic to or from the Internet, a dedicated
|
||||
network gateway host is suggested to avoid potential CPU
|
||||
contention between packet forwarding performed by the
|
||||
quantum-l3-agent and other OpenStack services.</para>
|
||||
<para><emphasis role="bold">Network Connectivity for Physical
|
||||
Hosts</emphasis></para>
|
||||
<figure>
|
||||
<title>Network Diagram</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image33.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para>A standard OpenStack Networking setup has up to four
|
||||
distinct physical data center networks:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Management
|
||||
network:</emphasis>Used for internal communication
|
||||
between OpenStack Components. The IP addresses on this
|
||||
network should be reachable only within the data
|
||||
center.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Data network:</emphasis>Used
|
||||
for VM data communication within the cloud deployment.
|
||||
The IP addressing requirements of this network depend
|
||||
on the OpenStack Networking plugin in use.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">External
|
||||
network:</emphasis>Used to provide VMs with Internet
|
||||
access in some deployment scenarios. The IP addresses
|
||||
on this network should be reachable by anyone on the
|
||||
Internet.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">API network:</emphasis>Exposes
|
||||
all OpenStack APIs, including the OpenStack Networking
|
||||
API, to tenants. The IP addresses on this network
|
||||
should be reachable by anyone on the Internet. This
|
||||
may be the same network as the external network, as it
|
||||
is possible to create a subnet for the external
|
||||
network that uses IP allocation ranges to use only
|
||||
less than the full range of IP addresses in an IP
|
||||
block.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="openstack-networking-concepts">
|
||||
<title>OpenStack Networking Concepts</title>
|
||||
<para><emphasis role="bold">Network Types</emphasis></para>
|
||||
<para>The OpenStack Networking configuration provided by the
|
||||
Rackspace Private Cloud cookbooks allows you to choose between
|
||||
VLAN or GRE isolated networks, both provider- and
|
||||
tenant-specific. From the provider side, an administrator can
|
||||
also create a flat network.</para>
|
||||
<para>The type of network that is used for private tenant networks
|
||||
is determined by the network_type attribute, which can be
|
||||
edited in the Chef override_attributes. This attribute sets
|
||||
both the default provider network type and the only type of
|
||||
network that tenants are able to create. Administrators can
|
||||
always create flat and VLAN networks. GRE networks of any type
|
||||
require the network_type to be set to gre.</para>
|
||||
<para><emphasis role="bold">Namespaces</emphasis></para>
|
||||
<para>For each network you create, the Network node (or Controller
|
||||
node, if combined) will have a unique network namespace
|
||||
(netns) created by the DHCP and Metadata agents. The netns
|
||||
hosts an interface and IP addresses for dnsmasq and the
|
||||
quantum-ns-metadata-proxy. You can view the namespaces with
|
||||
the ip netns [list], and can interact with the namespaces with
|
||||
the ip netns exec <namespace> <command>
|
||||
command.</para>
|
||||
<para><emphasis role="bold">Metadata</emphasis></para>
|
||||
<para>Not all networks or VMs need metadata access. Rackspace
|
||||
recommends that you use metadata if you are using a single
|
||||
network. If you need metadata, you may also need a default
|
||||
route. (If you don't need a default route, no-gateway will
|
||||
do.)</para>
|
||||
<para>To communicate with the metadata IP address inside the
|
||||
namespace, instances need a route for the metadata network
|
||||
that points to the dnsmasq IP address on the same namespaced
|
||||
interface. OpenStack Networking only injects a route when you
|
||||
do not specify a gateway-ip in the subnet.</para>
|
||||
<para>If you need to use a default route and provide instances
|
||||
with access to the metadata route, create the subnet without
|
||||
specifying a gateway IP and with a static route from 0.0.0.0/0
|
||||
to your gateway IP address. Adjust the DHCP allocation pool so
|
||||
that it will not assign the gateway IP. With this
|
||||
configuration, dnsmasq will pass both routes to instances.
|
||||
This way, metadata will be routed correctly without any
|
||||
changes on the external gateway.</para>
|
||||
<para><emphasis role="bold">OVS Bridges</emphasis></para>
|
||||
<para>An OVS bridge for provider traffic is created and configured
|
||||
on the nodes where single-network-node and single-compute are
|
||||
applied. Bridges are created, but physical interfaces are not
|
||||
added. An OVS bridge is not created on a Controller-only
|
||||
node.</para>
|
||||
<para>When creating networks, you can specify the type and
|
||||
properties, such as Flat vs. VLAN, Shared vs. Tenant, or
|
||||
Provider vs. Overlay. These properties identify and determine
|
||||
the behavior and resources of instances attached to the
|
||||
network. The cookbooks will create bridges for the
|
||||
configuration that you specify, although they do not add
|
||||
physical interfaces to provider bridges. For example, if you
|
||||
specify a network type of GRE, a br-tun tunnel bridge will be
|
||||
created to handle overlay traffic.</para>
|
||||
</section>
|
||||
<section xml:id="neutron-use-cases">
|
||||
<title>Neutron Use Cases</title>
|
||||
<para>As of now you must be wondering, how to use these awesome
|
||||
features that OpenStack Networking has given to us.</para>
|
||||
<para><guilabel><anchor xml:id="h.lrsgdytf1mh5"/>Use Case: Single Flat
|
||||
Network</guilabel></para>
|
||||
<para>In the simplest use case, a single OpenStack Networking
|
||||
network exists. This is a "shared" network, meaning it is
|
||||
visible to all tenants via the OpenStack Networking API.
|
||||
Tenant VMs have a single NIC, and receive a fixed IP
|
||||
address from the subnet(s) associated with that network.
|
||||
This essentially maps to the FlatManager and
|
||||
FlatDHCPManager models provided by OpenStack Compute.
|
||||
Floating IPs are not supported.</para>
|
||||
<para>It is common that such an OpenStack Networking network
|
||||
is a "provider network", meaning it was created by the
|
||||
OpenStack administrator to map directly to an existing
|
||||
physical network in the data center. This allows the
|
||||
provider to use a physical router on that data center
|
||||
network as the gateway for VMs to reach the outside world.
|
||||
For each subnet on an external network, the gateway
|
||||
configuration on the physical router must be manually
|
||||
configured outside of OpenStack.</para>
|
||||
<figure>
|
||||
<title>Single Flat Network</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image34.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel>Use Case: Multiple Flat
|
||||
Network</guilabel></para>
|
||||
<para>This use case is very similar to the above Single Flat
|
||||
Network use case, except that tenants see multiple shared
|
||||
networks via the OpenStack Networking API and can choose
|
||||
which network (or networks) to plug into.</para>
|
||||
<figure>
|
||||
<title>Multiple Flat Network</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image35.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel>Use Case: Mixed Flat and Private
|
||||
Network</guilabel></para>
|
||||
<para>This use case is an extension of the above flat network
|
||||
use cases, in which tenants also optionally have access to
|
||||
private per-tenant networks. In addition to seeing one or
|
||||
more shared networks via the OpenStack Networking API,
|
||||
tenants can create additional networks that are only
|
||||
visible to users of that tenant. When creating VMs, those
|
||||
VMs can have NICs on any of the shared networks and/or any
|
||||
of the private networks belonging to the tenant. This
|
||||
enables the creation of "multi-tier" topologies using VMs
|
||||
with multiple NICs. It also supports a model where a VM
|
||||
acting as a gateway can provide services such as routing,
|
||||
NAT, or load balancing.</para>
|
||||
<figure>
|
||||
<title>Mixed Flat and Private Network</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image36.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel>Use Case: Provider Router with Private
|
||||
Networks</guilabel></para>
|
||||
<para>This use provides each tenant with one or more private
|
||||
networks, which connect to the outside world via an
|
||||
OpenStack Networking router. The case where each tenant
|
||||
gets exactly one network in this form maps to the same
|
||||
logical topology as the VlanManager in OpenStack Compute
|
||||
(of course, OpenStack Networking doesn't require VLANs).
|
||||
Using the OpenStack Networking API, the tenant would only
|
||||
see a network for each private network assigned to that
|
||||
tenant. The router object in the API is created and owned
|
||||
by the cloud admin.</para>
|
||||
<para>This model supports giving VMs public addresses using
|
||||
"floating IPs", in which the router maps public addresses
|
||||
from the external network to fixed IPs on private
|
||||
networks. Hosts without floating IPs can still create
|
||||
outbound connections to the external network, as the
|
||||
provider router performs SNAT to the router's external IP.
|
||||
The IP address of the physical router is used as the
|
||||
gateway_ip of the external network subnet, so the provider
|
||||
has a default router for Internet traffic.</para>
|
||||
<para>The router provides L3 connectivity between private
|
||||
networks, meaning that different tenants can reach each
|
||||
others instances unless additional filtering (e.g.,
|
||||
security groups) is used. Because there is only a single
|
||||
router, tenant networks cannot use overlapping IPs. Thus,
|
||||
it is likely that the admin would create the private
|
||||
networks on behalf of tenants.</para>
|
||||
<figure>
|
||||
<title>Provider Router with Private Networks</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image37.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><guilabel>Use Case: Per-tenant Routers with Private
|
||||
Networks</guilabel></para>
|
||||
<para>A more advanced router scenario in which each tenant
|
||||
gets at least one router, and potentially has access to
|
||||
the OpenStack Networking API to create additional routers.
|
||||
The tenant can create their own networks, potentially
|
||||
uplinking those networks to a router. This model enables
|
||||
tenant-defined multi-tier applications, with each tier
|
||||
being a separate network behind the router. Since there
|
||||
are multiple routers, tenant subnets can be overlapping
|
||||
without conflicting, since access to external networks all
|
||||
happens via SNAT or Floating IPs. Each router uplink and
|
||||
floating IP is allocated from the external network
|
||||
subnet.</para>
|
||||
<figure>
|
||||
<title>Per-tenant Routers with Private Networks</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/image38.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
</section>
|
||||
<section xml:id="security-in-neutron">
|
||||
<title>Security in Neutron</title>
|
||||
<para><guilabel>Security Groups</guilabel></para>
|
||||
<para>Security groups and security group rules allows
|
||||
administrators and tenants the ability to specify the type
|
||||
of traffic and direction (ingress/egress) that is allowed
|
||||
to pass through a port. A security group is a container
|
||||
for security group rules.</para>
|
||||
<para>When a port is created in OpenStack Networking it is
|
||||
associated with a security group. If a security group is
|
||||
not specified the port will be associated with a 'default'
|
||||
security group. By default this group will drop all
|
||||
ingress traffic and allow all egress. Rules can be added
|
||||
to this group in order to change the behaviour.</para>
|
||||
<para>If one desires to use the OpenStack Compute security
|
||||
group APIs and/or have OpenStack Compute orchestrate the
|
||||
creation of new ports for instances on specific security
|
||||
groups, additional configuration is needed. To enable
|
||||
this, one must configure the following file
|
||||
/etc/nova/nova.conf and set the config option
|
||||
security_group_api=neutron on every node running
|
||||
nova-compute and nova-api. After this change is made
|
||||
restart nova-api and nova-compute in order to pick up this
|
||||
change. After this change is made one will be able to use
|
||||
both the OpenStack Compute and OpenStack Network security
|
||||
group API at the same time.</para>
|
||||
<para><guilabel>Authentication and Authorization</guilabel></para>
|
||||
<para>OpenStack Networking uses the OpenStack Identity service
|
||||
(project name keystone) as the default authentication
|
||||
service. When OpenStack Identity is enabled Users
|
||||
submitting requests to the OpenStack Networking service
|
||||
must provide an authentication token in X-Auth-Token
|
||||
request header. The aforementioned token should have been
|
||||
obtained by authenticating with the OpenStack Identity
|
||||
endpoint. For more information concerning authentication
|
||||
with OpenStack Identity, please refer to the OpenStack
|
||||
Identity documentation. When OpenStack Identity is
|
||||
enabled, it is not mandatory to specify tenant_id for
|
||||
resources in create requests, as the tenant identifier
|
||||
will be derived from the Authentication token. Please note
|
||||
that the default authorization settings only allow
|
||||
administrative users to create resources on behalf of a
|
||||
different tenant. OpenStack Networking uses information
|
||||
received from OpenStack Identity to authorize user
|
||||
requests. OpenStack Networking handles two kind of
|
||||
authorization policies:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Operation-based:</emphasis>
|
||||
policies specify access criteria for specific
|
||||
operations, possibly with fine-grained control over
|
||||
specific attributes;</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold"
|
||||
>Resource-based:</emphasis>whether access to specific
|
||||
resource might be granted or not according to the
|
||||
permissions configured for the resource (currently
|
||||
available only for the network resource). The actual
|
||||
authorization policies enforced in OpenStack
|
||||
Networking might vary from deployment to
|
||||
deployment.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>The policy engine reads entries from the policy.json
|
||||
file. The actual location of this file might vary from
|
||||
distribution to distribution. Entries can be updated while
|
||||
the system is running, and no service restart is required.
|
||||
That is to say, every time the policy file is updated, the
|
||||
policies will be automatically reloaded. Currently the
|
||||
only way of updating such policies is to edit the policy
|
||||
file. Please note that in this section we will use both
|
||||
the terms "policy" and "rule" to refer to objects which
|
||||
are specified in the same way in the policy file; in other
|
||||
words, there are no syntax differences between a rule and
|
||||
a policy. We will define a policy something which is
|
||||
matched directly from the OpenStack Networking policy
|
||||
engine, whereas we will define a rule as the elements of
|
||||
such policies which are then evaluated. For instance in
|
||||
create_subnet: [["admin_or_network_owner"]], create_subnet
|
||||
is regarded as a policy, whereas admin_or_network_owner is
|
||||
regarded as a rule.</para>
|
||||
<para>Policies are triggered by the OpenStack Networking
|
||||
policy engine whenever one of them matches an OpenStack
|
||||
Networking API operation or a specific attribute being
|
||||
used in a given operation. For instance the create_subnet
|
||||
policy is triggered every time a POST /v2.0/subnets
|
||||
request is sent to the OpenStack Networking server; on the
|
||||
other hand create_network:shared is triggered every time
|
||||
the shared attribute is explicitly specified (and set to a
|
||||
value different from its default) in a POST /v2.0/networks
|
||||
request. It is also worth mentioning that policies can be
|
||||
also related to specific API extensions; for instance
|
||||
extension:provider_network:set will be triggered if the
|
||||
attributes defined by the Provider Network extensions are
|
||||
specified in an API request.</para>
|
||||
<para>An authorization policy can be composed by one or more
|
||||
rules. If more rules are specified, evaluation policy will
|
||||
be successful if any of the rules evaluates successfully;
|
||||
if an API operation matches multiple policies, then all
|
||||
the policies must evaluate successfully. Also,
|
||||
authorization rules are recursive. Once a rule is matched,
|
||||
the rule(s) can be resolved to another rule, until a
|
||||
terminal rule is reached.</para>
|
||||
<para>The OpenStack Networking policy engine currently defines
|
||||
the following kinds of terminal rules:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Role-based
|
||||
rules:</emphasis> evaluate successfully if the
|
||||
user submitting the request has the specified role.
|
||||
For instance "role:admin"is successful if the user
|
||||
submitting the request is an administrator.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Field-based
|
||||
rules:</emphasis> evaluate successfully if a field
|
||||
of the resource specified in the current request
|
||||
matches a specific value. For instance
|
||||
"field:networks:shared=True" is successful if the
|
||||
attribute shared of the network resource is set to
|
||||
true.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Generic
|
||||
rules:</emphasis>compare an attribute in the resource
|
||||
with an attribute extracted from the user's security
|
||||
credentials and evaluates successfully if the
|
||||
comparison is successful. For instance
|
||||
"tenant_id:%(tenant_id)s" is successful if the tenant
|
||||
identifier in the resource is equal to the tenant
|
||||
identifier of the user submitting the request.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="floating-ips">
|
||||
<title>Floating IP Addresses And Security Rules</title>
|
||||
<para>OpenStack Networking has the concept of Fixed IPs and
|
||||
Floating IPs. Fixed IPs are assigned to an instance on
|
||||
creation and stay the same until the instance is explicitly
|
||||
terminated. Floating ips are ip addresses that can be
|
||||
dynamically associated with an instance. This address can be
|
||||
disassociated and associated with another instance at any
|
||||
time.</para>
|
||||
<para>Various tasks carried out by Floating IP's as of
|
||||
now.</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>create IP ranges under a certain group, only
|
||||
available for admin role.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>allocate an floating IP to a certain tenant,
|
||||
only available for admin role.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>deallocate an floating IP from a certain
|
||||
tenant</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>associate an floating IP to a given
|
||||
instance</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>disassociate an floating IP from a certain
|
||||
instance</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Just as shown by above figure, we will have
|
||||
nova-network-api to support nova client floating
|
||||
commands. nova-network-api will invoke quantum cli lib
|
||||
to interactive with quantum server via API. The data
|
||||
about floating IPs will be store in to quantum DB.
|
||||
Quantum Agent, which is running on compute host will
|
||||
enforce the floating IP.</para>
|
||||
<para><guilabel>Multiple Floating
|
||||
IP Pools</guilabel></para>
|
||||
<para>The L3 API in OpenStack Networking supports multiple
|
||||
floating IP pools. In OpenStack Networking, a floating
|
||||
IP pool is represented as an external network and a
|
||||
floating IP is allocated from a subnet associated with
|
||||
the external network. Since each L3 agent can be
|
||||
associated with at most one external network, we need
|
||||
to invoke multiple L3 agent to define multiple
|
||||
floating IP pools. 'gateway_external_network_id'in L3
|
||||
agent configuration file indicates the external
|
||||
network that the L3 agent handles. You can run
|
||||
multiple L3 agent instances on one host.</para>
|
||||
<para>In addition, when you run multiple L3 agents, make
|
||||
sure that handle_internal_only_routersis set to
|
||||
Trueonly for one L3 agent in an OpenStack Networking
|
||||
deployment and set to Falsefor all other L3 agents.
|
||||
Since the default value of this parameter is True, you
|
||||
need to configure it carefully.</para>
|
||||
<para>Before starting L3 agents, you need to create
|
||||
routers and external networks, then update the
|
||||
configuration files with UUID of external networks and
|
||||
start L3 agents.</para>
|
||||
<para>For the first agent, invoke it with the following
|
||||
l3_agent.ini where handle_internal_only_routers is
|
||||
True.</para>
|
||||
</section>
|
||||
</section>
|
||||
@@ -1,50 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-network-node-install-neutron">
|
||||
<title>Install Neutron</title>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Network Diagram :</emphasis></para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<figure>
|
||||
<title>Network Diagram</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/lab000-virtual-box/image03.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
<para><emphasis role="bold">Vboxnet0</emphasis>, <emphasis
|
||||
role="bold">Vboxnet1</emphasis>, <emphasis role="bold"
|
||||
>Vboxnet2</emphasis> - are virtual networks setup up by virtual
|
||||
box with your host machine. This is the way your host can
|
||||
communicate with the virtual machines. These networks are in turn
|
||||
used by virtual box VM’s for OpenStack networks, so that
|
||||
OpenStack’s services can communicate with each other.</para>
|
||||
<para><guilabel>Network Node</guilabel></para>
|
||||
<para>Start your Controller Node the one you setup in previous
|
||||
section.</para>
|
||||
<para><emphasis role="bold">Preparing Ubuntu
|
||||
13.04/12.04</emphasis></para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>After you install Ubuntu Server, go in sudo mode</para>
|
||||
<para>
|
||||
<programlisting>$sudo su</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Add Grizzly repositories:</para>
|
||||
<para><programlisting>#apt-get install ubuntu-cloud-keyring python-software-properties software-properties-common python-keyring
|
||||
# echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main >> /etc/apt/sources.list.d/grizzly.list</programlisting></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Update your system:</para>
|
||||
<para><programlisting>#apt-get update
|
||||
#apt-get upgrade
|
||||
#apt-get dist-upgrade</programlisting></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-network-node-lab">
|
||||
<title>Lab</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-network-node-quiz">
|
||||
<title>Quiz</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-network-node">
|
||||
<title>Network Node</title>
|
||||
<xi:include href="associate-network-node-concept-neutron.xml"/>
|
||||
<xi:include href="associate-network-node-install-neutron.xml"/>
|
||||
<xi:include href="associate-network-node-lab.xml"/>
|
||||
<xi:include href="associate-network-node-quiz.xml"/>
|
||||
</chapter>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-review-concept">
|
||||
<title>Review of Conceptual Material</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</chapter>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,88 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-storage-node-install-swift">
|
||||
<title>Install Swift</title>
|
||||
<para>
|
||||
<emphasis role="bold">Starting Installation of Swift</emphasis>
|
||||
</para>
|
||||
<xi:include href="../install-guide/object-storage/section_object-storage-install.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'general-installation-steps-swift']/*[not(self::db:title)])">
|
||||
<xi:fallback>
|
||||
<para><mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/openstack-training-remote-content-not-available.png"
|
||||
format="PNG"/>
|
||||
</imageobject>
|
||||
</mediaobject>Remote content not available</para>
|
||||
<para>image source</para>
|
||||
<para><link
|
||||
xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing"
|
||||
>https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para>
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
<xi:include
|
||||
href="../install-guide/object-storage/section_object-storage-install-config-proxy-node.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'installing-and-configuring-the-proxy-node']/*[not(self::db:title)])">
|
||||
<xi:fallback>
|
||||
<para><mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/openstack-training-remote-content-not-available.png"
|
||||
format="PNG"/>
|
||||
</imageobject>
|
||||
</mediaobject>Remote content not available</para>
|
||||
<para>image source</para>
|
||||
<para><link
|
||||
xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing"
|
||||
>https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para>
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
<xi:include
|
||||
href="../install-guide/object-storage/section_object-storage-install-config-storage-nodes.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'installing-and-configuring-storage-nodes']/*[not(self::db:title)])">
|
||||
<xi:fallback>
|
||||
<para><mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/openstack-training-remote-content-not-available.png"
|
||||
format="PNG"/>
|
||||
</imageobject>
|
||||
</mediaobject>Remote content not available</para>
|
||||
<para>image source</para>
|
||||
<para><link
|
||||
xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing"
|
||||
>https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para>
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
<para><emphasis role="bold">Starting Services</emphasis></para>
|
||||
<xi:include href="../install-guide/object-storage/section_start-storage-node-services.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'start-storage-node-services']/*[not(self::db:title)])">
|
||||
<xi:fallback>
|
||||
<para><mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/openstack-training-remote-content-not-available.png"
|
||||
format="PNG"/>
|
||||
</imageobject>
|
||||
</mediaobject>Remote content not available</para>
|
||||
<para>image source</para>
|
||||
<para><link
|
||||
xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing"
|
||||
>https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para>
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
<para><emphasis role="bold">Finishing Up</emphasis></para>
|
||||
<xi:include href="../install-guide/object-storage/section_object-storage-verifying-install.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'verify-swift-installation']/*[not(self::db:title)])">
|
||||
<xi:fallback>
|
||||
<para><mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/openstack-training-remote-content-not-available.png"
|
||||
format="PNG"/>
|
||||
</imageobject>
|
||||
</mediaobject>Remote content not available</para>
|
||||
<para>image source</para>
|
||||
<para><link
|
||||
xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing"
|
||||
>https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para>
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-storage-node-lab">
|
||||
<title>Lab</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<section xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-storage-node-quiz">
|
||||
<title>Quiz</title>
|
||||
<para>foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
foobar foobar foobar foobar foobar foobar foobar foobar foobar foobar
|
||||
</para>
|
||||
</section>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-storage-node">
|
||||
<title>Storage Node</title>
|
||||
<xi:include href="associate-storage-node-concept-swift.xml"/>
|
||||
<xi:include href="associate-storage-node-install-swift.xml"/>
|
||||
<xi:include href="associate-storage-node-lab.xml"/>
|
||||
<xi:include href="associate-storage-node-quiz.xml"/>
|
||||
</chapter>
|
||||
@@ -3,11 +3,16 @@
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="bk001-associate-training-guide">
|
||||
<title>Associate Training Guide</title>
|
||||
<xi:include href="associate-getting-started.xml"></xi:include>
|
||||
<xi:include href="associate-controller-node.xml"></xi:include>
|
||||
<xi:include href="associate-compute-node.xml"></xi:include>
|
||||
<xi:include href="associate-network-node.xml"></xi:include>
|
||||
<xi:include href="associate-storage-node.xml"></xi:include>
|
||||
<xi:include href="associate-review-concept.xml"></xi:include>
|
||||
<xi:include href="associate-assessment.xml"></xi:include>
|
||||
<xi:include href="bk001-ch001-associate-getting-started.xml"></xi:include>
|
||||
<xi:include href="bk001-ch002-associate-getting-started-quiz.xml"></xi:include>
|
||||
<xi:include href="bk001-ch003-associate-controller-node.xml"></xi:include>
|
||||
<xi:include href="bk001-ch004-associate-controller-node-quiz.xml"></xi:include>
|
||||
<xi:include href="bk001-ch005-associate-compute-node.xml"></xi:include>
|
||||
<xi:include href="bk001-ch006-associate-compute-node-quiz.xml"></xi:include>
|
||||
<xi:include href="bk001-ch007-associate-network-node.xml"></xi:include>
|
||||
<xi:include href="bk001-ch008-associate-network-node-quiz.xml"></xi:include>
|
||||
<xi:include href="bk001-ch009-associate-storage-node.xml"></xi:include>
|
||||
<xi:include href="bk001-bk010-associate-storage-node-quiz.xml"></xi:include>
|
||||
<xi:include href="bk001-ch011-associate-assessment.xml"></xi:include>
|
||||
<xi:include href="bk001-ch012-associate-review-concept.xml"></xi:include>
|
||||
</book>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-storage-node-quiz">
|
||||
<title>Storage Node Quiz</title>
|
||||
<section xml:id="day-two-objstore-quiz-schedule">
|
||||
<title>Day 2, 14:25 to 14:45</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
58
doc/training-guide/bk001-ch001-associate-getting-started.xml
Normal file
58
doc/training-guide/bk001-ch001-associate-getting-started.xml
Normal file
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-getting-started">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Getting Started</title>
|
||||
<section xml:id="day-one-morning-schedule">
|
||||
<title>Day 1, 09:00 to 11:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
<section xml:id="getting-started-overview">
|
||||
<title>Overview</title>
|
||||
<para>Training will take 1 month self paced, (2) 2 week periods with a user group meeting,
|
||||
or 16 hours instructor led.</para>
|
||||
<para>Prerequisites</para>
|
||||
<orderedlist>
|
||||
<listitem><para>Working knowledge of Linux CLI, basic Linux SysAdmin skills (directory structure, vi, ssh,
|
||||
installing software)</para></listitem>
|
||||
<listitem><para>Basic networking knowledge (Ethernet, VLAN, IP addressing)</para></listitem>
|
||||
<listitem><para>Laptop with VirtualBox installed (highly recommended)</para></listitem>
|
||||
</orderedlist>
|
||||
</section>
|
||||
<section xml:id="intro-text">
|
||||
<title>Introduction Text</title>
|
||||
<xi:include href="./module001-ch001-intro-text.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch001-intro-text']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="brief-overview">
|
||||
<title>Brief Overview</title>
|
||||
<xi:include href="./module001-ch002-brief-overview.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch002-brief-overview']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="core-projects">
|
||||
<title>Core Projects</title>
|
||||
<xi:include href="./module001-ch003-core-projects.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch003-core-projects']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="openstack-architecture">
|
||||
<title>OpenStack Architecture</title>
|
||||
<xi:include href="./module001-ch004-openstack-architecture.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch004-openstack-architecture']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="vm-provisioning-walk-through">
|
||||
<title>Virtual Machine Provisioning Walk-Through</title>
|
||||
<xi:include href="./module001-ch005-vm-provisioning-walk-through.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch005-vm-provisioning-walk-through']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -1,60 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="bk001-ch001-associate-what-does-this-book-intend-to-teach">
|
||||
<title>OpenStack Associate, What Does This Book Intend to Teach</title>
|
||||
<para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>training would take 1 month self paced, (2) 2 week periods with a user group meeting,
|
||||
or 16 hours instructor led. Some time set aside for distro specific training.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>basic knowledge of core OpenStack components (Compute, Block, Network,
|
||||
Dashboard)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>create an instance</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>understand conf and log files</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>understand basics of APIs and framework architecture</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>understand shared components</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>work off a single node OpenStack implementation</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>get on IRC, mailing lists</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>able to deploy applications to OpenStack clouds</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>able to leverage basic functions including pools IPs and multiple disks</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>able to deploy multi-tier applications to OpenStack clouds</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>advanced knowledge of OpenStack components including new and incubated
|
||||
projects</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>able to create complicated network topologies</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>able to leverage advanced application topologies</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>able to operate and manage projects and elements via Horizon, and some
|
||||
CLI</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
<para><link xlink:href="https://blueprints.launchpad.net/openstack-manuals/+filebug" xlink:show="new">Submit a bug. Enter the summary as "Training, " with a few words. Be descriptive as possible in the description field. Open the tag pull-down and enter training-manuals.</link></para>
|
||||
</chapter>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-getting-started-quiz">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Getting Started Quiz</title>
|
||||
<section xml:id="day-one-getting-started-quiz-schedule">
|
||||
<title>Day 1, 10:40 to 11:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="bk002-ch001-associate-getting-started">
|
||||
<title>OpenStack Associate, Getting Started</title>
|
||||
<para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Knowledge and skills</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Materials and equipment</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
<para><link xlink:href="https://blueprints.launchpad.net/openstack-manuals/+filebug" xlink:show="new">Submit a bug. Enter the summary as "Training, " with a few words. Be descriptive as possible in the description field. Open the tag pull-down and enter training-manuals.</link></para>
|
||||
</chapter>
|
||||
38
doc/training-guide/bk001-ch003-associate-controller-node.xml
Normal file
38
doc/training-guide/bk001-ch003-associate-controller-node.xml
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-controller-node">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Controller Node</title>
|
||||
<section xml:id="day-one-late-morning-schedule">
|
||||
<title>Day 1, 11:15 to 12:30, 13:30 to 14:45</title>
|
||||
<para></para>
|
||||
</section>
|
||||
<section xml:id="overview-horizon-cli">
|
||||
<title>Overview Horizon and OpenStack CLI</title>
|
||||
<xi:include href="./module001-ch006-overview-horizon-cli.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch006-overview-horizon-cli']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="keystone-arch">
|
||||
<title>Keystone Architecture</title>
|
||||
<xi:include href="./module001-ch007-keystone-arch.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch007-keystone-arch']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="queues-messaging">
|
||||
<title>OpenStack Messaging and Queues</title>
|
||||
<xi:include href="./module001-ch008-queues-messaging.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch008-queues-messaging']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="controller-node-administration-tasks">
|
||||
<title>Administration Tasks</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="bk001-ch003-associate-general">
|
||||
<title>OpenStack Associate, General Material To Learn</title>
|
||||
<xi:include href="card007-core-overview.xml"></xi:include>
|
||||
<!-- <xi:include href="card008.xml"></xi:include>
|
||||
<xi:include href="card006.xml"></xi:include>
|
||||
<xi:include href="card009.xml"></xi:include>
|
||||
<xi:include href="card011.xml"></xi:include>
|
||||
<xi:include href="card025.xml"></xi:include>
|
||||
<xi:include href="card026-network-node-architecture.xml"></xi:include>
|
||||
<xi:include href="card037-rabbitmq.xml"></xi:include>
|
||||
<xi:include href="card038.xml"></xi:include>
|
||||
<xi:include href="card039-nova.xml"></xi:include>
|
||||
<xi:include href="card040-cinder.xml"></xi:include>
|
||||
<xi:include href="card041-neutron.xml"></xi:include>
|
||||
<xi:include href="card043-ovs-in-network-node.xml"></xi:include>
|
||||
<xi:include href="card044-install-and-configure-neutron-network-node.xml"></xi:include>
|
||||
<xi:include href="card045-configure-virtual-networking.xml"></xi:include>
|
||||
<xi:include href="card046-L3_Configuration_in_the_Network_Node.xml"></xi:include>
|
||||
<xi:include href="card047-install-nova-compute.xml"></xi:include>
|
||||
<xi:include href="card070-create-floating-ips.xml"></xi:include>
|
||||
<xi:include href="card071-create-cinder-horizon.xml"></xi:include>
|
||||
<xi:include href="card072-cinder-attach-volume.xml"></xi:include>
|
||||
<xi:include href="card073-control-state-instance.xml"></xi:include>
|
||||
<xi:include href="card074-horizon-snapshots.xml"></xi:include>
|
||||
<xi:include href="card126-horizon.xml"></xi:include>
|
||||
<xi:include href="card127-glance.xml"></xi:include>
|
||||
<xi:include href="card128-swift.xml"></xi:include>
|
||||
<xi:include href="associate-horizon-cli-operations.xml"></xi:include> -->
|
||||
</chapter>
|
||||
@@ -1,50 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-assessment">
|
||||
<title>Assessment</title>
|
||||
<para><table rules="all" width="1011">
|
||||
<caption>Assessment Question 1</caption>
|
||||
<col width="95%"/>
|
||||
<col width="05%"/>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Task</th>
|
||||
<th>Completed?</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<para>Configure a ....</para>
|
||||
</td>
|
||||
<td>
|
||||
<para/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table rules="all" width="1011">
|
||||
<caption>Assessment Question 2</caption>
|
||||
<col width="95%"/>
|
||||
<col width="05%"/>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Task</th>
|
||||
<th>Completed?</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<para>Configure a ....</para>
|
||||
</td>
|
||||
<td>
|
||||
<para/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</para>
|
||||
<para><link xlink:href="https://blueprints.launchpad.net/openstack-manuals/+filebug" xlink:show="new">Submit a bug. Enter the summary as "Training, " with a few words. Be descriptive as possible in the description field. Open the tag pull-down and enter training-manuals.</link></para>
|
||||
</chapter>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-controller-node-quiz">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Controller Node Quiz</title>
|
||||
<section xml:id="day-one-controller-quiz-schedule">
|
||||
<title>Day 1, 14:25 to 14:45</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
38
doc/training-guide/bk001-ch005-associate-compute-node.xml
Normal file
38
doc/training-guide/bk001-ch005-associate-compute-node.xml
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-computer-node">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Compute Node</title>
|
||||
<section xml:id="day-one-afternoon-schedule">
|
||||
<title>Day 1, 15:00 to 17:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
<section xml:id="vm-placement">
|
||||
<title>VM Placement</title>
|
||||
<xi:include href="./module001-ch009-vm-placement.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch009-vm-placement']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="vm-provisioning-indepth">
|
||||
<title>VM Provisioning Indepth</title>
|
||||
<xi:include href="./module001-ch010-vm-provisioning-indepth.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch010-vm-provisioning-indepth']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="block-storage">
|
||||
<title>OpenStack Block Storage</title>
|
||||
<xi:include href="./module001-ch011-block-storage.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module001-ch011-block-storage']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="compute-node-administration-tasks">
|
||||
<title>Administration Tasks</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-compute-node-quiz">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Compute Node Quiz</title>
|
||||
<section xml:id="day-one-compute-quiz-schedule">
|
||||
<title>Day 1, 16:40 to 17:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
31
doc/training-guide/bk001-ch007-associate-network-node.xml
Normal file
31
doc/training-guide/bk001-ch007-associate-network-node.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-network-node">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Network Node</title>
|
||||
<section xml:id="day-two-morning-schedule">
|
||||
<title>Day 2, 09:00 to 11:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
<section xml:id="networking-in-openstack">
|
||||
<title>Networking in OpenStack</title>
|
||||
<xi:include href="./module002-ch001-networking-in-openstack.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module002-ch001-networking-in-openstack']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="openstack-networking-concepts">
|
||||
<title>OpenStack Networking Concepts</title>
|
||||
<xi:include href="./module002-ch002-openstack-networking-concepts.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module002-ch002-openstack-networking-concepts']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="network-node-administration-tasks">
|
||||
<title>Administration Tasks</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-network-node-quiz">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Network Node Quiz</title>
|
||||
<section xml:id="day-two-network-quiz-schedule">
|
||||
<title>Day 2, 10:40 to 11:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
31
doc/training-guide/bk001-ch009-associate-storage-node.xml
Normal file
31
doc/training-guide/bk001-ch009-associate-storage-node.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="associate-storage-node">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Storage Node</title>
|
||||
<section xml:id="day-two-late-morning-schedule">
|
||||
<title>Day 2, 11:30 to 12:30, 13:30 to 14:45</title>
|
||||
<para></para>
|
||||
</section>
|
||||
<section xml:id="intro-objstore">
|
||||
<title>Introduction to Object Storage</title>
|
||||
<xi:include href="./module003-ch001-intro-objstore.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module003-ch001-intro-objectstore']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="objstore-features-benefits">
|
||||
<title>Features and Benefits</title>
|
||||
<xi:include href="./module003-ch002-features-benifits.xml"
|
||||
xpointer="xmlns(db=http://docbook.org/ns/docbook) xpath(//*[@xml:id = 'module003-ch002-features-benefits']/*[not(self::db:title)])">
|
||||
<xi:fallback><para><mediaobject><imageobject><imagedata fileref="figures/openstack-training-remote-content-not-available.png" format="PNG"/></imageobject></mediaobject>Remote content not available</para><para>image source</para><para><link xlink:href="https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing">https://docs.google.com/drawings/d/1J2LZSxmc06xKyxMgPjv5fC0blV7qK6956-AeTmFOZD4/edit?usp=sharing</link></para></xi:fallback>
|
||||
</xi:include>
|
||||
</section>
|
||||
<section xml:id="objstore-node-administration-tasks">
|
||||
<title>Administration Tasks</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -2,7 +2,14 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-assessment">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Assessment</title>
|
||||
<section xml:id="day-two-assessment-schedule">
|
||||
<title>Day 2, 15:00 to 16:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
<section xml:id="assessment">
|
||||
<title>Questions</title>
|
||||
<para><table rules="all" width="1011">
|
||||
<caption>Assessment Question 1</caption>
|
||||
<col width="95%"/>
|
||||
@@ -46,5 +53,5 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</para>
|
||||
<para><link xlink:href="https://blueprints.launchpad.net/openstack-manuals/+filebug" xlink:show="new">Submit a bug. Enter the summary as "Training, " with a few words. Be descriptive as possible in the description field. Open the tag pull-down and enter training-manuals.</link></para>
|
||||
</section>
|
||||
</chapter>
|
||||
11
doc/training-guide/bk001-ch012-associate-review-concept.xml
Normal file
11
doc/training-guide/bk001-ch012-associate-review-concept.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||||
xml:id="associate-review-concept">
|
||||
<?dbhtml stop-chunking?>
|
||||
<title>Review of Concepts</title>
|
||||
<section xml:id="day-two-review-schedule">
|
||||
<title>Day 2, 16:00 to 17:00</title>
|
||||
<para></para>
|
||||
</section>
|
||||
</chapter>
|
||||
@@ -4,7 +4,7 @@
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="5.0"
|
||||
xml:id="module001-ch007-keystone-arch">
|
||||
<title>Ketstone Architecture</title>
|
||||
<title>Keystone Architecture</title>
|
||||
<para>More Content To be Added ...</para>
|
||||
|
||||
<para><guilabel>Identity Service Concepts</guilabel></para>
|
||||
@@ -32,7 +32,7 @@
|
||||
directly assigned to a particular tenant and behave as if they
|
||||
are contained in that tenant.</para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.i1npk4aiu35h"/>Credentials</guilabel></para>
|
||||
<para><guilabel>Credentials</guilabel></para>
|
||||
<para>Data that is known only by a user that proves who they
|
||||
are. In the Identity Service, examples are:</para>
|
||||
<itemizedlist>
|
||||
@@ -48,7 +48,7 @@
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.aa29gdlbf7qa"/>Authentication</guilabel></para>
|
||||
<para><guilabel>Authentication</guilabel></para>
|
||||
<para>The act of confirming the identity of a user. The Identity
|
||||
Service confirms an incoming request by validating a set of
|
||||
credentials supplied by the user. These credentials are
|
||||
@@ -57,7 +57,7 @@
|
||||
the user an authentication token, which the user provides in
|
||||
subsequent requests.</para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.grqljkbnx8fs"/>Token</guilabel></para>
|
||||
<para><guilabel>Token</guilabel></para>
|
||||
<para>An arbitrary bit of text that is used to access resources.
|
||||
Each token has a scope which describes which resources are
|
||||
accessible with it. A token may be revoked at anytime and is
|
||||
@@ -68,26 +68,26 @@
|
||||
it to be an integration service foremost, and not aspire to be
|
||||
a full-fledged identity store and management solution.</para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.qz798xvt751f"/>Tenant</guilabel></para>
|
||||
<para><guilabel>Tenant</guilabel></para>
|
||||
<para>A container used to group or isolate resources and/or
|
||||
identity objects. Depending on the service operator, a tenant
|
||||
may map to a customer, account, organization, or
|
||||
project.</para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.ayp97sn984my"/>Service</guilabel></para>
|
||||
<para><guilabel>Service</guilabel></para>
|
||||
<para>An OpenStack service, such as Compute (Nova), Object
|
||||
Storage (Swift), or Image Service (Glance). Provides one or
|
||||
more endpoints through which users can access resources and
|
||||
perform operations.</para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.74y77xwdnwlm"/>Endpoint</guilabel></para>
|
||||
<para><guilabel>Endpoint</guilabel></para>
|
||||
<para>An network-accessible address, usually described by URL,
|
||||
from where you access a service. If using an extension for
|
||||
templates, you can create an endpoint template, which
|
||||
represents the templates of all the consumable services that
|
||||
are available across the regions.</para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.r7samiog05in"/>Role</guilabel></para>
|
||||
<para><guilabel>Role</guilabel></para>
|
||||
<para>A personality that a user assumes that enables them to
|
||||
perform a specific set of operations. A role includes a set of
|
||||
rights and privileges. A user assuming that role inherits
|
||||
@@ -106,7 +106,7 @@
|
||||
</mediaobject>
|
||||
</figure>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.rdpcpnbvn06w"/>User management</guilabel></para>
|
||||
<para><guilabel>User management</guilabel></para>
|
||||
<para>The main components of Identity user management are:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
@@ -162,11 +162,7 @@
|
||||
that there are no restrictions on which users can create
|
||||
volumes: if the user has any role in a tenant, they will be able
|
||||
to create volumes in that tenant.</para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.f5989v85c3fd"/></guilabel></para>
|
||||
|
||||
<para><guilabel><anchor xml:id="h.1rrjgvz0nkwh"/>Service
|
||||
management</guilabel></para>
|
||||
<para><guilabel>Service Management</guilabel></para>
|
||||
<para>The Identity Service provides the following service
|
||||
management functions:</para>
|
||||
<itemizedlist>
|
||||
@@ -183,5 +179,4 @@
|
||||
service.</para>
|
||||
<para>The commands for creating services and endpoints are
|
||||
described in a later section.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
<title>Neutron Use Cases</title>
|
||||
<para>As of now you must be wondering, how to use these awesome
|
||||
features that OpenStack Networking has given to us.</para>
|
||||
<para><guilabel><anchor xml:id="h.lrsgdytf1mh51"/>Use Case: Single Flat
|
||||
Network</guilabel></para>
|
||||
<para><guilabel>Use Case: Single Flat Network</guilabel></para>
|
||||
<para>In the simplest use case, a single OpenStack Networking
|
||||
network exists. This is a "shared" network, meaning it is
|
||||
visible to all tenants via the OpenStack Networking API.
|
||||
|
||||
@@ -201,4 +201,4 @@
|
||||
</tbody>
|
||||
</informaltable>
|
||||
</para>
|
||||
</chapter>
|
||||
</chapter>
|
||||
|
||||
Reference in New Issue
Block a user