Update headings, edits for consistency/clarity/ Install Guide

Partial-Bug: #1250515

backport: havana

Change-Id: I11117af7e13966f70e0050f96a7b2a1c4bcb59ca
author: diane fleming
This commit is contained in:
Diane Fleming 2013-11-19 09:42:38 -06:00 committed by Andreas Jaeger
parent 55b1ecab73
commit 4247c75744
13 changed files with 499 additions and 591 deletions

View File

@ -45,10 +45,10 @@
by using the <literal>controller</literal> and by using the <literal>controller</literal> and
<literal>compute1</literal> host names.</para> <literal>compute1</literal> host names.</para>
<!-- these fedora only paragraphs are confirmed not needed in centos --> <!-- these fedora only paragraphs are confirmed not needed in centos -->
<para os="fedora">Disable the <systemitem role="service" <para os="fedora">Disable the <systemitem class="service"
>NetworkManager</systemitem> service and enable the >NetworkManager</systemitem> service and enable the
<systemitem role="service">network</systemitem> service. The <systemitem class="service">network</systemitem> service. The
<systemitem role="service">network</systemitem> service is <systemitem class="service">network</systemitem> service is
more suitable for the static network configuration done in this more suitable for the static network configuration done in this
guide.</para> guide.</para>
@ -56,7 +56,6 @@
<prompt>#</prompt> <userinput>service network start</userinput> <prompt>#</prompt> <userinput>service network start</userinput>
<prompt>#</prompt> <userinput>chkconfig NetworkManager off</userinput> <prompt>#</prompt> <userinput>chkconfig NetworkManager off</userinput>
<prompt>#</prompt> <userinput>chkconfig network on</userinput></screen> <prompt>#</prompt> <userinput>chkconfig network on</userinput></screen>
<note os="fedora"> <note os="fedora">
<para>Since Fedora 19, <literal>firewalld</literal> replaces <para>Since Fedora 19, <literal>firewalld</literal> replaces
<literal>iptables</literal> as the default firewall <literal>iptables</literal> as the default firewall
@ -72,13 +71,12 @@
<prompt>#</prompt> <userinput>chkconfig firewalld off</userinput> <prompt>#</prompt> <userinput>chkconfig firewalld off</userinput>
<prompt>#</prompt> <userinput>chkconfig iptables on</userinput></screen> <prompt>#</prompt> <userinput>chkconfig iptables on</userinput></screen>
</note> </note>
<para os="opensuse;sles">When you set up your system, use the <para os="opensuse;sles">When you set up your system, use the
traditional network scripts and do not use <systemitem traditional network scripts and do not use <systemitem
role="service">NetworkManager</systemitem>. You can change the class="service">NetworkManager</systemitem>. You can change
settings after installation with the YaST network module:</para> the settings after installation with the YaST network
module:</para>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>yast2 network</userinput></screen> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>yast2 network</userinput></screen>
<para>Configure both <literal>eth0</literal> and <para>Configure both <literal>eth0</literal> and
<literal>eth1</literal>. The examples in this guide use the <literal>eth1</literal>. The examples in this guide use the
<literal>192.168.0.<replaceable>x</replaceable></literal> IP <literal>192.168.0.<replaceable>x</replaceable></literal> IP
@ -86,7 +84,6 @@
<literal>10.0.0.<replaceable>x</replaceable></literal> IP <literal>10.0.0.<replaceable>x</replaceable></literal> IP
addresses for the external network. Make sure to connect your addresses for the external network. Make sure to connect your
network devices to the correct network.</para> network devices to the correct network.</para>
<para>In this guide, the controller node uses the <para>In this guide, the controller node uses the
<literal>192.168.0.10</literal> and <literal>192.168.0.10</literal> and
<literal>10.0.0.10</literal> IP addresses. When you create the <literal>10.0.0.10</literal> IP addresses. When you create the
@ -103,7 +100,6 @@
</imageobject> </imageobject>
</mediaobject> </mediaobject>
</figure> </figure>
<example os="fedora"> <example os="fedora">
<title><filename>/etc/sysconfig/network-scripts/ifcfg-eth0</filename></title> <title><filename>/etc/sysconfig/network-scripts/ifcfg-eth0</filename></title>
<programlisting language="ini"># Internal Network <programlisting language="ini"># Internal Network
@ -115,7 +111,6 @@ NETMASK=255.255.255.0
DEFROUTE=yes DEFROUTE=yes
ONBOOT=yes</programlisting> ONBOOT=yes</programlisting>
</example> </example>
<example os="fedora"> <example os="fedora">
<title><filename>/etc/sysconfig/network-scripts/ifcfg-eth1</filename></title> <title><filename>/etc/sysconfig/network-scripts/ifcfg-eth1</filename></title>
<programlisting language="ini"># External Network <programlisting language="ini"># External Network
@ -127,7 +122,6 @@ NETMASK=255.255.255.0
DEFROUTE=yes DEFROUTE=yes
ONBOOT=yes</programlisting> ONBOOT=yes</programlisting>
</example> </example>
<para os="opensuse;sles">To configure the network interfaces, <para os="opensuse;sles">To configure the network interfaces,
start the YaST network module, as follows:</para> start the YaST network module, as follows:</para>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>yast2 network</userinput></screen> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>yast2 network</userinput></screen>
@ -189,72 +183,57 @@ iface eth1 inet static
older versions of Fedora, you set this in the file older versions of Fedora, you set this in the file
<filename>/etc/sysconfig/network</filename>. Change the line <filename>/etc/sysconfig/network</filename>. Change the line
starting with <literal>HOSTNAME=</literal>.</para> starting with <literal>HOSTNAME=</literal>.</para>
<programlisting language="ini" os="rhel;fedora;centos">HOSTNAME=controller</programlisting> <programlisting language="ini" os="rhel;fedora;centos">HOSTNAME=controller</programlisting>
<para os="fedora">As of Fedora 18, Fedora uses the <para os="fedora">As of Fedora 18, Fedora uses the
<filename>/etc/hostname</filename> file, which contains a <filename>/etc/hostname</filename> file, which contains a
single line with the host name.</para> single line with the host name.</para>
<para os="ubuntu;debian">To configure this host name to be <para os="ubuntu;debian">To configure this host name to be
available when the system reboots, you must specify it in the available when the system reboots, you must specify it in the
<filename>/etc/hostname</filename> file, which contains a <filename>/etc/hostname</filename> file, which contains a
single line with the host name.</para> single line with the host name.</para>
<para>Finally, ensure that each node can reach the other nodes by <para>Finally, ensure that each node can reach the other nodes by
using host names. You must manually edit the using host names. You must manually edit the
<filename>/etc/hosts</filename> file on each system. For <filename>/etc/hosts</filename> file on each system. For
large-scale deployments, use DNS or a configuration management large-scale deployments, use DNS or a configuration management
system like Puppet.</para> system like Puppet.</para>
<programlisting>127.0.0.1 localhost <programlisting>127.0.0.1 localhost
192.168.0.10 controller 192.168.0.10 controller
192.168.0.11 compute1</programlisting> 192.168.0.11 compute1</programlisting>
</section> </section>
<section xml:id="basics-ntp"> <section xml:id="basics-ntp">
<title>Network Time Protocol (NTP)</title> <title>Network Time Protocol (NTP)</title>
<para>To synchronize services across multiple machines, you must <para>To synchronize services across multiple machines, you must
install NTP. The examples in this guide configure the controller install NTP. The examples in this guide configure the controller
node as the reference server and any additional nodes to set node as the reference server and any additional nodes to set
their time from the controller node.</para> their time from the controller node.</para>
<para>Install the <literal>ntp</literal> package on each system <para>Install the <literal>ntp</literal> package on each system
running OpenStack services.</para> running OpenStack services.</para>
<screen os="ubuntu;debian"><prompt>#</prompt> <userinput>apt-get install ntp</userinput></screen> <screen os="ubuntu;debian"><prompt>#</prompt> <userinput>apt-get install ntp</userinput></screen>
<screen os="rhel;fedora;centos"><prompt>#</prompt> <userinput>yum install ntp</userinput></screen> <screen os="rhel;fedora;centos"><prompt>#</prompt> <userinput>yum install ntp</userinput></screen>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>zypper install ntp</userinput></screen> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>zypper install ntp</userinput></screen>
<para os="rhel;fedora;centos;opensuse;sles">Set up the NTP server <para os="rhel;fedora;centos;opensuse;sles">Set up the NTP server
on your controller node so that it receives data by modifying on your controller node so that it receives data by modifying
the <filename>ntp.conf</filename> file and restarting the the <filename>ntp.conf</filename> file and restarting the
service.</para> service.</para>
<screen os="rhel;fedora;centos;opensuse;sles"><prompt>#</prompt> <userinput>service ntpd start</userinput> <screen os="rhel;fedora;centos;opensuse;sles"><prompt>#</prompt> <userinput>service ntpd start</userinput>
<prompt>#</prompt> <userinput>chkconfig ntpd on</userinput></screen> <prompt>#</prompt> <userinput>chkconfig ntpd on</userinput></screen>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>service ntp start</userinput> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>service ntp start</userinput>
<prompt>#</prompt> <userinput>chkconfig ntp on</userinput></screen> <prompt>#</prompt> <userinput>chkconfig ntp on</userinput></screen>
<para>On additional nodes, it is advised that you configure the <para>On additional nodes, it is advised that you configure the
other nodes to synchronize their time from the controller node rather other nodes to synchronize their time from the controller node
than from outside of your LAN. To do so, install the ntp daemon as above, rather than from outside of your LAN. To do so, install the ntp
then edit <filename>/etc/ntp.conf</filename> and change the daemon as above, then edit <filename>/etc/ntp.conf</filename>
<code>server</code> directive to use the controller node as internet time and change the <code>server</code> directive to use the
source.</para> controller node as internet time source.</para>
</section> </section>
<section xml:id="basics-database"> <section xml:id="basics-database">
<title>MySQL database</title> <title>MySQL database</title>
<para os="ubuntu;debian;rhel;fedora;centos">Most OpenStack <para os="ubuntu;debian;rhel;fedora;centos">Most OpenStack
services require a database to store information. The examples services require a database to store information. These examples
in this guide use a MySQL database that runs on the controller use a MySQL database that runs on the controller node. You must
node. You must install the MySQL database on the controller install the MySQL database on the controller node. You must
node. You must install MySQL client software on any additional install MySQL client software on any additional nodes that
nodes that access MySQL:</para> access MySQL.</para>
<para os="opensuse;sles">Most OpenStack services require a <para os="opensuse;sles">Most OpenStack services require a
database to store information. This guide uses a MySQL database database to store information. This guide uses a MySQL database
on SUSE Linux Enterprise Server and a compatible database on on SUSE Linux Enterprise Server and a compatible database on
@ -267,37 +246,36 @@ iface eth1 inet static
<listitem> <listitem>
<para><phrase os="sles">For SUSE Linux Enterprise Server: <para><phrase os="sles">For SUSE Linux Enterprise Server:
</phrase> On the controller node, install the MySQL client, </phrase> On the controller node, install the MySQL client,
the MySQL database, and the MySQL Python library.</para> database, and Python library.</para>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>zypper install mysql-client mysql python-mysql</userinput></screen> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>zypper install mysql-client mysql python-mysql</userinput></screen>
<para os="opensuse">For openSUSE: On the controller node, <para os="opensuse">For openSUSE: On the controller node,
install the MariaDB client, the MariaDB database, and the install the MariaDB client and database, and the MySQL
MySQL Python library.</para> Python library.</para>
<screen os="opensuse"><prompt>#</prompt> <userinput>zypper install mariadb-client mariadb python-mysql</userinput></screen> <screen os="opensuse"><prompt>#</prompt> <userinput>zypper install mariadb-client mariadb python-mysql</userinput></screen>
<screen os="ubuntu;debian"><prompt>#</prompt> <userinput>apt-get install python-mysqldb mysql-server</userinput></screen> <screen os="ubuntu;debian"><prompt>#</prompt> <userinput>apt-get install python-mysqldb mysql-server</userinput></screen>
<screen os="rhel;fedora;centos"><prompt>#</prompt> <userinput>yum install mysql mysql-server MySQL-python</userinput></screen> <screen os="rhel;fedora;centos"><prompt>#</prompt> <userinput>yum install mysql mysql-server MySQL-python</userinput></screen>
<note os="ubuntu;debian"> <note os="ubuntu;debian">
<para>When you install the server package, you are prompted <para>When you install the server package, you are prompted
for the root password for the database. Be sure to choose for the root password for the database. Choose a strong
a strong password and remember it.</para> password and remember it.</para>
</note> </note>
<para>Edit <filename os="ubuntu;debian" <para>Edit <filename os="ubuntu;debian"
>/etc/mysql/my.cnf</filename><filename >/etc/mysql/my.cnf</filename><filename
os="opensuse;sles;rhel;fedora;centos" os="opensuse;sles;rhel;fedora;centos"
>/etc/my.cnf</filename> and set the >/etc/my.cnf</filename> and set the
<literal>bind-address</literal> to the internal IP address <literal>bind-address</literal> to the internal IP address
of the controller, to allow access from outside the of the controller, to enable access from outside the
controller node.</para> controller node.</para>
<programlisting language="ini"># Instead of skip-networking the default is now to listen only on <programlisting language="ini"># Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure. # localhost which is more compatible and is not less secure.
bind-address = 192.168.0.10</programlisting> bind-address = 192.168.0.10</programlisting>
<para os="ubuntu;debian">Restart the MySQL service to apply
<para os="ubuntu;debian">Restart the MySQL service to apply the the changes:</para>
changes:</para>
<screen os="ubuntu;debian"><prompt>#</prompt> <userinput>service mysql restart</userinput></screen> <screen os="ubuntu;debian"><prompt>#</prompt> <userinput>service mysql restart</userinput></screen>
</listitem> </listitem>
<listitem> <listitem>
<para>On any nodes besides the controller node, just install <para>On nodes other than the controller node, install the
the <phrase os="ubuntu;debian;rhel;fedora;centos" <phrase os="ubuntu;debian;rhel;fedora;centos"
>MySQL</phrase> >MySQL</phrase>
<phrase os="opensuse">MariaDB (on openSUSE)</phrase> client <phrase os="opensuse">MariaDB (on openSUSE)</phrase> client
and the MySQL Python library on any system that does not and the MySQL Python library on any system that does not
@ -319,22 +297,18 @@ bind-address = 192.168.0.10</programlisting>
<prompt>#</prompt> <userinput>chkconfig mysqld on</userinput></screen> <prompt>#</prompt> <userinput>chkconfig mysqld on</userinput></screen>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>service mysql start</userinput> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>service mysql start</userinput>
<prompt>#</prompt> <userinput>chkconfig mysql on</userinput></screen> <prompt>#</prompt> <userinput>chkconfig mysql on</userinput></screen>
<para os="rhel;centos;fedora;opensuse;sles">Finally, you should <para os="rhel;centos;fedora;opensuse;sles">Finally, you should
set a root password for your <phrase os="rhel;fedora;centos" set a root password for your <phrase os="rhel;fedora;centos"
>MySQL</phrase> >MySQL</phrase>
<phrase os="opensuse;sles">MariaDB or MySQL</phrase> database. <phrase os="opensuse;sles">MariaDB or MySQL</phrase> database.
The OpenStack programs that set up databases and tables prompt The OpenStack programs that set up databases and tables prompt
you for this password if it is set.</para> you for this password if it is set.</para>
<para os="ubuntu;debian;rhel;centos;fedora;opensuse;sles">You must <para os="ubuntu;debian;rhel;centos;fedora;opensuse;sles">You must
delete the anonymous users that are created when the database is delete the anonymous users that are created when the database is
first started. Otherwise, database connection problems occur first started. Otherwise, database connection problems occur
when you follow the instructions in this guide. To do this, use when you follow the instructions in this guide. To do this, use
the <command>mysql_secure_installation</command> command.</para> the <command>mysql_secure_installation</command> command.</para>
<screen os="ubuntu;debian;rhel;centos;fedora;opensuse;sles"><prompt>#</prompt> <userinput>mysql_secure_installation</userinput></screen> <screen os="ubuntu;debian;rhel;centos;fedora;opensuse;sles"><prompt>#</prompt> <userinput>mysql_secure_installation</userinput></screen>
<para><phrase os="rhel;centos;fedora;opensuse;sles">If you have <para><phrase os="rhel;centos;fedora;opensuse;sles">If you have
not already set a root database password, press not already set a root database password, press
<keycap>ENTER</keycap> when you are prompted for the <keycap>ENTER</keycap> when you are prompted for the
@ -342,26 +316,22 @@ bind-address = 192.168.0.10</programlisting>
for you to secure your database installation. Respond for you to secure your database installation. Respond
<userinput>yes</userinput> to all prompts unless you have a <userinput>yes</userinput> to all prompts unless you have a
good reason to do otherwise.</para> good reason to do otherwise.</para>
</section> </section>
<section xml:id="basics-packages"> <section xml:id="basics-packages">
<title>OpenStack packages</title> <title>OpenStack packages</title>
<para>Distributions might release OpenStack packages as part of <para>Distributions might release OpenStack packages as part of
their distribution or through other methods because the their distribution or through other methods because the
OpenStack and distribution release times are independent of each OpenStack and distribution release times are independent of each
other.</para> other.</para>
<para>This section describes the additional configuration you must <para>This section describes the configuration you must
complete after you configure machines to install the latest complete after you configure machines to install the latest
OpenStack packages.</para> OpenStack packages.</para>
<para os="fedora;centos;rhel">The examples in this guide use the <para os="fedora;centos;rhel">The examples in this guide use the
OpenStack packages from the RDO repository. These packages work OpenStack packages from the RDO repository. These packages work
on Red Hat Enterprise Linux 6, compatible versions of CentOS, on Red Hat Enterprise Linux 6, compatible versions of CentOS,
and Fedora 19. To enable the RDO repository, download and and Fedora 19. To enable the RDO repository, download and
install the <package>rdo-release-havana</package> install the <package>rdo-release-havana</package>
package.</para> package.</para>
<screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>yum install http://repos.fedorapeople.org/repos/openstack/openstack-havana/rdo-release-havana-6.noarch.rpm</userinput></screen> <screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>yum install http://repos.fedorapeople.org/repos/openstack/openstack-havana/rdo-release-havana-6.noarch.rpm</userinput></screen>
<para os="fedora;centos;rhel">The EPEL package includes GPG keys <para os="fedora;centos;rhel">The EPEL package includes GPG keys
for package signing and repository information. This should only for package signing and repository information. This should only
@ -372,23 +342,20 @@ bind-address = 192.168.0.10</programlisting>
>http://download.fedoraproject.org/pub/epel/6/x86_64/repoview/epel-release.html</link>). >http://download.fedoraproject.org/pub/epel/6/x86_64/repoview/epel-release.html</link>).
For example:</para> For example:</para>
<screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</userinput></screen> <screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</userinput></screen>
<para os="fedora;centos;rhel">The <para os="fedora;centos;rhel">The
<package>openstack-utils</package> package contains utility <package>openstack-utils</package> package contains utility
programs that make installation and configuration easier. These programs that make installation and configuration easier. These
programs are used throughout this guide. Install programs are used throughout this guide. Install
<package>openstack-utils</package>. This verifies that you can <package>openstack-utils</package>. This verifies that you can
access the RDO repository.</para> access the RDO repository.</para>
<screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>yum install openstack-utils</userinput></screen> <screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>yum install openstack-utils</userinput></screen>
<para os="opensuse;sles">Use the Open Build Service repositories <para os="opensuse;sles">Use the Open Build Service repositories
for Havana based on your openSUSE or SUSE Linux Enterprise for Havana based on your openSUSE or SUSE Linux Enterprise
Server version, for example if you run openSUSE 12.3 use:</para> Server version, for example if you run openSUSE 12.3 use:</para>
<screen os="opensuse"><prompt>#</prompt> <userinput>zypper addrepo -f obs://Cloud:OpenStack:Havana/openSUSE_12.3 Havana</userinput></screen> <screen os="opensuse"><prompt>#</prompt> <userinput>zypper addrepo -f obs://Cloud:OpenStack:Havana/openSUSE_12.3 Havana</userinput></screen>
<para os="sles"> If you use SUSE Linux Enterprise Server 11 SP3, <para os="sles"> If you use SUSE Linux Enterprise Server 11 SP3,
use: use:</para>
<screen><prompt>#</prompt> <userinput>zypper addrepo -f obs://Cloud:OpenStack:Havana/SLE_11_SP3 Havana</userinput></screen></para> <screen os="sles"><prompt>#</prompt> <userinput>zypper addrepo -f obs://Cloud:OpenStack:Havana/SLE_11_SP3 Havana</userinput></screen>
<para os="opensuse">For openSUSE 13.1, nothing needs to be done <para os="opensuse">For openSUSE 13.1, nothing needs to be done
because OpenStack Havana packages are part of the distribution because OpenStack Havana packages are part of the distribution
itself.</para> itself.</para>
@ -397,9 +364,7 @@ bind-address = 192.168.0.10</programlisting>
configuration easier. These programs are used throughout this configuration easier. These programs are used throughout this
guide. Install <package>openstack-utils</package>. This verifies guide. Install <package>openstack-utils</package>. This verifies
that you can access the Open Build Service repository:</para> that you can access the Open Build Service repository:</para>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>zypper install openstack-utils</userinput></screen> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>zypper install openstack-utils</userinput></screen>
<procedure xml:id="ubuntu-cloud-archive" os="ubuntu"> <procedure xml:id="ubuntu-cloud-archive" os="ubuntu">
<title>To use the Ubuntu Cloud Archive for Havana</title> <title>To use the Ubuntu Cloud Archive for Havana</title>
<para>The <link <para>The <link
@ -417,7 +382,6 @@ bind-address = 192.168.0.10</programlisting>
<screen><prompt>#</prompt> <userinput>apt-get update &amp;&amp; apt-get dist-upgrade</userinput> </screen></para> <screen><prompt>#</prompt> <userinput>apt-get update &amp;&amp; apt-get dist-upgrade</userinput> </screen></para>
</step> </step>
</procedure> </procedure>
<procedure xml:id="debian-cloud-archive" os="debian"> <procedure xml:id="debian-cloud-archive" os="debian">
<title>To use the Debian Wheezy backports archive for <title>To use the Debian Wheezy backports archive for
Havana</title> Havana</title>

