Use SVG graphics in HTML docs
* Pre-convert SVG images to PDF with Inkscape * Do not pre-convert SVG to JPG, let Sphinx choose the best image format (SVG or PDF) * Optimize diagram scaling for consistent font sizing and clean PDF layouts Change-Id: I22285f5284f3c396ebe98392fca3dc731b01d6fa
This commit is contained in:
parent
0fea35a524
commit
6833250c86
|
@ -1,4 +1,5 @@
|
||||||
/_build
|
/_build
|
||||||
/_images/*_svg.png
|
/_images/*_svg.png
|
||||||
/_images/*_svg.jpg
|
/_images/*_svg.jpg
|
||||||
|
/_images/*.pdf
|
||||||
/.idea
|
/.idea
|
||||||
|
|
19
Makefile
19
Makefile
|
@ -15,9 +15,6 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||||
|
|
||||||
IMAGEDIRS = _images
|
IMAGEDIRS = _images
|
||||||
SVG2JPG = convert
|
|
||||||
# JPGs will be resized to 600px width
|
|
||||||
SVG2JPG_FLAGS = -resize 600x -quality 100%
|
|
||||||
|
|
||||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf pdf text man changes linkcheck doctest gettext
|
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf pdf text man changes linkcheck doctest gettext
|
||||||
|
|
||||||
|
@ -46,17 +43,17 @@ help:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -rf $(BUILDDIR)/*
|
-rm -rf $(BUILDDIR)/*
|
||||||
-@rm -f $(JPGs)
|
-@rm -f $(PDFs)
|
||||||
|
|
||||||
# Pattern rule for converting SVG to JPG
|
# Pattern rule for converting SVG to PDF
|
||||||
%_svg.jpg : %.svg
|
%.pdf : %.svg
|
||||||
$(SVG2JPG) $(SVG2JPG_FLAGS) $< $@
|
inkscape -f $< -A $@
|
||||||
|
|
||||||
# Build a list of SVG files to convert to JPGs
|
# Build a list of SVG files to convert to PDFs
|
||||||
JPGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%_svg.jpg,$(wildcard $(dir)/*.svg)))
|
PDFs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.pdf,$(wildcard $(dir)/*.svg)))
|
||||||
|
|
||||||
# Make a rule to build the JPGs
|
# Make a rule to build all images
|
||||||
images: $(JPGs)
|
images: $(PDFs)
|
||||||
|
|
||||||
all: clean html dirhtml singlehtml latexpdf pdf
|
all: clean html dirhtml singlehtml latexpdf pdf
|
||||||
|
|
||||||
|
|
10
README.md
10
README.md
|
@ -36,8 +36,9 @@ And Sphinx necessary extensions:
|
||||||
sudo pip install -r requirements.txt
|
sudo pip install -r requirements.txt
|
||||||
|
|
||||||
In addition to these eggs you will need to install
|
In addition to these eggs you will need to install
|
||||||
[PlantUML](http://plantuml.sourceforge.net/ "PlantUML") and
|
[PlantUML](http://plantuml.sourceforge.net/ "PlantUML"),
|
||||||
[ImageMagick](http://www.imagemagick.org/ "ImageMagick").
|
[ImageMagick](http://www.imagemagick.org/ "ImageMagick"), and
|
||||||
|
[Inkscape](http://inkscape.org/ "Inkscape").
|
||||||
|
|
||||||
To install PlantUML you run this wget process:
|
To install PlantUML you run this wget process:
|
||||||
|
|
||||||
|
@ -48,8 +49,9 @@ To install PlantUML you run this wget process:
|
||||||
PlantumUML requires java:
|
PlantumUML requires java:
|
||||||
sudo apt-get install openjdk-7-jre
|
sudo apt-get install openjdk-7-jre
|
||||||
|
|
||||||
To edit SVG images we use [Inkscape](http://inkscape.org/ "Inkscape") but
|
We use [Inkscape](http://inkscape.org/ "Inkscape") to edit SVG images
|
||||||
you may use any other SVG-capable tool you like. We're not picky.
|
and convert them to PDF but you may use any other SVG-capable tool you
|
||||||
|
like. We're not picky.
|
||||||
|
|
||||||
Building
|
Building
|
||||||
========
|
========
|
||||||
|
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 48 KiB |
|
@ -90,4 +90,6 @@ clouds:
|
||||||
Fuel is designed to maintain the OpenStack environment while providing
|
Fuel is designed to maintain the OpenStack environment while providing
|
||||||
the flexibility to adapt it to your configuration.
|
the flexibility to adapt it to your configuration.
|
||||||
|
|
||||||
.. image:: /_images/how-it-works_svg.jpg
|
.. image:: /_images/how-it-works.*
|
||||||
|
:width: 80%
|
||||||
|
:align: center
|
||||||
|
|
|
@ -47,7 +47,8 @@ In practice, Fuel works as follows:
|
||||||
Fuel is designed to enable you to maintain your environment, while giving you
|
Fuel is designed to enable you to maintain your environment, while giving you
|
||||||
the flexibility to adapt it to your own business needs and scale.
|
the flexibility to adapt it to your own business needs and scale.
|
||||||
|
|
||||||
.. image:: /_images/how-it-works_svg.jpg
|
.. image:: /_images/how-it-works.*
|
||||||
|
:width: 100%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Fuel comes with several pre-defined deployment configurations, plus
|
Fuel comes with several pre-defined deployment configurations, plus
|
||||||
|
|
|
@ -59,6 +59,7 @@ FlatDHCPManager (single-interface scheme)
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
.. image:: /_images/flatdhcpmanager-sh_scheme.jpg
|
.. image:: /_images/flatdhcpmanager-sh_scheme.jpg
|
||||||
|
:width: 100%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
In order for FlatDHCPManager to work, one designated switch port where each
|
In order for FlatDHCPManager to work, one designated switch port where each
|
||||||
|
@ -70,6 +71,10 @@ routed on the host machine according to the routing table. The default route
|
||||||
will point to the gateway specified on the networks tab in the UI as the
|
will point to the gateway specified on the networks tab in the UI as the
|
||||||
gateway for the Public network.
|
gateway for the Public network.
|
||||||
|
|
||||||
|
.. raw:: pdf
|
||||||
|
|
||||||
|
PageBreak
|
||||||
|
|
||||||
VLANManager
|
VLANManager
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -82,6 +87,7 @@ traffic from VMs of other projects. Again, like with FlatDHCPManager, switch
|
||||||
ports must be configured as tagged (trunk) ports to allow this scheme to work.
|
ports must be configured as tagged (trunk) ports to allow this scheme to work.
|
||||||
|
|
||||||
.. image:: /_images/vlanmanager_scheme.jpg
|
.. image:: /_images/vlanmanager_scheme.jpg
|
||||||
|
:width: 100%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
.. raw:: pdf
|
.. raw:: pdf
|
||||||
|
@ -104,7 +110,7 @@ Configuring the network
|
||||||
Once you choose a networking mode (FlatDHCP/VLAN), you must configure equipment
|
Once you choose a networking mode (FlatDHCP/VLAN), you must configure equipment
|
||||||
accordingly. The diagram below shows an example configuration.
|
accordingly. The diagram below shows an example configuration.
|
||||||
|
|
||||||
.. image:: /_images/physical-network.jpg
|
.. image:: /_images/physical-network.png
|
||||||
:width: 100%
|
:width: 100%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,8 @@ of compromises as to the number and types of services that you can
|
||||||
deploy. It is, however, extremely useful if you just want to see how
|
deploy. It is, however, extremely useful if you just want to see how
|
||||||
OpenStack works from a user's point of view.
|
OpenStack works from a user's point of view.
|
||||||
|
|
||||||
.. image:: /_images/deployment-simple_svg.jpg
|
.. image:: /_images/deployment-simple.*
|
||||||
|
:width: 60%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
More commonly, your OpenStack installation will consist of multiple
|
More commonly, your OpenStack installation will consist of multiple
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
.. raw:: pdf
|
|
||||||
|
|
||||||
PageBreak
|
|
||||||
|
|
||||||
.. index:: Reference Architectures: Multi-node with HA
|
.. index:: Reference Architectures: Multi-node with HA
|
||||||
|
|
||||||
.. _Multi-node_HA:
|
.. _Multi-node_HA:
|
||||||
|
@ -17,7 +13,8 @@ single points of failure. That's not to say, however, that you can't
|
||||||
reduce hardware requirements by combining your storage, network, and controller
|
reduce hardware requirements by combining your storage, network, and controller
|
||||||
nodes:
|
nodes:
|
||||||
|
|
||||||
.. image:: /_images/deployment-ha-compact_svg.jpg
|
.. image:: /_images/deployment-ha-compact.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
We'll take a closer look at the details of this deployment configuration in
|
We'll take a closer look at the details of this deployment configuration in
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
.. raw:: pdf
|
|
||||||
|
|
||||||
PageBreak
|
|
||||||
|
|
||||||
.. index:: Reference Architectures: Multi-node with HA Details
|
.. index:: Reference Architectures: Multi-node with HA Details
|
||||||
|
|
||||||
.. _Close_look_Multi-node_HA:
|
.. _Close_look_Multi-node_HA:
|
||||||
|
@ -9,13 +5,6 @@
|
||||||
Details of Multi-node with HA Deployment
|
Details of Multi-node with HA Deployment
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
In this section, you'll learn more about the Multi-node with HA
|
|
||||||
deployment configuration and how it achieves high availability. As you may
|
|
||||||
recall, this configuration looks something like this:
|
|
||||||
|
|
||||||
.. image:: /_images/deployment-ha-compact_svg.jpg
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
OpenStack services are interconnected by RESTful HTTP-based APIs and
|
OpenStack services are interconnected by RESTful HTTP-based APIs and
|
||||||
AMQP-based RPC messages. So redundancy for stateless OpenStack API
|
AMQP-based RPC messages. So redundancy for stateless OpenStack API
|
||||||
services is implemented through the combination of Virtual IP (VIP)
|
services is implemented through the combination of Virtual IP (VIP)
|
||||||
|
@ -25,7 +14,8 @@ rely on their respective active/active and active/passive modes for high availab
|
||||||
For example, RabbitMQ uses built-in clustering capabilities, while the
|
For example, RabbitMQ uses built-in clustering capabilities, while the
|
||||||
database uses MySQL/Galera replication.
|
database uses MySQL/Galera replication.
|
||||||
|
|
||||||
.. image:: /_images/ha-overview_svg.jpg
|
.. image:: /_images/ha-overview.*
|
||||||
|
:width: 100%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Lets take a closer look at what an OpenStack deployment looks like, and
|
Lets take a closer look at what an OpenStack deployment looks like, and
|
||||||
|
|
|
@ -48,7 +48,8 @@ of compromises as to the number and types of services that you can
|
||||||
deploy. It is, however, extremely useful if you just want to see how
|
deploy. It is, however, extremely useful if you just want to see how
|
||||||
OpenStack works from a user's point of view.
|
OpenStack works from a user's point of view.
|
||||||
|
|
||||||
.. image:: /_images/deployment-simple_svg.jpg
|
.. image:: /_images/deployment-simple.*
|
||||||
|
:width: 60%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
More commonly, your OpenStack installation will consist of multiple
|
More commonly, your OpenStack installation will consist of multiple
|
||||||
|
@ -74,7 +75,8 @@ single points of failure. That's not to say, however, that you can't
|
||||||
reduce hardware requirements by combining your storage, network, and controller
|
reduce hardware requirements by combining your storage, network, and controller
|
||||||
nodes:
|
nodes:
|
||||||
|
|
||||||
.. image:: /_images/deployment-ha-compact-red-hat_svg.jpg
|
.. image:: /_images/deployment-ha-compact-red-hat.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
OpenStack services are interconnected by RESTful HTTP-based APIs and AMQP-based
|
OpenStack services are interconnected by RESTful HTTP-based APIs and AMQP-based
|
||||||
|
@ -86,5 +88,6 @@ availability. For example, MySQL uses built-in replication capabilities (plus
|
||||||
the help of Pacemaker), while QPID is offered in three independent brokers with
|
the help of Pacemaker), while QPID is offered in three independent brokers with
|
||||||
virtual IP management to provide high availability.
|
virtual IP management to provide high availability.
|
||||||
|
|
||||||
.. image:: /_images/ha-overview-red-hat_svg.jpg
|
.. image:: /_images/ha-overview-red-hat.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
|
@ -21,7 +21,8 @@ You must keep in mind, however, that the database uses Galera to
|
||||||
achieve HA, and Galera is a quorum-based system. That means that you must provide
|
achieve HA, and Galera is a quorum-based system. That means that you must provide
|
||||||
at least 3 controller nodes.
|
at least 3 controller nodes.
|
||||||
|
|
||||||
.. image:: /_images/logical-diagram-controller.svg
|
.. image:: /_images/logical-diagram-controller.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Every OpenStack controller runs HAProxy, which manages a single External
|
Every OpenStack controller runs HAProxy, which manages a single External
|
||||||
|
@ -63,7 +64,8 @@ as RabbitMQ and MySQL. They use the same approach that provides
|
||||||
redundancy to the end-users of Horizon and REST APIs, reaching out to
|
redundancy to the end-users of Horizon and REST APIs, reaching out to
|
||||||
controller nodes using the VIP and going through HAProxy.
|
controller nodes using the VIP and going through HAProxy.
|
||||||
|
|
||||||
.. image:: /_images/logical-diagram-compute_svg.jpg
|
.. image:: /_images/logical-diagram-compute.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Storage Nodes
|
Storage Nodes
|
||||||
|
@ -76,5 +78,6 @@ achieve this, you are going to deploy Swift. This enables you to use
|
||||||
it not only for storing VM images, but also for any other objects such
|
it not only for storing VM images, but also for any other objects such
|
||||||
as user files.
|
as user files.
|
||||||
|
|
||||||
.. image:: /_images/logical-diagram-storage_svg.jpg
|
.. image:: /_images/logical-diagram-storage.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
|
@ -19,7 +19,8 @@ deployment is to allocate 4 nodes:
|
||||||
|
|
||||||
- 1 compute node
|
- 1 compute node
|
||||||
|
|
||||||
.. image:: /_images/deployment-ha-compact_svg.jpg
|
.. image:: /_images/deployment-ha-compact.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
If you want to run storage separately from the controllers, you can do that as
|
If you want to run storage separately from the controllers, you can do that as
|
||||||
|
@ -33,7 +34,8 @@ well by raising the bar to 9 nodes:
|
||||||
|
|
||||||
- 1 Compute node
|
- 1 Compute node
|
||||||
|
|
||||||
.. image:: /_images/deployment-ha-full_svg.jpg
|
.. image:: /_images/deployment-ha-full.*
|
||||||
|
:width: 80%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Of course, you are free to choose how to deploy OpenStack based on the
|
Of course, you are free to choose how to deploy OpenStack based on the
|
||||||
|
|
|
@ -83,7 +83,6 @@ NIC cards. They're utilized as follows:
|
||||||
|
|
||||||
The figure below illustrates the relevant nodes and networks in Neutron VLAN mode.
|
The figure below illustrates the relevant nodes and networks in Neutron VLAN mode.
|
||||||
|
|
||||||
.. image:: /_images/080-networking-diagram_svg.jpg
|
.. image:: /_images/080-networking-diagram.*
|
||||||
|
:width: 75%
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -94,18 +94,18 @@ like this:
|
||||||
|
|
||||||
The most likely configuration for different number NICs on cluster nodes:
|
The most likely configuration for different number NICs on cluster nodes:
|
||||||
|
|
||||||
+------+--------------------------------------------+--------------------------------------------+
|
+------+--------------------------------------+--------------------------------------+
|
||||||
| NICs | VLAN | GRE |
|
| NICs | VLAN | GRE |
|
||||||
+======+============================================+============================================+
|
+======+======================================+======================================+
|
||||||
| 2 | Not supported | .. image:: /_images/q32_gre_2nic_svg.jpg |
|
| 2 | Not supported | .. image:: /_images/q32_gre_2nic.* |
|
||||||
| | | :align: center |
|
| | | :align: center |
|
||||||
+------+--------------------------------------------+--------------------------------------------+
|
+------+--------------------------------------+--------------------------------------+
|
||||||
| 3 | .. image:: /_images/q32_vlan_3nic_svg.jpg | .. image:: /_images/q32_gre_3nic_svg.jpg |
|
| 3 | .. image:: /_images/q32_vlan_3nic.* | .. image:: /_images/q32_gre_3nic.* |
|
||||||
| | :align: center | :align: center |
|
| | :align: center | :align: center |
|
||||||
+------+--------------------------------------------+--------------------------------------------+
|
+------+--------------------------------------+--------------------------------------+
|
||||||
| 4 | .. image:: /_images/q32_vlan_4nic_svg.jpg | .. image:: /_images/q32_gre_4nic_svg.jpg |
|
| 4 | .. image:: /_images/q32_vlan_4nic.* | .. image:: /_images/q32_gre_4nic.* |
|
||||||
| | :align: center | :align: center |
|
| | :align: center | :align: center |
|
||||||
+------+--------------------------------------------+--------------------------------------------+
|
+------+--------------------------------------+--------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
Known limitations
|
Known limitations
|
||||||
|
|
Loading…
Reference in New Issue