View File

@ -3,7 +3,7 @@
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="ch_horizon"> xml:id="ch_horizon">
<title>Add a dashboard</title> <title>Add the dashboard</title>
<para>The OpenStack dashboard, also known as <link <para>The OpenStack dashboard, also known as <link
xlink:href="https://github.com/openstack/horizon/" xlink:href="https://github.com/openstack/horizon/"
>Horizon</link>, is a Web interface that enables cloud >Horizon</link>, is a Web interface that enables cloud

View File

@ -27,7 +27,7 @@
linkend="basics-packages"/>.</para> linkend="basics-packages"/>.</para>
<warning> <warning>
<para>If you previously set up networking for your compute node by using <para>If you previously set up networking for your compute node by using
<systemitem role="service" <systemitem class="service"
>nova-network</systemitem>, this configuration >nova-network</systemitem>, this configuration
overrides those settings.</para> overrides those settings.</para>
</warning> </warning>

View File

@ -45,7 +45,7 @@
</mediaobject> </mediaobject>
</figure> </figure>
<para>Technical details: Compute with KVM, local ephemeral <para>Technical details: Compute with KVM, local ephemeral
storage, <systemitem role="service">nova-network</systemitem> in multi-host flatDHCP mode, MySQL, storage, <systemitem class="service">nova-network</systemitem> in multi-host flatDHCP mode, MySQL,
nova-api, default scheduler, <phrase os="fedora;rhel;centos" nova-api, default scheduler, <phrase os="fedora;rhel;centos"
>Qpid for messaging,</phrase><phrase >Qpid for messaging,</phrase><phrase
os="ubuntu;debian;opensuse">RabbitMQ for os="ubuntu;debian;opensuse">RabbitMQ for
@ -58,7 +58,7 @@
xlink:href="http://docs.openstack.org/trunk/openstack-ops/content/" xlink:href="http://docs.openstack.org/trunk/openstack-ops/content/"
><citetitle>OpenStack Operations ><citetitle>OpenStack Operations
Guide</citetitle></link>. Same as the basic architecture Guide</citetitle></link>. Same as the basic architecture
but with the Block Storage Service LVM/iSCSI back end, <systemitem role="service">nova-network</systemitem> in but with the Block Storage Service LVM/iSCSI back end, <systemitem class="service">nova-network</systemitem> in
multi-host with FlatDHCP, Live Migration back end, shared multi-host with FlatDHCP, Live Migration back end, shared
storage with NFS, and Object Storage. One controller node storage with NFS, and Object Storage. One controller node
and multiple compute nodes.</para> and multiple compute nodes.</para>

View File

@ -4,7 +4,6 @@
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"> xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<?dbhtml-stop-chunking?> <?dbhtml-stop-chunking?>
<title>System requirements</title> <title>System requirements</title>
<para><emphasis role="bold">Hardware</emphasis>: OpenStack Object <para><emphasis role="bold">Hardware</emphasis>: OpenStack Object
Storage is designed to run on commodity hardware.</para> Storage is designed to run on commodity hardware.</para>
@ -77,14 +76,13 @@
requests.</para> requests.</para>
<para>Optimize your proxy servers for best CPU <para>Optimize your proxy servers for best CPU
performance. The Proxy Services are more CPU performance. The Proxy Services are more CPU
and network I/O intensive. If you are using and network I/O intensive. If you are using 10
10g networking to the proxy, or are GB networking to the proxy, or are terminating
terminating SSL traffic at the proxy, greater SSL traffic at the proxy, greater CPU power is
CPU power will be required.</para></td> required.</para></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<para><emphasis role="bold">Operating system</emphasis>: OpenStack <para><emphasis role="bold">Operating system</emphasis>: OpenStack
Object Storage currently runs on Ubuntu, RHEL, CentOS, Fedora, Object Storage currently runs on Ubuntu, RHEL, CentOS, Fedora,
openSUSE, or SLES.</para> openSUSE, or SLES.</para>

View File

@ -43,16 +43,14 @@
</note> </note>
<note os="debian"> <note os="debian">
<title>Note for Debian users</title> <title>Note for Debian users</title>
<para>To install the Apache package:</para>
<para>It is as well possible to install the apache
package:
<screen><prompt>#</prompt> <userinput>apt-get install openstack-dashboard-apache</userinput></screen> <screen><prompt>#</prompt> <userinput>apt-get install openstack-dashboard-apache</userinput></screen>
This will install and configure Apache correctly, <para>This command installs and configures Apache
provided that the user asks for it during the correctly, provided that the user asks for it
debconf prompts. The default SSL certificate is during the <package>debconf</package> prompts. The
self-signed, and it is probably wise to have it default SSL certificate is self-signed, and it is
signed by a root CA (Certificate probably wise to have it signed by a root
Authority).</para> Certificate Authority (CA).</para>
</note> </note>
</step> </step>
<step> <step>
@ -178,8 +176,8 @@
<prompt>#</prompt> <userinput>service memcached restart</userinput></screen> <prompt>#</prompt> <userinput>service memcached restart</userinput></screen>
</step> </step>
<step> <step>
<para>You can now access the dashboard at <uri <para>You can now access the dashboard at <uri os="ubuntu"
os="ubuntu">http://controller/horizon</uri> >http://controller/horizon</uri>
<uri os="debian">https://controller/</uri> <uri os="debian">https://controller/</uri>
<uri os="centos;fedora;rhel" <uri os="centos;fedora;rhel"
>http://controller/dashboard</uri> >http://controller/dashboard</uri>

View File

@ -46,8 +46,8 @@
database. The examples in this guide use the MySQL database database. The examples in this guide use the MySQL database
that is used by other OpenStack services.</para> that is used by other OpenStack services.</para>
<para>Configure the location of the database. The Image Service <para>Configure the location of the database. The Image Service
provides the <systemitem role="service" provides the <systemitem class="service"
>glance-api</systemitem> and <systemitem role="service" >glance-api</systemitem> and <systemitem class="service"
>glance-registry</systemitem> services, each with its own >glance-registry</systemitem> services, each with its own
configuration file. You must update both configuration files configuration file. You must update both configuration files
throughout this section. Replace throughout this section. Replace
@ -61,25 +61,21 @@
<filename>/etc/glance/glance-api.conf</filename> and <filename>/etc/glance/glance-api.conf</filename> and
<filename>/etc/glance/glance-registry.conf</filename> and <filename>/etc/glance/glance-registry.conf</filename> and
change the <literal>[DEFAULT]</literal> section.</para> change the <literal>[DEFAULT]</literal> section.</para>
<programlisting os="ubuntu;debian" language="ini"> <programlisting os="ubuntu;debian" language="ini">...
...
[DEFAULT] [DEFAULT]
... ...
# SQLAlchemy connection string for the reference implementation # SQLAlchemy connection string for the reference implementation
# registry server. Any valid SQLAlchemy connection string is fine. # registry server. Any valid SQLAlchemy connection string is fine.
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine # See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
sql_connection = mysql://glance:GLANCE_DBPASS@<replaceable>controller</replaceable>/glance sql_connection = mysql://glance:GLANCE_DBPASS@<replaceable>controller</replaceable>/glance
... ...</programlisting>
</programlisting>
</step> </step>
<step os="rhel;centos;fedora;opensuse;sles"> <step os="rhel;centos;fedora;opensuse;sles">
<para>Use the <command>openstack-db</command> command to create <para>Use the <command>openstack-db</command> command to create
the Image Service database and tables and a the Image Service database and tables and a
<literal>glance</literal> database user:</para> <literal>glance</literal> database user:</para>
<screen><prompt>#</prompt> <userinput>openstack-db --init --service glance --password <replaceable>GLANCE_DBPASS</replaceable></userinput></screen> <screen><prompt>#</prompt> <userinput>openstack-db --init --service glance --password <replaceable>GLANCE_DBPASS</replaceable></userinput></screen>
</step> </step>
<step os="ubuntu"> <step os="ubuntu">
<para>By default, the Ubuntu packages create an SQLite database. <para>By default, the Ubuntu packages create an SQLite database.
Delete the <filename>glance.sqlite</filename> file created in Delete the <filename>glance.sqlite</filename> file created in
@ -96,12 +92,10 @@ IDENTIFIED BY '<replaceable>GLANCE_DBPASS</replaceable>';</userinput>
<prompt>mysql></prompt> <userinput>GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \ <prompt>mysql></prompt> <userinput>GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY '<replaceable>GLANCE_DBPASS</replaceable>';</userinput></screen> IDENTIFIED BY '<replaceable>GLANCE_DBPASS</replaceable>';</userinput></screen>
</step> </step>
<step os="ubuntu"> <step os="ubuntu">
<para>Create the database tables for the Image Service:</para> <para>Create the database tables for the Image Service:</para>
<screen><prompt>#</prompt> <userinput>glance-manage db_sync</userinput></screen> <screen><prompt>#</prompt> <userinput>glance-manage db_sync</userinput></screen>
</step> </step>
<step os="rhel;centos;fedora;opensuse;sles;ubuntu"> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Create a <literal>glance</literal> user that the Image <para>Create a <literal>glance</literal> user that the Image
Service can use to authenticate with the Identity Service. Service can use to authenticate with the Identity Service.
@ -116,7 +110,6 @@ IDENTIFIED BY '<replaceable>GLANCE_DBPASS</replaceable>';</userinput></screen>
<step os="rhel;centos;fedora;opensuse;sles;ubuntu"> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Add the credentials to the Image Service configuration <para>Add the credentials to the Image Service configuration
files:</para> files:</para>
<screen os="centos;rhel;fedora;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ <screen os="centos;rhel;fedora;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
auth_host <replaceable>controller</replaceable></userinput> auth_host <replaceable>controller</replaceable></userinput>
<prompt>#</prompt> <userinput>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \ <prompt>#</prompt> <userinput>openstack-config --set /etc/glance/glance-api.conf keystone_authtoken \
@ -159,7 +152,6 @@ admin_password = GLANCE_PASS
<prompt>#</prompt> <userinput>cp /usr/share/glance/glance-api-dist-paste.ini /etc/glance/glance-api-paste.ini</userinput> <prompt>#</prompt> <userinput>cp /usr/share/glance/glance-api-dist-paste.ini /etc/glance/glance-api-paste.ini</userinput>
<prompt>#</prompt> <userinput>cp /usr/share/glance/glance-registry-dist-paste.ini /etc/glance/glance-registry-paste.ini</userinput> <prompt>#</prompt> <userinput>cp /usr/share/glance/glance-registry-dist-paste.ini /etc/glance/glance-registry-paste.ini</userinput>
</screen> </screen>
<para>Edit each file to set the following options in the <para>Edit each file to set the following options in the
<literal>[filter:authtoken]</literal> section:</para> <literal>[filter:authtoken]</literal> section:</para>
<programlisting language="ini">[filter:authtoken] <programlisting language="ini">[filter:authtoken]
@ -169,7 +161,6 @@ admin_user=glance
admin_tenant_name=service admin_tenant_name=service
admin_password=<replaceable>GLANCE_PASS</replaceable></programlisting> admin_password=<replaceable>GLANCE_PASS</replaceable></programlisting>
</step> </step>
<step os="rhel;centos;fedora;opensuse;sles;ubuntu"> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Register the Image Service with the Identity Service so <para>Register the Image Service with the Identity Service so
that other OpenStack services can locate it. Register the that other OpenStack services can locate it. Register the
@ -186,17 +177,15 @@ admin_password=<replaceable>GLANCE_PASS</replaceable></programlisting>
--internalurl=http://<replaceable>controller</replaceable>:9292 \ --internalurl=http://<replaceable>controller</replaceable>:9292 \
--adminurl=http://<replaceable>controller</replaceable>:9292</userinput></screen> --adminurl=http://<replaceable>controller</replaceable>:9292</userinput></screen>
</step> </step>
<step os="ubuntu"> <step os="ubuntu">
<para>Restart the <systemitem role="service">glance</systemitem> <para>Restart the <systemitem class="service">glance</systemitem>
service with its new settings.</para> service with its new settings.</para>
<screen><prompt>#</prompt> <userinput>service glance-registry restart</userinput> <screen><prompt>#</prompt> <userinput>service glance-registry restart</userinput>
<prompt>#</prompt> <userinput>service glance-api restart</userinput></screen> <prompt>#</prompt> <userinput>service glance-api restart</userinput></screen>
</step> </step>
<step os="rhel;fedora;centos;opensuse;sles"> <step os="rhel;fedora;centos;opensuse;sles">
<para>Start the <systemitem role="service" <para>Start the <systemitem class="service"
>glance-api</systemitem> and <systemitem role="service" >glance-api</systemitem> and <systemitem class="service"
>glance-registry</systemitem> services and configure them to >glance-registry</systemitem> services and configure them to
start when the system boots:</para> start when the system boots:</para>
<screen os="rhel;fedora;centos;opensuse;sles"><prompt>#</prompt> <userinput>service openstack-glance-api start</userinput> <screen os="rhel;fedora;centos;opensuse;sles"><prompt>#</prompt> <userinput>service openstack-glance-api start</userinput>

View File

@ -21,8 +21,9 @@
Guide</citetitle></link>.</para> Guide</citetitle></link>.</para>
<procedure> <procedure>
<step> <step>
<para>Download the image into a dedicated <para>Download the image into a dedicated directory using
directory using <command>wget</command> or <command>curl</command>:</para> <command>wget</command> or
<command>curl</command>:</para>
<screen><prompt>$</prompt> <userinput>mkdir images</userinput> <screen><prompt>$</prompt> <userinput>mkdir images</userinput>
<prompt>$</prompt> <userinput>cd images/</userinput> <prompt>$</prompt> <userinput>cd images/</userinput>
<prompt>$</prompt> <userinput>wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img</userinput></screen> <prompt>$</prompt> <userinput>wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img</userinput></screen>
@ -36,9 +37,8 @@
<varlistentry> <varlistentry>
<term><literal><replaceable>imageLabel</replaceable></literal></term> <term><literal><replaceable>imageLabel</replaceable></literal></term>
<listitem> <listitem>
<para>Arbitrary label. This is the name by <para>Arbitrary label. The name by which users
which users will refer to the refer to the image.</para>
image.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
@ -87,13 +87,12 @@
<listitem> <listitem>
<para>Specifies image access: <itemizedlist> <para>Specifies image access: <itemizedlist>
<listitem> <listitem>
<para>true - All users will be able <para>true - All users can view and
to view and use the image.</para> use the image.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>false - Only administrators <para>false - Only administrators
will be able to view and use the can view and use the image.</para>
image.</para>
</listitem> </listitem>
</itemizedlist></para> </itemizedlist></para>
</listitem> </listitem>

View File

@ -29,8 +29,8 @@
</step> </step>
<step> <step>
<para>In the configuration file, specify the location of the <para>In the configuration file, specify the location of the
database where the Orchestration service stores data. The database where the Orchestration service stores data. These
examples in this guide use a MySQL database with a examples use a MySQL database with a
<literal>heat</literal> user on the controller node. Replace <literal>heat</literal> user on the controller node. Replace
<replaceable>HEAT_DBPASS</replaceable> with the password for <replaceable>HEAT_DBPASS</replaceable> with the password for
the database user:</para> the database user:</para>
@ -46,12 +46,12 @@ connection = mysql://heat:<replaceable>HEAT_DBPASS</replaceable>@controller/heat
</step> </step>
<step os="ubuntu"> <step os="ubuntu">
<para>By default, the Ubuntu packages create an SQLite database. <para>By default, the Ubuntu packages create an SQLite database.
Delete the <filename>heat.sqlite</filename> file created in Delete the <filename>heat.sqlite</filename> file that was created in
the <filename>/var/lib/heat/</filename> directory so that it the <filename>/var/lib/heat/</filename> directory so that it
does not get used by mistake.</para> does not get used by mistake.</para>
</step> </step>
<step> <step>
<para>Use the password you set previously to log in as root and <para>Use the password that you set previously to log in as <literal>root</literal> and
create a <literal>heat</literal> database user:</para> create a <literal>heat</literal> database user:</para>
<screen><prompt>#</prompt> <userinput>mysql -u root -p</userinput> <screen><prompt>#</prompt> <userinput>mysql -u root -p</userinput>
<prompt>mysql></prompt> <userinput>CREATE DATABASE heat;</userinput> <prompt>mysql></prompt> <userinput>CREATE DATABASE heat;</userinput>
@ -83,14 +83,12 @@ verbose = True
log_dir=/var/log/heat</programlisting> log_dir=/var/log/heat</programlisting>
</step> </step>
<step os="opensuse;sles;ubuntu"> <step os="opensuse;sles;ubuntu">
<para>Configure the Orchestration Service to use the RabbitMQ message <para>Configure the Orchestration Service to use the RabbitMQ
broker.</para> message broker.</para>
<para os="ubuntu">Edit <filename>/etc/heat/heat.conf</filename>
<para os="ubuntu">Edit <filename>/etc/heat/heat.conf</filename> and and modify the <literal>[DEFAULT]</literal> section:</para>
modify the <literal>[DEFAULT]</literal> section:</para>
<programlisting os="ubuntu" language="ini">rabbit_host = controller <programlisting os="ubuntu" language="ini">rabbit_host = controller
rabbit_password = <replaceable>RABBIT_PASS</replaceable></programlisting> rabbit_password = <replaceable>RABBIT_PASS</replaceable></programlisting>
<para os="opensuse;sles">Run the following commands:</para> <para os="opensuse;sles">Run the following commands:</para>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/heat/heat.conf DEFAULT rabbit_host controller</userinput> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/heat/heat.conf DEFAULT rabbit_host controller</userinput>
<prompt>#</prompt> <userinput>openstack-config --set /etc/heat/heat.conf DEFAULT rabbit_password <replaceable>RABBIT_PASS</replaceable></userinput></screen> <prompt>#</prompt> <userinput>openstack-config --set /etc/heat/heat.conf DEFAULT rabbit_password <replaceable>RABBIT_PASS</replaceable></userinput></screen>
@ -104,10 +102,10 @@ rabbit_password = <replaceable>RABBIT_PASS</replaceable></programlisting>
<prompt>#</prompt> <userinput>keystone user-role-add --user=heat --tenant=service --role=admin</userinput></screen> <prompt>#</prompt> <userinput>keystone user-role-add --user=heat --tenant=service --role=admin</userinput></screen>
</step> </step>
<step> <step>
<para>Edit the <filename>/etc/heat/heat.conf</filename> file <para>Edit the <filename>/etc/heat/heat.conf</filename> file to
and change the <literal>[keystone_authtoken]</literal> and change the <literal>[keystone_authtoken]</literal> and
<literal>[ec2_authtoken]</literal> sections to add credentials <literal>[ec2_authtoken]</literal> sections to add
to the Orchestration Service:</para> credentials to the Orchestration Service:</para>
<programlisting language="ini">[keystone_authtoken] <programlisting language="ini">[keystone_authtoken]
auth_host = controller auth_host = controller
auth_port = 35357 auth_port = 35357
@ -155,12 +153,11 @@ keystone_ec2_uri = http://<replaceable>controller</replaceable>:5000/v2.0/ec2tok
<prompt>#</prompt> <userinput>service heat-engine restart</userinput></screen> <prompt>#</prompt> <userinput>service heat-engine restart</userinput></screen>
</step> </step>
<step os="rhel;fedora;centos;opensuse;sles"> <step os="rhel;fedora;centos;opensuse;sles">
<para>Start the <systemitem role="service" <para>Start the <systemitem class="service"
>heat-api</systemitem>, <systemitem role="service" >heat-api</systemitem>, <systemitem class="service"
class="service">heat-api-cfn</systemitem> and <systemitem >heat-api-cfn</systemitem> and <systemitem class="service"
role="service" class="service">heat-engine</systemitem> >heat-engine</systemitem> services and configure them to
services and configure them to start when the system start when the system boots:</para>
boots:</para>
<screen os="rhel;fedora;centos;opensuse;sles"><prompt>#</prompt> <userinput>service openstack-heat-api start</userinput> <screen os="rhel;fedora;centos;opensuse;sles"><prompt>#</prompt> <userinput>service openstack-heat-api start</userinput>
<prompt>#</prompt> <userinput>service openstack-heat-api-cfn start</userinput> <prompt>#</prompt> <userinput>service openstack-heat-api-cfn start</userinput>
<prompt>#</prompt> <userinput>service openstack-heat-engine start</userinput> <prompt>#</prompt> <userinput>service openstack-heat-engine start</userinput>

View File

@ -3,21 +3,19 @@
xml:id="keystone-services" xml:id="keystone-services"
os="rhel;centos;fedora;opensuse;sles;ubuntu"> os="rhel;centos;fedora;opensuse;sles;ubuntu">
<title>Define services and API endpoints</title> <title>Define services and API endpoints</title>
<para>The Identity Service also tracks what OpenStack services are <para>The Identity Service also tracks what OpenStack services are
installed and where to locate them on the network. For each service installed and where to locate them on the network. For each
on your OpenStack installation, you must call service on your OpenStack installation, you must call
<command>keystone service-create</command> to describe the service <command>keystone service-create</command> to describe the
and <command>keystone endpoint-create</command> to specify the API service and <command>keystone endpoint-create</command> to specify
endpoints associated with the service.</para> the API endpoints associated with the service.</para>
<para>For now, create a service for the Identity Service itself that
<para>For now, create a service for the Identity Service itself. uses normal authentication instead of the authorization token when
This will allow you to stop using the authorization token and instead you run the <command>keystone</command> command in the
use normal authentication when using the <command>keystone</command> future.</para>
command in the future.</para> <procedure>
<step>
<para>First, create a service entry for the Identity Service.</para> <para>Create a service entry for the Identity Service:</para>
<screen><prompt>#</prompt> <userinput>keystone service-create --name=keystone --type=identity \ <screen><prompt>#</prompt> <userinput>keystone service-create --name=keystone --type=identity \
--description="Keystone Identity Service"</userinput> --description="Keystone Identity Service"</userinput>
<computeroutput>+-------------+----------------------------------+ <computeroutput>+-------------+----------------------------------+
@ -28,16 +26,16 @@
| name | keystone | | name | keystone |
| type | identity | | type | identity |
+-------------+----------------------------------+</computeroutput></screen> +-------------+----------------------------------+</computeroutput></screen>
<para>The service ID is randomly generated and is different from
<para>The service id is randomly generated, and will be different the one shown here.</para>
from the one shown above when you run the command. Next, specify </step>
an API endpoint for the Identity Service using the service id you <step>
received. When you specify an endpoint, you provide three URLs <para>Specify an API endpoint for the Identity Service by using
for the public API, the internal API, and the admin API. In this the returned service ID. When you specify an endpoint, you
guide, we use the hostname <literal>controller</literal>. Note provide URLs for the public API, internal API, and admin API.
that the Identity Service uses a different port for the admin In this guide, the <literal>controller</literal> host name is
API.</para> used. Note that the Identity Service uses a different port for
the admin API.</para>
<screen><prompt>#</prompt> <userinput>keystone endpoint-create \ <screen><prompt>#</prompt> <userinput>keystone endpoint-create \
--service-id=<replaceable>the_service_id_above</replaceable> \ --service-id=<replaceable>the_service_id_above</replaceable> \
--publicurl=http://<replaceable>controller</replaceable>:5000/v2.0 \ --publicurl=http://<replaceable>controller</replaceable>:5000/v2.0 \
@ -52,12 +50,12 @@
| publicurl | http://controller:5000/v2.0 | | publicurl | http://controller:5000/v2.0 |
| region | regionOne | | region | regionOne |
| service_id | 15c11a23667e427e91bc31335b45f4bd | | service_id | 15c11a23667e427e91bc31335b45f4bd |
+-------------+-----------------------------------+ +-------------+-----------------------------------+</computeroutput></screen>
</computeroutput> </step>
</screen> <step>
<para>As you add other services to your OpenStack installation,
<para>As you add other services to your OpenStack installation, you call these commands to register the services with the Identity
will call these commands again to register those services with the Service.</para>
Identity Service.</para> </step>
</procedure>
</section> </section>

View File

@ -262,8 +262,9 @@ admin_password = <replaceable>NEUTRON_PASS</replaceable></programlisting>
<step os="opensuse;sles;ubuntu"> <step os="opensuse;sles;ubuntu">
<para>Configure the RabbitMQ access. Edit the <para>Configure the RabbitMQ access. Edit the
<filename>/etc/neutron/neutron.conf</filename> file to modify the <filename>/etc/neutron/neutron.conf</filename> file to
following parameters in the <literal>DEFAULT</literal> section.</para> modify the following parameters in the
<literal>DEFAULT</literal> section.</para>
<programlisting language="ini">rabbit_host = controller <programlisting language="ini">rabbit_host = controller
rabbit_userid = guest rabbit_userid = guest
rabbit_password = <replaceable>RABBIT_PASS</replaceable></programlisting> rabbit_password = <replaceable>RABBIT_PASS</replaceable></programlisting>
@ -352,7 +353,8 @@ admin_password=<replaceable>NEUTRON_PASS</replaceable></programlisting>
<screen os="debian;rhel;fedora;centos"><prompt>#</prompt> <userinput>service openvswitch start</userinput></screen> <screen os="debian;rhel;fedora;centos"><prompt>#</prompt> <userinput>service openvswitch start</userinput></screen>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>service openvswitch-switch start</userinput></screen> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>service openvswitch-switch start</userinput></screen>
<para os="rhel;fedora;centos;opensuse;sles">And configure it to start when the system boots:</para> <para os="rhel;fedora;centos;opensuse;sles">And configure
it to start when the system boots:</para>
<screen os="rhel;fedora;centos"><prompt>#</prompt> <userinput>chkconfig openvswitch on</userinput></screen> <screen os="rhel;fedora;centos"><prompt>#</prompt> <userinput>chkconfig openvswitch on</userinput></screen>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>chkconfig openvswitch-switch on</userinput></screen> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>chkconfig openvswitch-switch on</userinput></screen>
</step> </step>
@ -401,81 +403,89 @@ GATEWAY=EXTERNAL_INTERFACE_GATEWAY</programlisting>
<!-- TODO(sross): support other distros --> <!-- TODO(sross): support other distros -->
<step> <step>
<para>You must set some common configuration options no <para>You must set some common configuration options no
matter which networking technology you choose to use with matter which networking technology you choose to use
Open vSwitch. Configure the L3 and DHCP agents to use with Open vSwitch. Configure the L3 and DHCP agents to
<acronym>OVS</acronym> and namespaces. Edit the use <acronym>OVS</acronym> and namespaces. Edit the
<filename>/etc/neutron/l3_agent.ini</filename> and <filename>/etc/neutron/l3_agent.ini</filename> and
<filename>/etc/neutron/dhcp_agent.ini</filename> <filename>/etc/neutron/dhcp_agent.ini</filename>
files, respectively:</para> files, respectively:</para>
<programlisting language="ini">interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver <programlisting language="ini">interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True</programlisting> use_namespaces = True</programlisting>
<para os="rhel;centos">You must enable veth support if you <para os="rhel;centos">You must enable veth support if you
use certain kernels. Some kernels, such as recent versions use certain kernels. Some kernels, such as recent
of RHEL (not RHOS) and CentOS, only partially support versions of RHEL (not RHOS) and CentOS, only partially
namespaces. Edit the previous support namespaces. Edit the previous files, as
files, as follows:</para> follows:</para>
<programlisting language="ini" os="rhel;centos">ovs_use_veth = True</programlisting> <programlisting language="ini" os="rhel;centos">ovs_use_veth = True</programlisting>
</step> </step>
<step os="rhel;centos;fedora;opensuse;sles;ubuntu"> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Similarly, you must also tell Neutron core to use <para>Similarly, you must also tell Neutron core to use
<acronym>OVS</acronym>. Edit the <acronym>OVS</acronym>. Edit the
<filename>/etc/neutron/neutron.conf</filename> file:</para> <filename>/etc/neutron/neutron.conf</filename>
file:</para>
<programlisting language="ini">core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2</programlisting> <programlisting language="ini">core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2</programlisting>
</step> </step>
<step> <step>
<para>Choose a networking technology to create the virtual networks. <para>Choose a networking technology to create the virtual
Neutron supports GRE tunneling, VLANs, and VXLANs. This guide networks. Neutron supports GRE tunneling, VLANs, and
shows how to configure GRE tunneling and VLANs.</para> VXLANs. This guide shows how to configure GRE tunneling
and VLANs.</para>
<para> <para>
<link linkend="install-neutron.install-plug-in.ovs.gre">GRE <link linkend="install-neutron.install-plug-in.ovs.gre"
tunneling</link> is simpler to set up because it does not >GRE tunneling</link> is simpler to set up because it
require any special configuration from any physical network does not require any special configuration from any
hardware. However, its protocol makes it difficult to filter physical network hardware. However, its protocol makes
traffic on the physical network. Additionally, this configuration it difficult to filter traffic on the physical network.
does not use namespaces. You can have only one router for each Additionally, this configuration does not use
network node. However, you can enable namespacing, and potentially namespaces. You can have only one router for each
veth, as described in the section detailing how to use VLANs with network node. However, you can enable namespacing, and
<acronym>OVS</acronym>).</para> potentially veth, as described in the section detailing
how to use VLANs with <acronym>OVS</acronym>).</para>
<note os="ubuntu"> <note os="ubuntu">
<para>On Ubuntu 12.04 LTS with GRE you must install <para>On Ubuntu 12.04 LTS with GRE you must install
openvswitch-datapath-dkms and restart the service to enable the openvswitch-datapath-dkms and restart the service to
GRE flow so that OVS 1.10 and higher is used. Make sure you are enable the GRE flow so that OVS 1.10 and higher is
running the OVS 1.10 kernel module in addition to the OVS 1.10 used. Make sure you are running the OVS 1.10 kernel
userspace. Both the kernel module and userspace are required for module in addition to the OVS 1.10 userspace. Both the
VXLAN support. The error you see in the kernel module and userspace are required for VXLAN
<filename>/var/log/openvswitchovs-vswitchd.log</filename> log support. The error you see in the
file is "Stderr: 'ovs-ofctl: -1: negative values not supported <filename>/var/log/openvswitchovs-vswitchd.log</filename>
for in_port\n'". If you see this error, make sure log file is "Stderr: 'ovs-ofctl: -1: negative values
<command>modinfo openvswitch</command> shows the right not supported for in_port\n'". If you see this error,
version. Also check the output from <command>dmesg</command> for make sure <command>modinfo openvswitch</command> shows
the version of the OVS module being loaded.</para> the right version. Also check the output from
<command>dmesg</command> for the version of the OVS
module being loaded.</para>
</note> </note>
<para>On the other hand, <link <para>On the other hand, <link
linkend="install-neutron.install-plug-in.ovs.vlan">VLAN linkend="install-neutron.install-plug-in.ovs.vlan"
tagging</link> modifies the ethernet header of packets. You can >VLAN tagging</link> modifies the ethernet header of
filter packets on the physical network through normal methods. packets. You can filter packets on the physical network
However, not all NICs handle the increased packet size of through normal methods. However, not all NICs handle the
VLAN-tagged packets well, and you might need to complete increased packet size of VLAN-tagged packets well, and
additional configuration on physical network hardware to ensure you might need to complete additional configuration on
that your Neutron VLANs do not interfere with any other VLANs on physical network hardware to ensure that your Neutron
your network and that any physical network hardware between nodes VLANs do not interfere with any other VLANs on your
does not strip VLAN tags.</para> network and that any physical network hardware between
nodes does not strip VLAN tags.</para>
<note> <note>
<para>While the examples in this guide enable network namespaces <para>While the examples in this guide enable network
by default, you can disable them if issues occur or your kernel namespaces by default, you can disable them if issues
does not support them. Edit the occur or your kernel does not support them. Edit the
<filename>/etc/neutron/l3_agent.ini</filename> and <filename>/etc/neutron/l3_agent.ini</filename> and
<filename>/etc/neutron/dhcp_agent.ini</filename> files, <filename>/etc/neutron/dhcp_agent.ini</filename>
respectively:</para> files, respectively:</para>
<programlisting language="ini">use_namespaces = False</programlisting> <programlisting language="ini">use_namespaces = False</programlisting>
<para>Edit the <filename>/etc/neutron/neutron.conf</filename> file <para>Edit the
<filename>/etc/neutron/neutron.conf</filename> file
to disable overlapping IP addresses:</para> to disable overlapping IP addresses:</para>
<programlisting language="ini">allow_overlapping_ips = False</programlisting> <programlisting language="ini">allow_overlapping_ips = False</programlisting>
<para>Note that when network namespaces are disabled, you can have <para>Note that when network namespaces are disabled,
only one router for each network node and overlapping IP you can have only one router for each network node and
addresses are not supported.</para> overlapping IP addresses are not supported.</para>
<para>You must complete additional steps after you create the <para>You must complete additional steps after you
initial Neutron virtual networks and router.</para> create the initial Neutron virtual networks and
router.</para>
</note> </note>
</step> </step>
<!-- TODO(sross): support provider networks? you need to modify things above for this to work --> <!-- TODO(sross): support provider networks? you need to modify things above for this to work -->
@ -762,10 +772,12 @@ router_id = <replaceable>EXT_TO_INT_ID</replaceable></programlisting>
<para>Disable packet destination filtering (route <para>Disable packet destination filtering (route
verification) to let the networking services route traffic verification) to let the networking services route traffic
to the VMs. Edit the <filename>/etc/sysctl.conf</filename> to the VMs. Edit the <filename>/etc/sysctl.conf</filename>
file and run the following command to activate changes:</para> file and run the following command to activate
changes:</para>
<programlisting language="ini">net.ipv4.conf.all.rp_filter=0 <programlisting language="ini">net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0</programlisting> net.ipv4.conf.default.rp_filter=0</programlisting>
<screen><prompt>#</prompt> <userinput>sysctl -p</userinput></screen></step> <screen><prompt>#</prompt> <userinput>sysctl -p</userinput></screen>
</step>
<step> <step>
<para>Install and configure your networking plug-in <para>Install and configure your networking plug-in
components. To install and configure the network plug-in components. To install and configure the network plug-in
@ -915,8 +927,8 @@ firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewal
<para>After you complete OVS configuration <emphasis>and <para>After you complete OVS configuration <emphasis>and
the core Neutron configuration after this the core Neutron configuration after this
section</emphasis>, restart the Neutron Open vSwitch section</emphasis>, restart the Neutron Open vSwitch
agent<phrase os="opensuse;sles;fedora;centos;rhel">, and set it agent<phrase os="opensuse;sles;fedora;centos;rhel">,
to start at boot</phrase>:</para> and set it to start at boot</phrase>:</para>
<screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>service neutron-openvswitch-agent restart</userinput> <screen os="fedora;centos;rhel"><prompt>#</prompt> <userinput>service neutron-openvswitch-agent restart</userinput>
<prompt>#</prompt> <userinput>chkconfig neutron-openvswitch-agent on</userinput></screen> <prompt>#</prompt> <userinput>chkconfig neutron-openvswitch-agent on</userinput></screen>
<screen os="opensuse;sles"><prompt>#</prompt> <userinput>service openstack-neutron-openvswitch-agent restart</userinput> <screen os="opensuse;sles"><prompt>#</prompt> <userinput>service openstack-neutron-openvswitch-agent restart</userinput>
@ -1061,9 +1073,8 @@ admin_password = <replaceable>NEUTRON_PASS</replaceable></programlisting>
</step> </step>
<step> <step>
<para>Tell Nova about Neutron. Specifically, you must tell <para>Tell Nova about Neutron. Specifically, you must tell
Nova that Neutron will be handling networking and the Nova that Neutron handles networking and the firewall. Edit
firewall. Edit the <filename>/etc/nova/nova.conf</filename> the <filename>/etc/nova/nova.conf</filename> file:</para>
file:</para>
<programlisting language="ini">network_api_class=nova.network.neutronv2.api.API <programlisting language="ini">network_api_class=nova.network.neutronv2.api.API
neutron_url=http://<replaceable>controller</replaceable>:9696 neutron_url=http://<replaceable>controller</replaceable>:9696
neutron_auth_strategy=keystone neutron_auth_strategy=keystone
@ -1075,8 +1086,8 @@ firewall_driver=nova.virt.firewall.NoopFirewallDriver
security_group_api=neutron</programlisting> security_group_api=neutron</programlisting>
<note> <note>
<para>Regardless of which firewall driver you chose when you <para>Regardless of which firewall driver you chose when you
configure the network and compute nodes, set this driver configured the network and compute nodes, set this driver
as the No-Op firewall. The difference is that this is a as the No-Op firewall. This firewall is a
<emphasis>Nova</emphasis> firewall, and because Neutron <emphasis>Nova</emphasis> firewall, and because Neutron
handles the Firewall, you must tell Nova not to use handles the Firewall, you must tell Nova not to use
one.</para> one.</para>

View File

@ -52,7 +52,7 @@
<literal>True</literal> in the configuration file for <literal>True</literal> in the configuration file for
each agent. The default is <literal>True</literal>.</para> each agent. The default is <literal>True</literal>.</para>
</note> </note>
<para>The following table describes the nodes:</para> <para>This table describes the nodes:</para>
<informaltable rules="all" width="100%"> <informaltable rules="all" width="100%">
<col width="20%"/> <col width="20%"/>
<col width="80%"/> <col width="80%"/>
@ -128,7 +128,8 @@
</listitem> </listitem>
<listitem> <listitem>
<para>Glance is installed, configured, and running. In <para>Glance is installed, configured, and running. In
addition, an image named tty must be present.</para> addition, an image named <literal>tty</literal> must
be present.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Identity is installed, configured, and running. A <para>Identity is installed, configured, and running. A
@ -142,44 +143,40 @@
<para>Additional services: <itemizedlist> <para>Additional services: <itemizedlist>
<listitem> <listitem>
<para>RabbitMQ is running with default guest <para>RabbitMQ is running with default guest
and its password</para> and its password.</para>
</listitem> </listitem>
<listitem <listitem
os="rhel;centos;fedora;opensuse;sles;ubuntu"> os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>MySQL server (user is <emphasis <para>MySQL server (user is <emphasis
role="bold">root</emphasis> and role="bold">root</emphasis> and
password is <emphasis role="bold" password is <emphasis role="bold"
>root</emphasis>)</para> >root</emphasis>).</para>
</listitem> </listitem>
</itemizedlist></para> </itemizedlist></para>
</listitem> </listitem>
</orderedlist> </orderedlist>
<para><emphasis role="bold">Compute node</emphasis></para> <para><emphasis role="bold">Compute node</emphasis></para>
<para>Compute is installed and configured.</para> <para>Install and configure Compute.</para>
<section xml:id="demo_routers_with_private_networks_installions"> <section xml:id="demo_routers_with_private_networks_installions">
<title>Install</title> <title>Install</title>
<para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para><emphasis role="bold">Controller <para><emphasis role="bold">Controller node—Networking
node—Networking server</emphasis></para> server</emphasis></para>
<orderedlist> <procedure>
<listitem> <step>
<para>Install the Networking <para>Install the Networking server.</para>
server.</para> </step>
</listitem> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<listitem <para>Create database <emphasis role="bold"
os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Create database <emphasis
role="bold"
>ovs_neutron</emphasis>.</para> >ovs_neutron</emphasis>.</para>
</listitem> </step>
<listitem> <step>
<para>Update the Networking configuration <para>Update the Networking configuration
file, <filename> file, <filename>
/etc/neutron/neutron.conf</filename>, /etc/neutron/neutron.conf</filename>,
with plug-in choice and Identity with plug-in choice and Identity Service
Service user as necessary:</para> user as necessary:</para>
<programlisting language="ini" os="rhel;centos;fedora;opensuse;sles;ubuntu">[DEFAULT] <programlisting language="ini" os="rhel;centos;fedora;opensuse;sles;ubuntu">[DEFAULT]
core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2 core_plugin = neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2
control_exchange = neutron control_exchange = neutron
@ -193,8 +190,7 @@ connection = mysql://neutron:<replaceable>NEUTRON_DBPASS</replaceable>@<replacea
[keystone_authtoken] [keystone_authtoken]
admin_tenant_name=service admin_tenant_name=service
admin_user=neutron admin_user=neutron
admin_password=<replaceable>NEUTRON_PASS</replaceable> admin_password=<replaceable>NEUTRON_PASS</replaceable></programlisting>
</programlisting>
<programlisting language="ini" os="debian">[DEFAULT] <programlisting language="ini" os="debian">[DEFAULT]
control_exchange = neutron control_exchange = neutron
rabbit_host = <replaceable>controller</replaceable> rabbit_host = <replaceable>controller</replaceable>
@ -202,45 +198,40 @@ rabbit_password = <replaceable>RABBIT_PASS</replaceable>
notification_driver = neutron.openstack.common.notifier.rabbit_notifier notification_driver = neutron.openstack.common.notifier.rabbit_notifier
[database] [database]
connection = mysql://neutron:<replaceable>NEUTRON_DBPASS</replaceable>@<replaceable>controller</replaceable>:3306/neutron connection = mysql://neutron:<replaceable>NEUTRON_DBPASS</replaceable>@<replaceable>controller</replaceable>:3306/neutron</programlisting>
</programlisting> </step>
</listitem> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<listitem <para>Update the plug-in configuration file,
os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Update the plug-in configuration
file,
<filename>/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini</filename>:</para> <filename>/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini</filename>:</para>
<programlisting language="ini">[ovs] <programlisting language="ini">[ovs]
tenant_network_type = gre tenant_network_type = gre
tunnel_id_ranges = 1:1000 tunnel_id_ranges = 1:1000
enable_tunneling = True enable_tunneling = True</programlisting>
</programlisting> </step>
</listitem> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<listitem <para>Start the Networking server.</para>
os="rhel;centos;fedora;opensuse;sles;ubuntu"> <para>The Networking server can be a service
<para>Start the Networking server</para> of the operating system. The command to
<para>The Networking server can be a start the service depends on your
service of the operating system. The operating system. The following command
command to start the service depends runs the Networking server
on your operating system. The directly:</para>
following command runs the Networking
server directly:</para>
<screen><prompt>#</prompt> <userinput>neutron-server --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \ <screen><prompt>#</prompt> <userinput>neutron-server --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \
--config-file /etc/neutron/neutron.conf</userinput></screen> --config-file /etc/neutron/neutron.conf</userinput></screen>
</listitem> </step>
</orderedlist> </procedure>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="bold">Compute node—Compute </emphasis><orderedlist> <para><emphasis role="bold">Compute node—Compute </emphasis><procedure>
<listitem> <step>
<para>Install Compute services.</para> <para>Install Compute services.</para>
</listitem> </step>
<listitem> <step>
<para>Update the Compute <filename> <para>Update the Compute <filename>
/etc/nova/nova.conf</filename> /etc/nova/nova.conf</filename>
configuration file. Make sure the configuration file. Make sure the
following line appears at the end following line appears at the end of
of this file:</para> this file:</para>
<programlisting language="ini">network_api_class=nova.network.neutronv2.api.API <programlisting language="ini">network_api_class=nova.network.neutronv2.api.API
neutron_admin_username=neutron neutron_admin_username=neutron
@ -250,33 +241,31 @@ neutron_auth_strategy=keystone
neutron_admin_tenant_name=service neutron_admin_tenant_name=service
neutron_url=http://controlnode:9696/ neutron_url=http://controlnode:9696/
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver</programlisting>
</programlisting> </step>
</listitem> <step>
<listitem>
<para>Restart relevant Compute <para>Restart relevant Compute
services.</para> services.</para>
</listitem> </step>
</orderedlist></para> </procedure></para>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="bold">Compute and Networking <para><emphasis role="bold">Compute and Networking
node—L2 agent</emphasis></para> node—L2 agent</emphasis></para>
<orderedlist> <procedure>
<listitem> <step>
<para>Install and start Open <para>Install and start Open vSwitch.</para>
vSwitch.</para> </step>
</listitem> <step>
<listitem>
<para>Install the L2 agent (Neutron Open <para>Install the L2 agent (Neutron Open
vSwitch agent).</para> vSwitch agent).</para>
</listitem> </step>
<listitem> <step>
<para>Add the integration bridge to the <para>Add the integration bridge to the Open
Open vSwitch:</para> vSwitch:</para>
<screen><prompt>#</prompt> <userinput>ovs-vsctl add-br br-int</userinput></screen> <screen><prompt>#</prompt> <userinput>ovs-vsctl add-br br-int</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>Update the Networking configuration <para>Update the Networking configuration
file, <filename> file, <filename>
/etc/neutron/neutron.conf</filename>:</para> /etc/neutron/neutron.conf</filename>:</para>
@ -289,53 +278,49 @@ notification_driver = neutron.openstack.common.notifier.rabbit_notifier
[database] [database]
connection = mysql://neutron:<replaceable>NEUTRON_DBPASS</replaceable>@<replaceable>controller</replaceable>:3306/neutron</programlisting> connection = mysql://neutron:<replaceable>NEUTRON_DBPASS</replaceable>@<replaceable>controller</replaceable>:3306/neutron</programlisting>
</listitem> </step>
<listitem> <step>
<para>Update the plug-in configuration <para>Update the plug-in configuration file,
file, <filename> <filename>
/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini</filename>.</para> /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini</filename>.</para>
<para>Compute node:</para> <para>Compute node:</para>
<programlisting language="ini">[ovs] <programlisting language="ini">[ovs]
tenant_network_type = gre tenant_network_type = gre
tunnel_id_ranges = 1:1000 tunnel_id_ranges = 1:1000
enable_tunneling = True enable_tunneling = True
local_ip = 9.181.89.202 local_ip = 9.181.89.202</programlisting>
</programlisting>
<para>Network node:</para> <para>Network node:</para>
<programlisting language="ini">[ovs] <programlisting language="ini">[ovs]
tenant_network_type = gre tenant_network_type = gre
tunnel_id_ranges = 1:1000 tunnel_id_ranges = 1:1000
enable_tunneling = True enable_tunneling = True
local_ip = 9.181.89.203 local_ip = 9.181.89.203</programlisting>
</programlisting> </step>
</listitem> <step>
<listitem> <para>Create the integration bridge <emphasis
<para>Create the integration bridge role="bold">br-int</emphasis>:</para>
<emphasis role="bold"
>br-int</emphasis>:</para>
<screen><prompt>#</prompt> <userinput>ovs-vsctl --may-exist add-br br-int</userinput></screen> <screen><prompt>#</prompt> <userinput>ovs-vsctl --may-exist add-br br-int</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>Start the Networking L2 agent</para> <para>Start the Networking L2 agent</para>
<para>The Networking Open vSwitch L2 agent <para>The Networking Open vSwitch L2 agent can
can be a service of operating system. be a service of operating system. The
The command to start depends on your command to start depends on your operating
operating systems. The following systems. The following command runs the
command runs the service service directly:</para>
directly:</para>
<screen><prompt>#</prompt> <userinput>neutron-openvswitch-agent --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \ <screen><prompt>#</prompt> <userinput>neutron-openvswitch-agent --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \
--config-file /etc/neutron/neutron.conf</userinput></screen> --config-file /etc/neutron/neutron.conf</userinput></screen>
</listitem> </step>
</orderedlist> </procedure>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="bold">Network node—DHCP <para><emphasis role="bold">Network node—DHCP
agent</emphasis></para> agent</emphasis></para>
<orderedlist> <procedure>
<listitem> <step>
<para>Install the DHCP agent.</para> <para>Install the DHCP agent.</para>
</listitem> </step>
<listitem> <step>
<para>Update the Networking configuration <para>Update the Networking configuration
file, <filename> file, <filename>
/etc/neutron/neutron.conf</filename></para> /etc/neutron/neutron.conf</filename></para>
@ -349,47 +334,44 @@ allow_overlapping_ips = True</programlisting>
<para><emphasis role="bold">Set <para><emphasis role="bold">Set
<literal>allow_overlapping_ips</literal> <literal>allow_overlapping_ips</literal>
because TenantA and TenantC use because TenantA and TenantC use
overlapping overlapping subnets.</emphasis></para>
subnets.</emphasis></para> </step>
</listitem> <step>
<listitem>
<para>Update the DHCP <filename> <para>Update the DHCP <filename>
/etc/neutron/dhcp_agent.ini</filename> /etc/neutron/dhcp_agent.ini</filename>
configuration file:</para> configuration file:</para>
<programlisting language="ini">interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver</programlisting> <programlisting language="ini">interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver</programlisting>
</listitem> </step>
<listitem> <step>
<para>Start the DHCP agent.</para> <para>Start the DHCP agent.</para>
<para>The Networking DHCP agent can be a <para>The Networking DHCP agent can be a
service of operating system. The service of operating system. The command
command to start the service depends to start the service depends on your
on your operating system. The operating system. The following command
following command runs the service runs the service directly:</para>
directly:</para>
<screen><prompt>#</prompt> <userinput>neutron-dhcp-agent --config-file /etc/neutron/neutron.conf \ <screen><prompt>#</prompt> <userinput>neutron-dhcp-agent --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/dhcp_agent.ini</userinput></screen> --config-file /etc/neutron/dhcp_agent.ini</userinput></screen>
</listitem> </step>
</orderedlist> </procedure>
</listitem> </listitem>
<listitem> <listitem>
<para><emphasis role="bold">Network node—L3 <para><emphasis role="bold">Network node—L3
agent</emphasis></para> agent</emphasis></para>
<orderedlist> <procedure>
<listitem> <step>
<para>Install the L3 agent.</para> <para>Install the L3 agent.</para>
</listitem> </step>
<listitem> <step>
<para>Add the external network <para>Add the external network bridge</para>
bridge</para>
<screen><prompt>#</prompt> <userinput>ovs-vsctl add-br br-ex</userinput></screen> <screen><prompt>#</prompt> <userinput>ovs-vsctl add-br br-ex</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>Add the physical interface, for <para>Add the physical interface, for example
example eth0, that is connected to the eth0, that is connected to the outside
outside network to this bridge:</para> network to this bridge:</para>
<screen><prompt>#</prompt> <userinput>ovs-vsctl add-port br-ex eth0</userinput></screen> <screen><prompt>#</prompt> <userinput>ovs-vsctl add-port br-ex eth0</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>Update the L3 configuration file <para>Update the L3 configuration file
<filename> <filename>
/etc/neutron/l3_agent.ini</filename>:</para> /etc/neutron/l3_agent.ini</filename>:</para>
@ -398,43 +380,41 @@ interface_driver=neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces=True</programlisting> use_namespaces=True</programlisting>
<para><emphasis role="bold">Set the <para><emphasis role="bold">Set the
<literal>use_namespaces</literal> <literal>use_namespaces</literal>
option (it is True by default) option (it is True by default) because
because TenantA and TenantC have TenantA and TenantC have overlapping
overlapping subnets, and the subnets, and the routers are hosted on
routers are hosted on one l3 agent one l3 agent network
network node.</emphasis></para> node.</emphasis></para>
</listitem> </step>
<listitem> <step>
<para>Start the L3 agent</para> <para>Start the L3 agent</para>
<para>The Networking L3 agent can be a <para>The Networking L3 agent can be a service
service of operating system. The of operating system. The command to start
command to start the service depends the service depends on your operating
on your operating system. The system. The following command starts the
following command starts the agent agent directly:</para>
directly:</para>
<screen><prompt>#</prompt> <userinput>neutron-l3-agent --config-file /etc/neutron/neutron.conf \ <screen><prompt>#</prompt> <userinput>neutron-l3-agent --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/l3_agent.ini</userinput></screen> --config-file /etc/neutron/l3_agent.ini</userinput></screen>
</listitem> </step>
</orderedlist> </procedure>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para>
</section> </section>
<section xml:id="demo_per_tenant_router_network_config"> <section xml:id="demo_per_tenant_router_network_config">
<title>Configure logical network</title> <title>Configure logical network</title>
<para>All of the commands below can be executed on the network <para>You can run these commands on the network node.</para>
node.</para>
<note> <note>
<para>Ensure that the following environment variables are <para>Ensure that the following environment variables are
set. Various clients use these to access the Identity set. Various clients use these to access the Identity
Service.</para> Service.</para>
</note>
<programlisting language="bash">export OS_USERNAME=admin <programlisting language="bash">export OS_USERNAME=admin
export OS_PASSWORD=adminpassword export OS_PASSWORD=adminpassword
export OS_TENANT_NAME=admin export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting> export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
<orderedlist> </note>
<listitem> <procedure>
<step>
<para>Get the tenant ID (Used as $TENANT_ID <para>Get the tenant ID (Used as $TENANT_ID
later):</para> later):</para>
<screen><prompt>#</prompt> <userinput>keystone tenant-list</userinput> <screen><prompt>#</prompt> <userinput>keystone tenant-list</userinput>
@ -446,11 +426,10 @@ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
| 3719a4940bf24b5a8124b58c9b0a6ee6 | TenantB | True | | 3719a4940bf24b5a8124b58c9b0a6ee6 | TenantB | True |
| 5fcfbc3283a142a5bb6978b549a511ac | demo | True | | 5fcfbc3283a142a5bb6978b549a511ac | demo | True |
| b7445f221cda4f4a8ac7db6b218b1339 | admin | True | | b7445f221cda4f4a8ac7db6b218b1339 | admin | True |
+----------------------------------+---------+---------+ +----------------------------------+---------+---------+</computeroutput></screen>
</computeroutput></screen> </step>
</listitem> <step>
<listitem> <para>Get user information:</para>
<para>Get the user information:</para>
<screen><prompt>#</prompt> <userinput>keystone user-list</userinput> <screen><prompt>#</prompt> <userinput>keystone user-list</userinput>
<computeroutput>+----------------------------------+-------+---------+-------------------+ <computeroutput>+----------------------------------+-------+---------+-------------------+
| id | name | enabled | email | | id | name | enabled | email |
@ -460,10 +439,9 @@ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
| 8e37cb8193cb4873a35802d257348431 | UserC | True | | | 8e37cb8193cb4873a35802d257348431 | UserC | True | |
| c11f6b09ed3c45c09c21cbbc23e93066 | UserB | True | | | c11f6b09ed3c45c09c21cbbc23e93066 | UserB | True | |
| ca567c4f6c0942bdac0e011e97bddbe3 | UserA | True | | | ca567c4f6c0942bdac0e011e97bddbe3 | UserA | True | |
+----------------------------------+-------+---------+-------------------+ +----------------------------------+-------+---------+-------------------+</computeroutput></screen>
</computeroutput></screen> </step>
</listitem> <step>
<listitem>
<para>Create the external network and its subnet by <para>Create the external network and its subnet by
admin user:</para> admin user:</para>
<screen><prompt>#</prompt> <userinput>neutron net-create Ext-Net --provider:network_type local --router:external true</userinput> <screen><prompt>#</prompt> <userinput>neutron net-create Ext-Net --provider:network_type local --router:external true</userinput>
@ -482,8 +460,7 @@ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
| status | ACTIVE | | status | ACTIVE |
| subnets | | | subnets | |
| tenant_id | b7445f221cda4f4a8ac7db6b218b1339 | | tenant_id | b7445f221cda4f4a8ac7db6b218b1339 |
+---------------------------+--------------------------------------+ +---------------------------+--------------------------------------+</computeroutput></screen>
</computeroutput></screen>
<screen><prompt>#</prompt> <userinput>neutron subnet-create Ext-Net 30.0.0.0/24 --disable-dhcp</userinput> <screen><prompt>#</prompt> <userinput>neutron subnet-create Ext-Net 30.0.0.0/24 --disable-dhcp</userinput>
<computeroutput>Created a new subnet: <computeroutput>Created a new subnet:
@ -501,8 +478,7 @@ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
| name | | | name | |
| network_id | 2c757c9e-d3d6-4154-9a77-336eb99bd573 | | network_id | 2c757c9e-d3d6-4154-9a77-336eb99bd573 |
| tenant_id | b7445f221cda4f4a8ac7db6b218b1339 | | tenant_id | b7445f221cda4f4a8ac7db6b218b1339 |
+------------------+--------------------------------------------+ +------------------+--------------------------------------------+</computeroutput></screen>
</computeroutput></screen>
<para><emphasis role="bold"> <para><emphasis role="bold">
<literal>provider:network_type local</literal> <literal>provider:network_type local</literal>
means that Networking does not have to realize means that Networking does not have to realize
@ -511,8 +487,8 @@ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
means that an external network is created means that an external network is created
where you can create floating IP and router where you can create floating IP and router
gateway port.</emphasis></para> gateway port.</emphasis></para>
</listitem> </step>
<listitem> <step>
<para>Add an IP on external network to br-ex.</para> <para>Add an IP on external network to br-ex.</para>
<para>Because br-ex is the external network bridge, <para>Because br-ex is the external network bridge,
add an IP 30.0.0.100/24 to br-ex and ping the add an IP 30.0.0.100/24 to br-ex and ping the
@ -520,13 +496,13 @@ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
node.</para> node.</para>
<screen><prompt>#</prompt> <userinput>ip addr add 30.0.0.100/24 dev br-ex</userinput> <screen><prompt>#</prompt> <userinput>ip addr add 30.0.0.100/24 dev br-ex</userinput>
<prompt>#</prompt> <userinput>ip link set br-ex up</userinput></screen> <prompt>#</prompt> <userinput>ip link set br-ex up</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>Serve TenantA.</para> <para>Serve TenantA.</para>
<para>For TenantA, create a private network, subnet, <para>For TenantA, create a private network, subnet,
server, router, and floating IP.</para> server, router, and floating IP.</para>
<orderedlist> <substeps>
<listitem> <step>
<para>Create a network for TenantA:</para> <para>Create a network for TenantA:</para>
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 net-create TenantA-Net</userinput> --os-auth-url=http://localhost:5000/v2.0 net-create TenantA-Net</userinput>
@ -561,17 +537,15 @@ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/</programlisting>
| status | ACTIVE | | status | ACTIVE |
| subnets | | | subnets | |
| tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a | | tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a |
+---------------------------+--------------------------------------+ +---------------------------+--------------------------------------+</computeroutput></screen>
</computeroutput></screen>
<para>The network has GRE tunnel ID (for <para>The network has GRE tunnel ID (for
example, provider:segmentation_id) example, provider:segmentation_id)
1.</para> 1.</para>
</listitem> </step>
<listitem> <step>
<para>Create a subnet on the network <para>Create a subnet on the network
TenantA-Net:</para> TenantA-Net:</para>
<screen><prompt>#</prompt> <userinput> <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
neutron --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 subnet-create TenantA-Net 10.0.0.0/24</userinput> --os-auth-url=http://localhost:5000/v2.0 subnet-create TenantA-Net 10.0.0.0/24</userinput>
<computeroutput>Created a new subnet: <computeroutput>Created a new subnet:
+------------------+--------------------------------------------+ +------------------+--------------------------------------------+
@ -588,23 +562,20 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
| name | | | name | |
| network_id | 7d0e8d5d-c63c-4f13-a117-4dc4e33e7d68 | | network_id | 7d0e8d5d-c63c-4f13-a117-4dc4e33e7d68 |
| tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a | | tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a |
+------------------+--------------------------------------------+ +------------------+--------------------------------------------+</computeroutput></screen>
</computeroutput></screen> </step>
</listitem> <step>
<listitem>
<para>Create a server for TenantA:</para> <para>Create a server for TenantA:</para>
<screen><prompt>$</prompt> <userinput>nova --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>$</prompt> <userinput>nova --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 boot --image tty --flavor 1 \ --os-auth-url=http://localhost:5000/v2.0 boot --image tty --flavor 1 \
--nic net-id=7d0e8d5d-c63c-4f13-a117-4dc4e33e7d68 TenantA_VM1</userinput></screen> --nic net-id=7d0e8d5d-c63c-4f13-a117-4dc4e33e7d68 TenantA_VM1</userinput></screen>
<screen><prompt>$</prompt> <userinput>nova --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>$</prompt> <userinput>nova --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 list</userinput> --os-auth-url=http://localhost:5000/v2.0 list</userinput>
<computeroutput> <computeroutput>+--------------------------------------+-------------+--------+----------------------+
+--------------------------------------+-------------+--------+----------------------+
| ID | Name | Status | Networks | | ID | Name | Status | Networks |
+--------------------------------------+-------------+--------+----------------------+ +--------------------------------------+-------------+--------+----------------------+
| 7c5e6499-7ef7-4e36-8216-62c2941d21ff | TenantA_VM1 | ACTIVE | TenantA-Net=10.0.0.3 | | 7c5e6499-7ef7-4e36-8216-62c2941d21ff | TenantA_VM1 | ACTIVE | TenantA-Net=10.0.0.3 |
+--------------------------------------+-------------+--------+----------------------+ +--------------------------------------+-------------+--------+----------------------+</computeroutput></screen>
</computeroutput></screen>
<note> <note>
<para>It is important to understand that <para>It is important to understand that
you should not attach the instance to you should not attach the instance to
@ -613,8 +584,8 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
accessible from the external accessible from the external
network.</para> network.</para>
</note> </note>
</listitem> </step>
<listitem> <step>
<para>Create and configure a router for <para>Create and configure a router for
TenantA:</para> TenantA:</para>
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
@ -629,8 +600,7 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
| name | TenantA-R1 | | name | TenantA-R1 |
| status | ACTIVE | | status | ACTIVE |
| tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a | | tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a |
+-----------------------+--------------------------------------+ +-----------------------+--------------------------------------+</computeroutput></screen>
</computeroutput></screen>
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 router-interface-add \ --os-auth-url=http://localhost:5000/v2.0 router-interface-add \
TenantA-R1 51e2c223-0492-4385-b6e9-83d4e6d10657</userinput></screen> TenantA-R1 51e2c223-0492-4385-b6e9-83d4e6d10657</userinput></screen>
@ -639,11 +609,15 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 \ --os-auth-url=http://localhost:5000/v2.0 \
router-gateway-set TenantA-R1 Ext-Net</userinput></screen> router-gateway-set TenantA-R1 Ext-Net</userinput></screen>
</listitem> </step>
<listitem> </substeps>
<para>Associate a floating IP for </step>
TenantA_VM1.</para> <step>
<para>1. Create a floating IP:</para> <para>Associate a floating IP for TenantA_VM1.</para>
<substeps>
<step>
<para>Create a floating IP:</para>
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 floatingip-create Ext-Net</userinput> --os-auth-url=http://localhost:5000/v2.0 floatingip-create Ext-Net</userinput>
<computeroutput>Created a new floatingip: <computeroutput>Created a new floatingip:
@ -657,9 +631,10 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
| port_id | | | port_id | |
| router_id | | | router_id | |
| tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a | | tenant_id | 247e478c599f45b5bd297e8ddbbc9b6a |
+---------------------+--------------------------------------+ +---------------------+--------------------------------------+</computeroutput></screen>
</computeroutput></screen> </step>
<para>2. Get the port ID of the VM with ID <step>
<para>Get the port ID of the VM with ID
7c5e6499-7ef7-4e36-8216-62c2941d21ff:</para> 7c5e6499-7ef7-4e36-8216-62c2941d21ff:</para>
<screen><prompt>$</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>$</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 port-list -- \ --os-auth-url=http://localhost:5000/v2.0 port-list -- \
@ -668,9 +643,10 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
| id | name | mac_address | fixed_ips | | id | name | mac_address | fixed_ips |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------+ +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------+
| 6071d430-c66e-4125-b972-9a937c427520 | | fa:16:3e:a0:73:0d | {"subnet_id": "51e2c223-0492-4385-b6e9-83d4e6d10657", "ip_address": "10.0.0.3"} | | 6071d430-c66e-4125-b972-9a937c427520 | | fa:16:3e:a0:73:0d | {"subnet_id": "51e2c223-0492-4385-b6e9-83d4e6d10657", "ip_address": "10.0.0.3"} |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------+ +--------------------------------------+------+-------------------+---------------------------------------------------------------------------------+</computeroutput></screen>
</computeroutput></screen> </step>
<para>3. Associate the floating IP with the VM <step>
<para>Associate the floating IP with the VM
port:</para> port:</para>
<screen><prompt>$</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \ <screen><prompt>$</prompt> <userinput>neutron --os-tenant-name TenantA --os-username UserA --os-password password \
--os-auth-url=http://localhost:5000/v2.0 floatingip-associate \ --os-auth-url=http://localhost:5000/v2.0 floatingip-associate \
@ -684,17 +660,18 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
| 5a1f90ed-aa3c-4df3-82cb-116556e96bf1 | 10.0.0.3 | 30.0.0.2 | 6071d430-c66e-4125-b972-9a937c427520 | | 5a1f90ed-aa3c-4df3-82cb-116556e96bf1 | 10.0.0.3 | 30.0.0.2 | 6071d430-c66e-4125-b972-9a937c427520 |
+--------------------------------------+------------------+---------------------+--------------------------------------+ +--------------------------------------+------------------+---------------------+--------------------------------------+
</computeroutput></screen> </computeroutput></screen>
</listitem> </step>
<listitem> </substeps>
<para>Ping the public network from the server </step>
of TenantA.</para> <step>
<para>In my environment, 192.168.1.0/24 is my <para>Ping the public network from the server of
public network connected with my physical TenantA.</para>
router, which also connects to the <para>In my environment, 192.168.1.0/24 is my public
external network 30.0.0.0/24. With the network connected with my physical router, which
floating IP and virtual router, we can also connects to the external network 30.0.0.0/24.
ping the public network within the server With the floating IP and virtual router, you can
of tenant A:</para> ping the public network within the server of
tenant A:</para>
<screen><prompt>$</prompt> <userinput>ping 192.168.1.1</userinput> <screen><prompt>$</prompt> <userinput>ping 192.168.1.1</userinput>
<computeroutput>PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. <computeroutput>PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.74 ms 64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.74 ms
@ -705,10 +682,9 @@ neutron --os-tenant-name TenantA --os-username UserA --os-password password \
3 packets transmitted, 3 received, 0% packet loss, time 2003ms 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.234/1.495/1.745/0.211 ms rtt min/avg/max/mdev = 1.234/1.495/1.745/0.211 ms
</computeroutput></screen> </computeroutput></screen>
</listitem> </step>
<listitem> <step>
<para>Ping floating IP of the TenantA's <para>Ping floating IP of the TenantA's server:</para>
server:</para>
<screen><prompt>$</prompt> <userinput>ping 30.0.0.2</userinput> <screen><prompt>$</prompt> <userinput>ping 30.0.0.2</userinput>
<computeroutput>PING 30.0.0.2 (30.0.0.2) 56(84) bytes of data. <computeroutput>PING 30.0.0.2 (30.0.0.2) 56(84) bytes of data.
64 bytes from 30.0.0.2: icmp_req=1 ttl=63 time=45.0 ms 64 bytes from 30.0.0.2: icmp_req=1 ttl=63 time=45.0 ms
@ -719,22 +695,20 @@ rtt min/avg/max/mdev = 1.234/1.495/1.745/0.211 ms
3 packets transmitted, 3 received, 0% packet loss, time 2002ms 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
</computeroutput></screen> </computeroutput></screen>
</listitem> </step>
<listitem> <step>
<para>Create other servers for TenantA.</para> <para>Create other servers for TenantA.</para>
<para>We can create more servers for TenantA <para>You can create more servers for TenantA and add
and add floating IPs for them.</para> floating IPs for them.</para>
</listitem> </step>
</orderedlist> <step>
</listitem>
<listitem>
<para>Serve TenantC.</para> <para>Serve TenantC.</para>
<para>For TenantC, we will create two private networks <para>For TenantC, you create two private networks
with subnet 10.0.0.0/24 and subnet 10.0.1.0/24, with subnet 10.0.0.0/24 and subnet 10.0.1.0/24,
some servers, one router to connect to these two some servers, one router to connect to these two
subnets and some floating IPs.</para> subnets and some floating IPs.</para>
<orderedlist> <substeps>
<listitem> <step>
<para>Create networks and subnets for <para>Create networks and subnets for
TenantC:</para> TenantC:</para>
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantC --os-username UserC --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantC --os-username UserC --os-password password \
@ -748,7 +722,7 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
--os-auth-url=http://localhost:5000/v2.0 subnet-create TenantC-Net2 \ --os-auth-url=http://localhost:5000/v2.0 subnet-create TenantC-Net2 \
10.0.1.0/24 --name TenantC-Subnet2</userinput> 10.0.1.0/24 --name TenantC-Subnet2</userinput>
</screen> </screen>
<para>After that we can use admin user to <para>After that you can use admin user to
query the network's provider network query the network's provider network
information:</para> information:</para>
<screen><prompt>#</prompt> <userinput>neutron net-show TenantC-Net1</userinput> <screen><prompt>#</prompt> <userinput>neutron net-show TenantC-Net1</userinput>
@ -789,22 +763,22 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
also note the network IDs and subnet IDs also note the network IDs and subnet IDs
because you use them to create VMs and because you use them to create VMs and
router.</para> router.</para>
</listitem> </step>
<listitem> <step>
<para>Create a server TenantC-VM1 for TenantC <para>Create a server TenantC-VM1 for TenantC
on TenantC-Net1.</para> on TenantC-Net1.</para>
<screen><prompt>#</prompt> <userinput>nova --os-tenant-name TenantC --os-username UserC --os-password password \ <screen><prompt>#</prompt> <userinput>nova --os-tenant-name TenantC --os-username UserC --os-password password \
--os-auth-url=http://localhost:5000/v2.0 boot --image tty --flavor 1 \ --os-auth-url=http://localhost:5000/v2.0 boot --image tty --flavor 1 \
--nic net-id=91309738-c317-40a3-81bb-bed7a3917a85 TenantC_VM1</userinput></screen> --nic net-id=91309738-c317-40a3-81bb-bed7a3917a85 TenantC_VM1</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>Create a server TenantC-VM3 for TenantC <para>Create a server TenantC-VM3 for TenantC
on TenantC-Net2.</para> on TenantC-Net2.</para>
<screen><prompt>#</prompt> <userinput>nova --os-tenant-name TenantC --os-username UserC --os-password password \ <screen><prompt>#</prompt> <userinput>nova --os-tenant-name TenantC --os-username UserC --os-password password \
--os-auth-url=http://localhost:5000/v2.0 boot --image tty --flavor 1 \ --os-auth-url=http://localhost:5000/v2.0 boot --image tty --flavor 1 \
--nic net-id=5b373ad2-7866-44f4-8087-f87148abd623 TenantC_VM3</userinput></screen> --nic net-id=5b373ad2-7866-44f4-8087-f87148abd623 TenantC_VM3</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>List servers of TenantC.</para> <para>List servers of TenantC.</para>
<screen><prompt>#</prompt> <userinput>nova --os-tenant-name TenantC --os-username UserC --os-password password \ <screen><prompt>#</prompt> <userinput>nova --os-tenant-name TenantC --os-username UserC --os-password password \
--os-auth-url=http://localhost:5000/v2.0 list</userinput> --os-auth-url=http://localhost:5000/v2.0 list</userinput>
@ -816,16 +790,16 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
+--------------------------------------+-------------+--------+-----------------------+</computeroutput></screen> +--------------------------------------+-------------+--------+-----------------------+</computeroutput></screen>
<para>Note the server IDs because you use them <para>Note the server IDs because you use them
later.</para> later.</para>
</listitem> </step>
<listitem> <step>
<para>Make sure servers get their IPs.</para> <para>Make sure servers get their IPs.</para>
<para>You can use VNC to log on the VMs to <para>You can use VNC to log on the VMs to
check if they get IPs. If not, you must check if they get IPs. If not, you must
make sure that the Networking components make sure that the Networking components
are running correctly and the GRE tunnels are running correctly and the GRE tunnels
work.</para> work.</para>
</listitem> </step>
<listitem> <step>
<para>Create and configure a router for <para>Create and configure a router for
TenantC:</para> TenantC:</para>
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantC --os-username UserC --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantC --os-username UserC --os-password password \
@ -839,8 +813,8 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
<screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantC --os-username UserC --os-password password \ <screen><prompt>#</prompt> <userinput>neutron --os-tenant-name TenantC --os-username UserC --os-password password \
--os-auth-url=http://localhost:5000/v2.0 \ --os-auth-url=http://localhost:5000/v2.0 \
router-gateway-set TenantC-R1 Ext-Net</userinput></screen> router-gateway-set TenantC-R1 Ext-Net</userinput></screen>
</listitem> </step>
<listitem> <step>
<para>Checkpoint: ping from within TenantC's <para>Checkpoint: ping from within TenantC's
servers.</para> servers.</para>
<para>Because a router connects to two <para>Because a router connects to two
@ -849,8 +823,8 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
the router is set, TenantC's servers can the router is set, TenantC's servers can
ping external network IPs, such as ping external network IPs, such as
192.168.1.1, 30.0.0.1, and so on.</para> 192.168.1.1, 30.0.0.1, and so on.</para>
</listitem> </step>
<listitem> <step>
<para>Associate floating IPs for TenantC's <para>Associate floating IPs for TenantC's
servers.</para> servers.</para>
<para>Because a router connects to two <para>Because a router connects to two
@ -860,16 +834,16 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
servers can ping external network IPs, servers can ping external network IPs,
such as 192.168.1.1, 30.0.0.1, and so such as 192.168.1.1, 30.0.0.1, and so
on.</para> on.</para>
</listitem> </step>
<listitem> <step>
<para>Associate floating IPs for TenantC's <para>Associate floating IPs for TenantC's
servers.</para> servers.</para>
<para>You can use similar commands to the ones <para>You can use similar commands to the ones
used in the section for TenantA.</para> used in the section for TenantA.</para>
</listitem> </step>
</orderedlist> </substeps>
</listitem> </step>
</orderedlist> </procedure>
</section> </section>
<section xml:id="section_use-cases-tenant-router"> <section xml:id="section_use-cases-tenant-router">
<title>Use case: per-tenant routers with private <title>Use case: per-tenant routers with private
@ -881,12 +855,11 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
networks, potentially uplinking those networks to a networks, potentially uplinking those networks to a
router. This model enables tenant-defined, multi-tier router. This model enables tenant-defined, multi-tier
applications, with each tier being a separate network applications, with each tier being a separate network
behind the router. Since there are multiple routers, behind the router. Because there are multiple routers,
tenant subnets can overlap without conflicting, since tenant subnets can overlap without conflicting, because
access to external networks all happens via SNAT or access to external networks all happens through SNAT or
Floating IPs. Each router uplink and floating IP is floating IPs. Each router uplink and floating IP is
allocated from the external network subnet.</para> allocated from the external network subnet.</para>
<para>
<mediaobject> <mediaobject>
<imageobject> <imageobject>
<imagedata scale="55" <imagedata scale="55"
@ -895,6 +868,5 @@ rtt min/avg/max/mdev = 0.898/15.621/45.027/20.793 ms
</imageobject> </imageobject>
</mediaobject> </mediaobject>
<!--Image source link: https://docs.google.com/a/nicira.com/drawings/d/1mmQc8cBUoTEfEns-ehIyQSTvOrjUdl5xeGDv9suVyAY/edit --> <!--Image source link: https://docs.google.com/a/nicira.com/drawings/d/1mmQc8cBUoTEfEns-ehIyQSTvOrjUdl5xeGDv9suVyAY/edit -->
</para>
</section> </section>
</section> </section>

View File

@ -2,8 +2,7 @@
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="nova-controller"> xml:id="nova-controller">
<title>Install the Compute controller services</title> <title>Install Compute controller services</title>
<para>Compute is a collection of services that enable you to launch <para>Compute is a collection of services that enable you to launch
virtual machine instances. You can configure these services to run virtual machine instances. You can configure these services to run
on separate nodes or the same node. In this guide, most services on separate nodes or the same node. In this guide, most services
@ -17,13 +16,10 @@
<package>openstack-nova</package> meta-package, which <package>openstack-nova</package> meta-package, which
installs various Compute packages that are used on the installs various Compute packages that are used on the
controller node.</para> controller node.</para>
<screen os="fedora;rhel;centos"><prompt>#</prompt> <userinput>yum install openstack-nova python-novaclient</userinput></screen> <screen os="fedora;rhel;centos"><prompt>#</prompt> <userinput>yum install openstack-nova python-novaclient</userinput></screen>
<para os="ubuntu;debian;opensuse;sles">Install these Compute <para os="ubuntu;debian;opensuse;sles">Install these Compute
packages, which provide the Compute services that run on the packages, which provide the Compute services that run on the
controller node.</para> controller node.</para>
<screen os="ubuntu"><prompt>#</prompt> <userinput>apt-get install nova-novncproxy novnc nova-api \ <screen os="ubuntu"><prompt>#</prompt> <userinput>apt-get install nova-novncproxy novnc nova-api \
nova-ajax-console-proxy nova-cert nova-conductor \ nova-ajax-console-proxy nova-cert nova-conductor \
nova-consoleauth nova-doc nova-scheduler \ nova-consoleauth nova-doc nova-scheduler \
@ -38,7 +34,6 @@
openstack-nova-consoleauth openstack-nova-doc \ openstack-nova-consoleauth openstack-nova-doc \
openstack-nova-novncproxy python-novaclient</userinput></screen> openstack-nova-novncproxy python-novaclient</userinput></screen>
</step> </step>
<step os="debian"> <step os="debian">
<para>Respond to the prompts for <link <para>Respond to the prompts for <link
linkend="debconf-dbconfig-common">database linkend="debconf-dbconfig-common">database
@ -49,7 +44,6 @@
>API endpoint</link> registration. The <command>nova-manage >API endpoint</link> registration. The <command>nova-manage
db sync</command> command runs automatically.</para> db sync</command> command runs automatically.</para>
</step> </step>
<step> <step>
<para>Compute stores information in a database. The examples in <para>Compute stores information in a database. The examples in
this guide use the MySQL database that is used by other this guide use the MySQL database that is used by other
@ -59,7 +53,6 @@
service password:</para> service password:</para>
<screen os="fedora;rhel;centos;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf \ <screen os="fedora;rhel;centos;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf \
database connection mysql://nova:<replaceable>NOVA_DBPASS</replaceable>@controller/nova</userinput></screen> database connection mysql://nova:<replaceable>NOVA_DBPASS</replaceable>@controller/nova</userinput></screen>
<para os="ubuntu;debian">Edit the <para os="ubuntu;debian">Edit the
<filename>/etc/nova/nova.conf</filename> file and add these <filename>/etc/nova/nova.conf</filename> file and add these
lines to the <literal>[database]</literal> section:</para> lines to the <literal>[database]</literal> section:</para>
@ -67,9 +60,7 @@
[database] [database]
# The SQLAlchemy connection string used to connect to the database # The SQLAlchemy connection string used to connect to the database
connection = mysql://nova:NOVA_DBPASS@controller/nova</programlisting> connection = mysql://nova:NOVA_DBPASS@controller/nova</programlisting>
</step> </step>
<step os="fedora;rhel;centos;opensuse;sles"> <step os="fedora;rhel;centos;opensuse;sles">
<para>Run the <command>openstack-db</command> command to create <para>Run the <command>openstack-db</command> command to create
the Compute service database and tables and a the Compute service database and tables and a
@ -93,24 +84,22 @@ IDENTIFIED BY '<replaceable>NOVA_DBPASS</replaceable>';</userinput>
IDENTIFIED BY '<replaceable>NOVA_DBPASS</replaceable>';</userinput></screen> IDENTIFIED BY '<replaceable>NOVA_DBPASS</replaceable>';</userinput></screen>
</step> </step>
<step os="ubuntu"> <step os="ubuntu">
<para>Create the tables for the Compute service:</para> <para>Create the Compute service tables:</para>
<screen><prompt>#</prompt> <userinput>nova-manage db sync</userinput></screen> <screen><prompt>#</prompt> <userinput>nova-manage db sync</userinput></screen>
</step> </step>
<step> <step>
<para>Set the <literal>my_ip</literal>, <para>Set the <option>my_ip</option>,
<literal>vncserver_listen</literal>, and <option>vncserver_listen</option>, and
<literal>vncserver_proxyclient_address</literal> <option>vncserver_proxyclient_address</option>
configuration keys to the internal IP address of the configuration options to the internal IP address of the
controller node:</para> controller node:</para>
<screen os="fedora;rhel;centos;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.0.10</userinput> <screen os="fedora;rhel;centos;opensuse;sles"><prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.0.10</userinput>
<prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 192.168.0.10</userinput> <prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 192.168.0.10</userinput>
<prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.0.10</userinput></screen> <prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 192.168.0.10</userinput></screen>
<para os="ubuntu">Edit the <para os="ubuntu">Edit the
<filename>/etc/nova/nova.conf</filename> file and add these <filename>/etc/nova/nova.conf</filename> file and add these
lines to the <literal>[DEFAULT]</literal> section:</para> lines to the <literal>[DEFAULT]</literal> section:</para>
<para os="debian">In Debian, the the <package>debconf</package> <para os="debian">In Debian, the <package>debconf</package>
package automatically sets up <literal>my_ip</literal> package automatically sets up <literal>my_ip</literal>
parameter but you must edit the parameter but you must edit the
<filename>/etc/nova/nova.conf</filename> file to configure <filename>/etc/nova/nova.conf</filename> file to configure
@ -129,7 +118,6 @@ vncserver_proxyclient_address=192.168.0.10</programlisting>
authenticate with the Identity Service. Use the authenticate with the Identity Service. Use the
<literal>service</literal> tenant and give the user the <literal>service</literal> tenant and give the user the
<literal>admin</literal> role:</para> <literal>admin</literal> role:</para>
<screen><prompt>#</prompt> <userinput>keystone user-create --name=nova --pass=<replaceable>NOVA_PASS</replaceable> --email=<replaceable>nova@example.com</replaceable></userinput> <screen><prompt>#</prompt> <userinput>keystone user-create --name=nova --pass=<replaceable>NOVA_PASS</replaceable> --email=<replaceable>nova@example.com</replaceable></userinput>
<prompt>#</prompt> <userinput>keystone user-role-add --user=nova --tenant=service --role=admin</userinput></screen> <prompt>#</prompt> <userinput>keystone user-role-add --user=nova --tenant=service --role=admin</userinput></screen>
</step> </step>
@ -150,16 +138,16 @@ vncserver_proxyclient_address=192.168.0.10</programlisting>
... ...
auth_strategy=keystone</programlisting> auth_strategy=keystone</programlisting>
</step> </step>
<step os="rhel;centos;fedora;opensuse;sles;ubuntu"> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Add the credentials to the <para>Add the credentials to the
<filename>/etc/nova/api-paste.ini</filename> file. Add these <filename>/etc/nova/api-paste.ini</filename> file. Add these
options to the <literal>[filter:authtoken]</literal> options to the <literal>[filter:authtoken]</literal>
section:</para> section:</para>
<note><title>Use of .ini files</title> <note>
<para>Files with the extension <filename>.ini</filename> <title>Use of .ini files</title>
sometimes need to be edited during initial setup. However, <para>You might sometimes have to edit <filename>.ini</filename> files
they should not be used for general configuration tasks.</para> during initial setup. However,
do not edit these files for general configuration tasks.</para>
</note> </note>
<programlisting language="ini">[filter:authtoken] <programlisting language="ini">[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
@ -178,7 +166,6 @@ admin_password=<replaceable>NOVA_PASS</replaceable></programlisting>
</note> </note>
</step> </step>
<step os="rhel;centos;fedora;opensuse;sles;ubuntu"> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>You must register Compute with the Identity Service so <para>You must register Compute with the Identity Service so
that other OpenStack services can locate it. Register the that other OpenStack services can locate it. Register the
service and specify the endpoint:</para> service and specify the endpoint:</para>
@ -186,7 +173,6 @@ admin_password=<replaceable>NOVA_PASS</replaceable></programlisting>
<screen><prompt>#</prompt> <userinput>keystone service-create --name=nova --type=compute \ <screen><prompt>#</prompt> <userinput>keystone service-create --name=nova --type=compute \
--description="Nova Compute service"</userinput></screen> --description="Nova Compute service"</userinput></screen>
</step> </step>
<step os="rhel;centos;fedora;opensuse;sles;ubuntu"> <step os="rhel;centos;fedora;opensuse;sles;ubuntu">
<para>Use the <literal>id</literal> property that is returned to <para>Use the <literal>id</literal> property that is returned to
create the endpoint.</para> create the endpoint.</para>
@ -195,18 +181,15 @@ admin_password=<replaceable>NOVA_PASS</replaceable></programlisting>
--publicurl=http://<replaceable>controller</replaceable>:8774/v2/%\(tenant_id\)s \ --publicurl=http://<replaceable>controller</replaceable>:8774/v2/%\(tenant_id\)s \
--internalurl=http://<replaceable>controller</replaceable>:8774/v2/%\(tenant_id\)s \ --internalurl=http://<replaceable>controller</replaceable>:8774/v2/%\(tenant_id\)s \
--adminurl=http://<replaceable>controller</replaceable>:8774/v2/%\(tenant_id\)s</userinput></screen> --adminurl=http://<replaceable>controller</replaceable>:8774/v2/%\(tenant_id\)s</userinput></screen>
</step> </step>
<step os="fedora;rhel;centos"> <step os="fedora;rhel;centos">
<para>Set these configuration keys to configure Compute to use <para>Set these configuration keys to configure Compute to use
the Qpid message broker:</para> the Qpid message broker:</para>
<screen><prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf \ <screen><prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf \
DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid</userinput> DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid</userinput>
<prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname <replaceable>controller</replaceable></userinput> <prompt>#</prompt> <userinput>openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname <replaceable>controller</replaceable></userinput>
</screen> </screen>
</step> </step>
<step os="ubuntu"> <step os="ubuntu">
<para>Set these configuration keys to configure Compute to use <para>Set these configuration keys to configure Compute to use
the RabbitMQ message broker. Add them to the the RabbitMQ message broker. Add them to the
@ -251,7 +234,6 @@ rabbit_password = <replaceable>RABBIT_PASS</replaceable></programlisting>
<step> <step>
<para>To verify your configuration, list available <para>To verify your configuration, list available
images:</para> images:</para>
<screen><prompt>#</prompt> <userinput>nova image-list</userinput> <screen><prompt>#</prompt> <userinput>nova image-list</userinput>
<computeroutput>+--------------------------------------+-----------------+--------+--------+ <computeroutput>+--------------------------------------+-----------------+--------+--------+
| ID | Name | Status | Server | | ID | Name | Status | Server |