Cloud Admin Guide CLI chapter
Moving (copying) Admin User Guide CLI content to the Cloud Admin Guide as a part of the reorganization goal. This patch does not include any new or original content. This patch is Part 1 to create a new command- line client section for Admin Users in the Cloud Admin Guide, as disucssed in the User Guide Specialty team meetings. 1) Creating a new CLI section with cli.rst 2) Moving the non common files from user-guide-admin to admin-guide-cloud, along with their sub files. (Rename user-guide-admin files to user cli_ prefix in admin- guide-cloud.) manage_projects_users_and_roles.rst nova_cli_manage_projects_security.rst cli_manage_services.rst cli_manage_shares.rst cli_manage_flavors.rst cli_admin_manage_environment.rst cli_set_quotas.rst analyzing-log-files-with-swift-cli.rst cli_cinder_scheduling.rst 3) Attempt updates to several links. Change-Id: I97f4ced4f5033c7e0f3bf00c410288a75699d110 Implements: blueprint user-guides-reorganised
This commit is contained in:
parent
e4fc7027ad
commit
08f0c4aa46
16
doc/admin-guide-cloud/source/cli.rst
Normal file
16
doc/admin-guide-cloud/source/cli.rst
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
==============================
|
||||||
|
OpenStack command-line clients
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
cli_manage_projects_users_and_roles.rst
|
||||||
|
cli_nova_manage_projects_security.rst
|
||||||
|
cli_manage_services.rst
|
||||||
|
cli_manage_shares.rst
|
||||||
|
cli_manage_flavors.rst
|
||||||
|
cli_admin_manage_environment.rst
|
||||||
|
cli_set_quotas.rst
|
||||||
|
cli_analyzing-log-files-with-swift.rst
|
||||||
|
cli_cinder_scheduling.rst
|
@ -0,0 +1,16 @@
|
|||||||
|
================================
|
||||||
|
Manage the OpenStack environment
|
||||||
|
================================
|
||||||
|
|
||||||
|
This section includes tasks specific to the OpenStack environment.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
cli_nova_specify_host.rst
|
||||||
|
cli_nova_numa_libvirt.rst
|
||||||
|
cli_nova_evacuate.rst
|
||||||
|
cli_nova_migrate.rst
|
||||||
|
cli_admin_manage_ip_addresses.rst
|
||||||
|
cli_admin_manage_stacks.rst
|
||||||
|
common/nova_show_usage_statistics_for_hosts_instances.rst
|
107
doc/admin-guide-cloud/source/cli_admin_manage_ip_addresses.rst
Normal file
107
doc/admin-guide-cloud/source/cli_admin_manage_ip_addresses.rst
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
===================
|
||||||
|
Manage IP addresses
|
||||||
|
===================
|
||||||
|
|
||||||
|
Each instance has a private, fixed IP address that is assigned when
|
||||||
|
the instance is launched. In addition, an instance can have a public
|
||||||
|
or floating IP address. Private IP addresses are used for
|
||||||
|
communication between instances, and public IP addresses are used
|
||||||
|
for communication with networks outside the cloud, including the
|
||||||
|
Internet.
|
||||||
|
|
||||||
|
- By default, both administrative and end users can associate floating IP
|
||||||
|
addresses with projects and instances. You can change user permissions for
|
||||||
|
managing IP addresses by updating the ``/etc/nova/policy.json``
|
||||||
|
file. For basic floating-IP procedures, refer to the ``Manage IP
|
||||||
|
Addresses`` section in the `OpenStack End User Guide <http://docs.openstack.org/user-guide/>`_.
|
||||||
|
|
||||||
|
- For details on creating public networks using OpenStack Networking
|
||||||
|
(``neutron``), refer to `Advanced features through API extensions
|
||||||
|
<http://docs.openstack.org/admin-guide-cloud/networking_adv-features.html>`_.
|
||||||
|
No floating IP addresses are created by default in OpenStack Networking.
|
||||||
|
|
||||||
|
As an administrator using legacy networking (``nova-network``), you
|
||||||
|
can use the following bulk commands to list, create, and delete ranges
|
||||||
|
of floating IP addresses. These addresses can then be associated with
|
||||||
|
instances by end users.
|
||||||
|
|
||||||
|
List addresses for all projects
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To list all floating IP addresses for all projects, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova floating-ip-bulk-list
|
||||||
|
+------------+---------------+---------------+--------+-----------+
|
||||||
|
| project_id | address | instance_uuid | pool | interface |
|
||||||
|
+------------+---------------+---------------+--------+-----------+
|
||||||
|
| None | 172.24.4.225 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.226 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.227 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.228 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.229 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.230 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.231 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.232 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.233 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.234 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.235 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.236 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.237 | None | public | eth0 |
|
||||||
|
| None | 172.24.4.238 | None | public | eth0 |
|
||||||
|
| None | 192.168.253.1 | None | test | eth0 |
|
||||||
|
| None | 192.168.253.2 | None | test | eth0 |
|
||||||
|
| None | 192.168.253.3 | None | test | eth0 |
|
||||||
|
| None | 192.168.253.4 | None | test | eth0 |
|
||||||
|
| None | 192.168.253.5 | None | test | eth0 |
|
||||||
|
| None | 192.168.253.6 | None | test | eth0 |
|
||||||
|
+------------+---------------+---------------+--------+-----------+
|
||||||
|
|
||||||
|
Bulk create floating IP addresses
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To create a range of floating IP addresses, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova floating-ip-bulk-create [--pool POOL_NAME] [--interface INTERFACE] RANGE_TO_CREATE
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova floating-ip-bulk-create --pool test 192.168.1.56/29
|
||||||
|
|
||||||
|
By default, ``floating-ip-bulk-create`` uses the
|
||||||
|
``public`` pool and ``eth0`` interface values.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
You should use a range of free IP addresses that is valid for your
|
||||||
|
network. If you are not sure, at least try to avoid the DHCP address
|
||||||
|
range:
|
||||||
|
|
||||||
|
- Pick a small range (/29 gives an 8 address range, 6 of
|
||||||
|
which will be usable).
|
||||||
|
|
||||||
|
- Use :command:`nmap` to check a range's availability. For example,
|
||||||
|
192.168.1.56/29 represents a small range of addresses
|
||||||
|
(192.168.1.56-63, with 57-62 usable), and you could run the
|
||||||
|
command :command:`nmap -sn 192.168.1.56/29` to check whether the entire
|
||||||
|
range is currently unused.
|
||||||
|
|
||||||
|
Bulk delete floating IP addresses
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To delete a range of floating IP addresses, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova floating-ip-bulk-delete RANGE_TO_DELETE
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova floating-ip-bulk-delete 192.168.1.56/29
|
35
doc/admin-guide-cloud/source/cli_admin_manage_stacks.rst
Normal file
35
doc/admin-guide-cloud/source/cli_admin_manage_stacks.rst
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
======================================
|
||||||
|
Launch and manage stacks using the CLI
|
||||||
|
======================================
|
||||||
|
|
||||||
|
The Orchestration service provides a template-based
|
||||||
|
orchestration engine. Administrators can use the orchestration engine
|
||||||
|
to create and manage Openstack cloud infrastructure resources. For
|
||||||
|
example, an administrator can define storage, networking, instances,
|
||||||
|
and applications to use as a repeatable running environment.
|
||||||
|
|
||||||
|
Templates are used to create stacks, which are collections
|
||||||
|
of resources. For example, a stack might include instances,
|
||||||
|
floating IPs, volumes, security groups, or users.
|
||||||
|
The Orchestration service offers access to all OpenStack
|
||||||
|
core services through a single modular template, with additional
|
||||||
|
orchestration capabilities such as auto-scaling and basic
|
||||||
|
high availability.
|
||||||
|
|
||||||
|
For information about:
|
||||||
|
|
||||||
|
- basic creation and deletion of Orchestration stacks, refer
|
||||||
|
to the `OpenStack End User Guide <http://docs.openstack.org/user-guide/dashboard_stacks.html>`_
|
||||||
|
|
||||||
|
- **heat** CLI commands, see the `OpenStack Command Line Interface Reference
|
||||||
|
<http://docs.openstack.org/cli-reference/heat.html>`_
|
||||||
|
|
||||||
|
As an administrator, you can also carry out stack functions
|
||||||
|
on behalf of your users. For example, to resume, suspend,
|
||||||
|
or delete a stack, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ heat action-resume stackID
|
||||||
|
$ heat action-suspend stackID
|
||||||
|
$ heat stack-delete stackID
|
@ -0,0 +1,210 @@
|
|||||||
|
=================
|
||||||
|
Analyze log files
|
||||||
|
=================
|
||||||
|
|
||||||
|
Use the swift command-line client for Object Storage to analyze log files.
|
||||||
|
|
||||||
|
The swift client is simple to use, scalable, and flexible.
|
||||||
|
|
||||||
|
Use the swift client :option:`-o` or :option:`-output` option to get
|
||||||
|
short answers to questions about logs.
|
||||||
|
|
||||||
|
You can use the :option:`-o` or :option:`--output` option with a single object
|
||||||
|
download to redirect the command output to a specific file or to STDOUT
|
||||||
|
(``-``). The ability to redirect the output to STDOUT enables you to
|
||||||
|
pipe (``|``) data without saving it to disk first.
|
||||||
|
|
||||||
|
Upload and analyze log files
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. This example assumes that ``logtest`` directory contains the
|
||||||
|
following log files.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
2010-11-16-21_access.log
|
||||||
|
2010-11-16-22_access.log
|
||||||
|
2010-11-15-21_access.log
|
||||||
|
2010-11-15-22_access.log
|
||||||
|
|
||||||
|
|
||||||
|
Each file uses the following line format.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
Nov 15 21:53:52 lucid64 proxy-server - 127.0.0.1 15/Nov/2010/22/53/52 DELETE /v1/AUTH_cd4f57824deb4248a533f2c28bf156d3/2eefc05599d44df38a7f18b0b42ffedd HTTP/1.0 204 - \
|
||||||
|
- test%3Atester%2CAUTH_tkcdab3c6296e249d7b7e2454ee57266ff - - - txaba5984c-aac7-460e-b04b-afc43f0c6571 - 0.0432
|
||||||
|
|
||||||
|
|
||||||
|
#. Change into the ``logtest`` directory:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cd logtest
|
||||||
|
|
||||||
|
#. Upload the log files into the ``logtest`` container:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ swift -A http://swift-auth.com:11000/v1.0 -U test:tester -K testing upload logtest *.log
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
2010-11-16-21_access.log
|
||||||
|
2010-11-16-22_access.log
|
||||||
|
2010-11-15-21_access.log
|
||||||
|
2010-11-15-22_access.log
|
||||||
|
|
||||||
|
#. Get statistics for the account:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ swift -A http://swift-auth.com:11000/v1.0 -U test:tester -K testing \
|
||||||
|
-q stat
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
Account: AUTH_cd4f57824deb4248a533f2c28bf156d3
|
||||||
|
Containers: 1
|
||||||
|
Objects: 4
|
||||||
|
Bytes: 5888268
|
||||||
|
|
||||||
|
#. Get statistics for the ``logtest`` container:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ swift -A http://swift-auth.com:11000/v1.0 -U test:tester -K testing \
|
||||||
|
stat logtest
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
Account: AUTH_cd4f57824deb4248a533f2c28bf156d3
|
||||||
|
Container: logtest
|
||||||
|
Objects: 4
|
||||||
|
Bytes: 5864468
|
||||||
|
Read ACL:
|
||||||
|
Write ACL:
|
||||||
|
|
||||||
|
#. List all objects in the logtest container:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ swift -A http:///swift-auth.com:11000/v1.0 -U test:tester -K testing \
|
||||||
|
list logtest
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
2010-11-15-21_access.log
|
||||||
|
2010-11-15-22_access.log
|
||||||
|
2010-11-16-21_access.log
|
||||||
|
2010-11-16-22_access.log
|
||||||
|
|
||||||
|
Download and analyze an object
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
This example uses the :option:`-o` option and a hyphen (``-``) to get
|
||||||
|
information about an object.
|
||||||
|
|
||||||
|
Use the :command:`swift download` command to download the object. On this
|
||||||
|
command, stream the output to ``awk`` to break down requests by return
|
||||||
|
code and the date ``2200 on November 16th, 2010``.
|
||||||
|
|
||||||
|
Using the log line format, find the request type in column 9 and the
|
||||||
|
return code in column 12.
|
||||||
|
|
||||||
|
After ``awk`` processes the output, it pipes it to ``sort`` and ``uniq
|
||||||
|
-c`` to sum up the number of occurrences for each request type and
|
||||||
|
return code combination.
|
||||||
|
|
||||||
|
#. Download an object:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ swift -A http://swift-auth.com:11000/v1.0 -U test:tester -K testing \
|
||||||
|
download -o - logtest 2010-11-16-22_access.log | awk '{ print \
|
||||||
|
$9"-"$12}' | sort | uniq -c
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
805 DELETE-204
|
||||||
|
12 DELETE-404
|
||||||
|
2 DELETE-409
|
||||||
|
723 GET-200
|
||||||
|
142 GET-204
|
||||||
|
74 GET-206
|
||||||
|
80 GET-304
|
||||||
|
34 GET-401
|
||||||
|
5 GET-403
|
||||||
|
18 GET-404
|
||||||
|
166 GET-412
|
||||||
|
2 GET-416
|
||||||
|
50 HEAD-200
|
||||||
|
17 HEAD-204
|
||||||
|
20 HEAD-401
|
||||||
|
8 HEAD-404
|
||||||
|
30 POST-202
|
||||||
|
25 POST-204
|
||||||
|
22 POST-400
|
||||||
|
6 POST-404
|
||||||
|
842 PUT-201
|
||||||
|
2 PUT-202
|
||||||
|
32 PUT-400
|
||||||
|
4 PUT-403
|
||||||
|
4 PUT-404
|
||||||
|
2 PUT-411
|
||||||
|
6 PUT-412
|
||||||
|
6 PUT-413
|
||||||
|
2 PUT-422
|
||||||
|
8 PUT-499
|
||||||
|
|
||||||
|
#. Discover how many PUT requests are in each log file.
|
||||||
|
|
||||||
|
Use a bash for loop with awk and swift with the :option:`-o` or
|
||||||
|
:option:`--output` option and a hyphen (``-``) to discover how many
|
||||||
|
PUT requests are in each log file.
|
||||||
|
|
||||||
|
Run the :command:`swift list` command to list objects in the logtest
|
||||||
|
container. Then, for each item in the list, run the
|
||||||
|
:command:`swift download -o -` command. Pipe the output into grep to
|
||||||
|
filter the PUT requests. Finally, pipe into ``wc -l`` to count the lines.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ for f in `swift -A http://swift-auth.com:11000/v1.0 -U test:tester \
|
||||||
|
-K testing list logtest` ; \
|
||||||
|
do echo -ne "PUTS - " ; swift -A \
|
||||||
|
http://swift-auth.com:11000/v1.0 -U test:tester \
|
||||||
|
-K testing download -o - logtest $f | grep PUT | wc -l ; \
|
||||||
|
done
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
2010-11-15-21_access.log - PUTS - 402
|
||||||
|
2010-11-15-22_access.log - PUTS - 1091
|
||||||
|
2010-11-16-21_access.log - PUTS - 892
|
||||||
|
2010-11-16-22_access.log - PUTS - 910
|
||||||
|
|
||||||
|
#. List the object names that begin with a specified string.
|
||||||
|
|
||||||
|
#. Run the :command:`swift list -p 2010-11-15` command to list objects
|
||||||
|
in the logtest container that begin with the ``2010-11-15`` string.
|
||||||
|
|
||||||
|
#. For each item in the list, run the :command:`swift download -o -` command.
|
||||||
|
|
||||||
|
#. Pipe the output to :command:`grep` and :command:`wc`.
|
||||||
|
Use the :command:`echo` command to display the object name.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ for f in `swift -A http://swift-auth.com:11000/v1.0 -U test:tester \
|
||||||
|
-K testing list -p 2010-11-15 logtest` ; \
|
||||||
|
do echo -ne "$f - PUTS - " ; swift -A \
|
||||||
|
http://127.0.0.1:11000/v1.0 -U test:tester \
|
||||||
|
-K testing download -o - logtest $f | grep PUT | wc -l ; \
|
||||||
|
done
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
2010-11-15-21_access.log - PUTS - 402
|
||||||
|
2010-11-15-22_access.log - PUTS - 910
|
||||||
|
|
163
doc/admin-guide-cloud/source/cli_cinder_quotas.rst
Normal file
163
doc/admin-guide-cloud/source/cli_cinder_quotas.rst
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
===================================
|
||||||
|
Manage Block Storage service quotas
|
||||||
|
===================================
|
||||||
|
|
||||||
|
As an administrative user, you can update the OpenStack Block
|
||||||
|
Storage service quotas for a project. You can also update the quota
|
||||||
|
defaults for a new project.
|
||||||
|
|
||||||
|
**Block Storage quotas**
|
||||||
|
|
||||||
|
=================== =============================================
|
||||||
|
Property name Defines the number of
|
||||||
|
=================== =============================================
|
||||||
|
gigabytes Volume gigabytes allowed for each project.
|
||||||
|
snapshots Volume snapshots allowed for each project.
|
||||||
|
volumes Volumes allowed for each project.
|
||||||
|
=================== =============================================
|
||||||
|
|
||||||
|
View Block Storage quotas
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Administrative users can view Block Storage service quotas.
|
||||||
|
|
||||||
|
#. Obtain the project ID.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ project_id=$(openstack project show -f value -c id PROJECT_NAME)
|
||||||
|
|
||||||
|
#. List the default quotas for a project (tenant):
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-defaults PROJECT_ID
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-defaults $project_id
|
||||||
|
+-----------+-------+
|
||||||
|
| Property | Value |
|
||||||
|
+-----------+-------+
|
||||||
|
| gigabytes | 1000 |
|
||||||
|
| snapshots | 10 |
|
||||||
|
| volumes | 10 |
|
||||||
|
+-----------+-------+
|
||||||
|
|
||||||
|
#. View Block Storage service quotas for a project (tenant):
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-show PROJECT_ID
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-show $project_id
|
||||||
|
+-----------+-------+
|
||||||
|
| Property | Value |
|
||||||
|
+-----------+-------+
|
||||||
|
| gigabytes | 1000 |
|
||||||
|
| snapshots | 10 |
|
||||||
|
| volumes | 10 |
|
||||||
|
+-----------+-------+
|
||||||
|
|
||||||
|
#. Show the current usage of a per-project quota:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-usage PROJECT_ID
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-usage $project_id
|
||||||
|
+-----------+--------+----------+-------+
|
||||||
|
| Type | In_use | Reserved | Limit |
|
||||||
|
+-----------+--------+----------+-------+
|
||||||
|
| gigabytes | 0 | 0 | 1000 |
|
||||||
|
| snapshots | 0 | 0 | 10 |
|
||||||
|
| volumes | 0 | 0 | 15 |
|
||||||
|
+-----------+--------+----------+-------+
|
||||||
|
|
||||||
|
Edit and update Block Storage service quotas
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Administrative users can edit and update Block Storage
|
||||||
|
service quotas.
|
||||||
|
|
||||||
|
#. Clear per-project quota limits.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-delete PROJECT_ID
|
||||||
|
|
||||||
|
#. To update a default value for a new project,
|
||||||
|
update the property in the :guilabel:`cinder.quota`
|
||||||
|
section of the ``/etc/cinder/cinder.conf`` file.
|
||||||
|
For more information, see the `Block Storage
|
||||||
|
Configuration Reference <http://docs.openstack.org/liberty/config-reference/content/ch_configuring-openstack-block-storage.html>`_.
|
||||||
|
|
||||||
|
#. To update Block Storage service quotas for an existing project (tenant)
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-update --QUOTA_NAME QUOTA_VALUE PROJECT_ID
|
||||||
|
|
||||||
|
Replace QUOTA_NAME with the quota that is to be updated, NEW_VALUE
|
||||||
|
with the required new value, and PROJECT_ID with required project
|
||||||
|
ID.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-update --volumes 15 $project_id
|
||||||
|
$ cinder quota-show $project_id
|
||||||
|
+-----------+-------+
|
||||||
|
| Property | Value |
|
||||||
|
+-----------+-------+
|
||||||
|
| gigabytes | 1000 |
|
||||||
|
| snapshots | 10 |
|
||||||
|
| volumes | 15 |
|
||||||
|
+-----------+-------+
|
||||||
|
|
||||||
|
|
||||||
|
#. Clear per-project quota limits.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder quota-delete PROJECT_ID
|
||||||
|
|
||||||
|
Remove a service
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Determine the binary and host of the service you want to remove.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder service-list
|
||||||
|
+------------------+----------------------+------+---------+-------+----------------------------+-----------------+
|
||||||
|
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
|
||||||
|
+------------------+----------------------+------+---------+-------+----------------------------+-----------------+
|
||||||
|
| cinder-scheduler | devstack | nova | enabled | up | 2015-10-13T15:21:48.000000 | - |
|
||||||
|
| cinder-volume | devstack@lvmdriver-1 | nova | enabled | up | 2015-10-13T15:21:52.000000 | - |
|
||||||
|
+------------------+----------------------+------+---------+-------+----------------------------+-----------------+
|
||||||
|
|
||||||
|
#. Disable the service.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder service-disable HOST_NAME BINARY_NAME
|
||||||
|
|
||||||
|
#. Remove the service from the database.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder-manage service remove BINARY_NAME HOST_NAME
|
53
doc/admin-guide-cloud/source/cli_cinder_scheduling.rst
Normal file
53
doc/admin-guide-cloud/source/cli_cinder_scheduling.rst
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
===============================
|
||||||
|
Manage Block Storage scheduling
|
||||||
|
===============================
|
||||||
|
|
||||||
|
As an administrative user, you have some control over which volume
|
||||||
|
back end your volumes reside on. You can specify affinity or
|
||||||
|
anti-affinity between two volumes. Affinity between volumes means
|
||||||
|
that they are stored on the same back end, whereas anti-affinity
|
||||||
|
means that they are stored on different back ends.
|
||||||
|
|
||||||
|
For information on how to set up multiple back ends for Cinder,
|
||||||
|
refer to the guide for `Configuring multiple-storage back ends
|
||||||
|
<http://docs.openstack.org/admin-guide-cloud/blockstorage_multi_backend.html>`__.
|
||||||
|
|
||||||
|
Example Usages
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Create a new volume on the same back end as Volume_A:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder create --hint same_host=Volume_A-UUID SIZE
|
||||||
|
|
||||||
|
#. Create a new volume on a different back end than Volume_A:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder create --hint different_host=Volume_A-UUID SIZE
|
||||||
|
|
||||||
|
#. Create a new volume on the same back end as Volume_A and Volume_B:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder create --hint same_host=Volume_A-UUID --hint same_host=Volume_B-UUID SIZE
|
||||||
|
|
||||||
|
Or:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder create --hint same_host="[Volume_A-UUID, Volume_B-UUID]" SIZE
|
||||||
|
|
||||||
|
#. Create a new volume on a different back end than both Volume_A and
|
||||||
|
Volume_B:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder create --hint different_host=Volume_A-UUID --hint different_host=Volume_B-UUID SIZE
|
||||||
|
|
||||||
|
Or:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cinder create --hint different_host="[Volume_A-UUID, Volume_B-UUID]" SIZE
|
155
doc/admin-guide-cloud/source/cli_keystone_manage_services.rst
Normal file
155
doc/admin-guide-cloud/source/cli_keystone_manage_services.rst
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
============================================
|
||||||
|
Create and manage services and service users
|
||||||
|
============================================
|
||||||
|
|
||||||
|
The Identity service enables you to define services, as
|
||||||
|
follows:
|
||||||
|
|
||||||
|
- Service catalog template. The Identity service acts
|
||||||
|
as a service catalog of endpoints for other OpenStack
|
||||||
|
services. The ``/etc/default_catalog.templates``
|
||||||
|
template file defines the endpoints for services. When
|
||||||
|
the Identity service uses a template file back end,
|
||||||
|
any changes that are made to the endpoints are cached.
|
||||||
|
These changes do not persist when you restart the
|
||||||
|
service or reboot the machine.
|
||||||
|
- An SQL back end for the catalog service. When the
|
||||||
|
Identity service is online, you must add the services
|
||||||
|
to the catalog. When you deploy a system for
|
||||||
|
production, use the SQL back end.
|
||||||
|
|
||||||
|
The ``auth_token`` middleware supports the
|
||||||
|
use of either a shared secret or users for each
|
||||||
|
service.
|
||||||
|
|
||||||
|
To authenticate users against the Identity service, you must
|
||||||
|
create a service user for each OpenStack service. For example,
|
||||||
|
create a service user for the Compute, Block Storage, and
|
||||||
|
Networking services.
|
||||||
|
|
||||||
|
To configure the OpenStack services with service users,
|
||||||
|
create a project for all services and create users for each
|
||||||
|
service. Assign the admin role to each service user and
|
||||||
|
project pair. This role enables users to validate tokens and
|
||||||
|
authenticate and authorize other user requests.
|
||||||
|
|
||||||
|
Create a service
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. List the available services:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack service list
|
||||||
|
+----------------------------------+----------+------------+
|
||||||
|
| ID | Name | Type |
|
||||||
|
+----------------------------------+----------+------------+
|
||||||
|
| 9816f1faaa7c4842b90fb4821cd09223 | cinder | volume |
|
||||||
|
| 1250f64f31e34dcd9a93d35a075ddbe1 | cinderv2 | volumev2 |
|
||||||
|
| da8cf9f8546b4a428c43d5e032fe4afc | ec2 | ec2 |
|
||||||
|
| 5f105eeb55924b7290c8675ad7e294ae | glance | image |
|
||||||
|
| dcaa566e912e4c0e900dc86804e3dde0 | keystone | identity |
|
||||||
|
| 4a715cfbc3664e9ebf388534ff2be76a | nova | compute |
|
||||||
|
| 1aed4a6cf7274297ba4026cf5d5e96c5 | novav21 | computev21 |
|
||||||
|
| bed063c790634c979778551f66c8ede9 | neutron | network |
|
||||||
|
| 6feb2e0b98874d88bee221974770e372 | s3 | s3 |
|
||||||
|
+----------------------------------+----------+------------+
|
||||||
|
|
||||||
|
#. To create a service, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack service create --name SERVICE_NAME --description SERVICE_DESCRIPTION SERVICE_TYPE
|
||||||
|
|
||||||
|
The arguments are:
|
||||||
|
- ``service_name``: the unique name of the new service.
|
||||||
|
- ``service_type``: the service type, such as ``identity``,
|
||||||
|
``compute``, ``network``, ``image``, ``object-store``
|
||||||
|
or any other service identifier string.
|
||||||
|
- ``service_description``: the description of the service.
|
||||||
|
|
||||||
|
For example, to create a ``swift`` service of type
|
||||||
|
``object-store``, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack service create --name swift --description "object store service" object-store
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| description | object store service |
|
||||||
|
| enabled | True |
|
||||||
|
| id | 84c23f4b942c44c38b9c42c5e517cd9a |
|
||||||
|
| name | swift |
|
||||||
|
| type | object-store |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
|
||||||
|
#. To get details for a service, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack service show SERVICE_TYPE|SERVICE_NAME|SERVICE_ID
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack service show object-store
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| description | object store service |
|
||||||
|
| enabled | True |
|
||||||
|
| id | 84c23f4b942c44c38b9c42c5e517cd9a |
|
||||||
|
| name | swift |
|
||||||
|
| type | object-store |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
|
||||||
|
Create service users
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Create a project for the service users.
|
||||||
|
Typically, this project is named ``service``,
|
||||||
|
but choose any name you like:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project create service
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| description | None |
|
||||||
|
| enabled | True |
|
||||||
|
| id | 3e9f3f5399624b2db548d7f871bd5322 |
|
||||||
|
| name | service |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
|
||||||
|
#. Create service users for the relevant services for your
|
||||||
|
deployment.
|
||||||
|
|
||||||
|
#. Assign the admin role to the user-project pair.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role add --project service --user SERVICE_USER_NAME admin
|
||||||
|
+-------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------+----------------------------------+
|
||||||
|
| id | 233109e756c1465292f31e7662b429b1 |
|
||||||
|
| name | admin |
|
||||||
|
+-------+----------------------------------+
|
||||||
|
|
||||||
|
Delete a service
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To delete a specified service, specify its ID.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack service delete SERVICE_TYPE|SERVICE_NAME|SERVICE_ID
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack service delete object-store
|
150
doc/admin-guide-cloud/source/cli_manage_flavors.rst
Normal file
150
doc/admin-guide-cloud/source/cli_manage_flavors.rst
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
==============
|
||||||
|
Manage flavors
|
||||||
|
==============
|
||||||
|
|
||||||
|
In OpenStack, flavors define the compute, memory, and
|
||||||
|
storage capacity of nova computing instances. To put it
|
||||||
|
simply, a flavor is an available hardware configuration for a
|
||||||
|
server. It defines the ``size`` of a virtual server
|
||||||
|
that can be launched.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Flavors can also determine on which compute host a flavor
|
||||||
|
can be used to launch an instance. For information
|
||||||
|
about customizing flavors, refer to `Flavors
|
||||||
|
<http://docs.openstack.org/admin-guide-cloud/compute-flavors.html>`_.
|
||||||
|
|
||||||
|
A flavor consists of the following parameters:
|
||||||
|
|
||||||
|
Flavor ID
|
||||||
|
Unique ID (integer or UUID) for the new flavor. If
|
||||||
|
specifying 'auto', a UUID will be automatically generated.
|
||||||
|
|
||||||
|
Name
|
||||||
|
Name for the new flavor.
|
||||||
|
|
||||||
|
VCPUs
|
||||||
|
Number of virtual CPUs to use.
|
||||||
|
|
||||||
|
Memory MB
|
||||||
|
Amount of RAM to use (in megabytes).
|
||||||
|
|
||||||
|
Root Disk GB
|
||||||
|
Amount of disk space (in gigabytes) to use for
|
||||||
|
the root (/) partition.
|
||||||
|
|
||||||
|
Ephemeral Disk GB
|
||||||
|
Amount of disk space (in gigabytes) to use for
|
||||||
|
the ephemeral partition. If unspecified, the value
|
||||||
|
is 0 by default.
|
||||||
|
Ephemeral disks offer machine local disk storage
|
||||||
|
linked to the lifecycle of a VM instance. When a
|
||||||
|
VM is terminated, all data on the ephemeral disk
|
||||||
|
is lost. Ephemeral disks are not included in any
|
||||||
|
snapshots.
|
||||||
|
|
||||||
|
Swap
|
||||||
|
Amount of swap space (in megabytes) to use. If
|
||||||
|
unspecified, the value is 0 by default.
|
||||||
|
|
||||||
|
The default flavors are:
|
||||||
|
|
||||||
|
============ ========= =============== ===============
|
||||||
|
Flavor VCPUs Disk (in GB) RAM (in MB)
|
||||||
|
============ ========= =============== ===============
|
||||||
|
m1.tiny 1 1 512
|
||||||
|
m1.small 1 20 2048
|
||||||
|
m1.medium 2 40 4096
|
||||||
|
m1.large 4 80 8192
|
||||||
|
m1.xlarge 8 160 16384
|
||||||
|
============ ========= =============== ===============
|
||||||
|
|
||||||
|
You can create and manage flavors with the nova
|
||||||
|
**flavor-*** commands provided by the ``python-novaclient``
|
||||||
|
package.
|
||||||
|
|
||||||
|
Create a flavor
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. List flavors to show the ID and name, the amount
|
||||||
|
of memory, the amount of disk space for the root
|
||||||
|
partition and for the ephemeral partition, the
|
||||||
|
swap, and the number of virtual CPUs for each
|
||||||
|
flavor:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova flavor-list
|
||||||
|
|
||||||
|
#. To create a flavor, specify a name, ID, RAM
|
||||||
|
size, disk size, and the number of VCPUs for the
|
||||||
|
flavor, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova flavor-create FLAVOR_NAME FLAVOR_ID RAM_IN_MB ROOT_DISK_IN_GB NUMBER_OF_VCPUS
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Unique ID (integer or UUID) for the new flavor. If
|
||||||
|
specifying 'auto', a UUID will be automatically generated.
|
||||||
|
|
||||||
|
Here is an example with additional optional
|
||||||
|
parameters filled in that creates a public ``extra
|
||||||
|
tiny`` flavor that automatically gets an ID
|
||||||
|
assigned, with 256 MB memory, no disk space, and
|
||||||
|
one VCPU. The rxtx-factor indicates the slice of
|
||||||
|
bandwidth that the instances with this flavor can
|
||||||
|
use (through the Virtual Interface (vif) creation
|
||||||
|
in the hypervisor):
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova flavor-create --is-public true m1.extra_tiny auto 256 0 1 --rxtx-factor .1
|
||||||
|
|
||||||
|
#. If an individual user or group of users needs a custom
|
||||||
|
flavor that you do not want other tenants to have access to,
|
||||||
|
you can change the flavor's access to make it a private flavor.
|
||||||
|
See `Private Flavors in the OpenStack Operations Guide <http://docs.openstack.org/openstack-ops/content/private-flavors.html>`_.
|
||||||
|
|
||||||
|
For a list of optional parameters, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova help flavor-create
|
||||||
|
|
||||||
|
#. After you create a flavor, assign it to a
|
||||||
|
project by specifying the flavor name or ID and
|
||||||
|
the tenant ID:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova flavor-access-add FLAVOR TENANT_ID
|
||||||
|
|
||||||
|
#. In addition, you can set or unset ``extra_spec`` for the existing flavor.
|
||||||
|
The ``extra_spec`` metadata keys can influence the instance directly when
|
||||||
|
it is launched. If a flavor sets the
|
||||||
|
``extra_spec key/value quota:vif_outbound_peak=65536``, the instance's
|
||||||
|
outbound peak bandwidth I/O should be LTE 512 Mbps. There are several
|
||||||
|
aspects that can work for an instance including ``CPU limits``,
|
||||||
|
``Disk tuning``, ``Bandwidth I/O``, ``Watchdog behavior``, and
|
||||||
|
``Random-number generator``.
|
||||||
|
For information about supporting metadata keys, see
|
||||||
|
`Flavors
|
||||||
|
<http://docs.openstack.org/admin-guide-cloud/compute-flavors.html>`__.
|
||||||
|
|
||||||
|
For a list of optional parameters, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova help flavor-key
|
||||||
|
|
||||||
|
Delete a flavor
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Delete a specified flavor, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova flavor-delete FLAVOR_ID
|
@ -0,0 +1,351 @@
|
|||||||
|
=================================
|
||||||
|
Manage projects, users, and roles
|
||||||
|
=================================
|
||||||
|
|
||||||
|
As a cloud administrator, you manage projects, users, and
|
||||||
|
roles. Projects are organizational units in the cloud to which
|
||||||
|
you can assign users. Projects are also known as *tenants* or
|
||||||
|
*accounts*. Users can be members of one or more projects. Roles
|
||||||
|
define which actions users can perform. You assign roles to
|
||||||
|
user-project pairs.
|
||||||
|
|
||||||
|
You can define actions for OpenStack service roles in the
|
||||||
|
``/etc/PROJECT/policy.json`` files. For example, define actions for
|
||||||
|
Compute service roles in the ``/etc/nova/policy.json`` file.
|
||||||
|
|
||||||
|
You can manage projects, users, and roles independently from each other.
|
||||||
|
|
||||||
|
During cloud set up, the operator defines at least one project, user,
|
||||||
|
and role.
|
||||||
|
|
||||||
|
You can add, update, and delete projects and users, assign users to
|
||||||
|
one or more projects, and change or remove the assignment. To enable or
|
||||||
|
temporarily disable a project or user, update that project or user.
|
||||||
|
You can also change quotas at the project level.
|
||||||
|
|
||||||
|
Before you can delete a user account, you must remove the user account
|
||||||
|
from its primary project.
|
||||||
|
|
||||||
|
Before you can run client commands, you must download and
|
||||||
|
source an OpenStack RC file. See `Download and source the OpenStack RC file
|
||||||
|
<http://docs.openstack.org/user-guide/common/cli_set_environment_variables_using_openstack_rc.html#download-and-source-the-openstack-rc-file>`_.
|
||||||
|
|
||||||
|
Projects
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
A project is a group of zero or more users. In Compute, a project owns
|
||||||
|
virtual machines. In Object Storage, a project owns containers. Users
|
||||||
|
can be associated with more than one project. Each project and user
|
||||||
|
pairing can have a role associated with it.
|
||||||
|
|
||||||
|
List projects
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
List all projects with their ID, name, and whether they are
|
||||||
|
enabled or disabled:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project list
|
||||||
|
+----------------------------------+--------------------+
|
||||||
|
| id | name |
|
||||||
|
+----------------------------------+--------------------+
|
||||||
|
| f7ac731cc11f40efbc03a9f9e1d1d21f | admin |
|
||||||
|
| c150ab41f0d9443f8874e32e725a4cc8 | alt_demo |
|
||||||
|
| a9debfe41a6d4d09a677da737b907d5e | demo |
|
||||||
|
| 9208739195a34c628c58c95d157917d7 | invisible_to_admin |
|
||||||
|
| 3943a53dc92a49b2827fae94363851e1 | service |
|
||||||
|
| 80cab5e1f02045abad92a2864cfd76cb | test_project |
|
||||||
|
+----------------------------------+--------------------+
|
||||||
|
|
||||||
|
Create a project
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Create a project named ``new-project``:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project create --description 'my new project' new-project
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| description | my new project |
|
||||||
|
| enabled | True |
|
||||||
|
| id | 1a4a0618b306462c9830f876b0bd6af2 |
|
||||||
|
| name | new-project |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
|
||||||
|
Update a project
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Specify the project ID to update a project. You can update the name,
|
||||||
|
description, and enabled status of a project.
|
||||||
|
|
||||||
|
- To temporarily disable a project:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project set PROJECT_ID --disable
|
||||||
|
|
||||||
|
- To enable a disabled project:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project set PROJECT_ID --enable
|
||||||
|
|
||||||
|
- To update the name of a project:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project set PROJECT_ID --name project-new
|
||||||
|
|
||||||
|
- To verify your changes, show information for the updated project:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project show PROJECT_ID
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
| description | my new project |
|
||||||
|
| enabled | True |
|
||||||
|
| id | 1a4a0618b306462c9830f876b0bd6af2 |
|
||||||
|
| name | project-new |
|
||||||
|
+-------------+----------------------------------+
|
||||||
|
|
||||||
|
Delete a project
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Specify the project ID to delete a project:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project delete PROJECT_ID
|
||||||
|
|
||||||
|
Users
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
List users
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
List all users:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user list
|
||||||
|
+----------------------------------+----------+
|
||||||
|
| id | name |
|
||||||
|
+----------------------------------+----------+
|
||||||
|
| 352b37f5c89144d4ad0534139266d51f | admin |
|
||||||
|
| 86c0de739bcb4802b8dc786921355813 | demo |
|
||||||
|
| 32ec34aae8ea432e8af560a1cec0e881 | glance |
|
||||||
|
| 7047fcb7908e420cb36e13bbd72c972c | nova |
|
||||||
|
+----------------------------------+----------+
|
||||||
|
|
||||||
|
Create a user
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
To create a user, you must specify a name. Optionally, you can
|
||||||
|
specify a tenant ID, password, and email address. It is recommended
|
||||||
|
that you include the tenant ID and password because the user cannot
|
||||||
|
log in to the dashboard without this information.
|
||||||
|
|
||||||
|
Create the ``new-user`` user:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user create --project new-project --password PASSWORD new-user
|
||||||
|
+----------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+----------+----------------------------------+
|
||||||
|
| email | |
|
||||||
|
| enabled | True |
|
||||||
|
| id | 6e5140962b424cb9814fb172889d3be2 |
|
||||||
|
| name | new-user |
|
||||||
|
| tenantId | new-project |
|
||||||
|
+----------+----------------------------------+
|
||||||
|
|
||||||
|
Update a user
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
You can update the name, email address, and enabled status for a user.
|
||||||
|
|
||||||
|
- To temporarily disable a user account:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user set USER_NAME --disable
|
||||||
|
|
||||||
|
If you disable a user account, the user cannot log in to the
|
||||||
|
dashboard. However, data for the user account is maintained, so you
|
||||||
|
can enable the user at any time.
|
||||||
|
|
||||||
|
- To enable a disabled user account:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user set USER_NAME --enable
|
||||||
|
|
||||||
|
- To change the name and description for a user account:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user set USER_NAME --name user-new --email new-user@example.com
|
||||||
|
User has been updated.
|
||||||
|
|
||||||
|
Delete a user
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Delete a specified user account:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user delete USER_NAME
|
||||||
|
|
||||||
|
Roles and role assignments
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
List available roles
|
||||||
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
List the available roles:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role list
|
||||||
|
+----------------------------------+---------------+
|
||||||
|
| id | name |
|
||||||
|
+----------------------------------+---------------+
|
||||||
|
| 71ccc37d41c8491c975ae72676db687f | Member |
|
||||||
|
| 149f50a1fe684bfa88dae76a48d26ef7 | ResellerAdmin |
|
||||||
|
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
|
||||||
|
| 6ecf391421604da985db2f141e46a7c8 | admin |
|
||||||
|
| deb4fffd123c4d02a907c2c74559dccf | anotherrole |
|
||||||
|
+----------------------------------+---------------+
|
||||||
|
|
||||||
|
Create a role
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Users can be members of multiple projects. To assign users to multiple
|
||||||
|
projects, define a role and assign that role to a user-project pair.
|
||||||
|
|
||||||
|
Create the ``new-role`` role:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role create new-role
|
||||||
|
+--------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+--------+----------------------------------+
|
||||||
|
| id | bef1f95537914b1295da6aa038ef4de6 |
|
||||||
|
| name | new-role |
|
||||||
|
+--------+----------------------------------+
|
||||||
|
|
||||||
|
Assign a role
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
To assign a user to a project, you must assign the role to a
|
||||||
|
user-project pair. To do this, you need the user, role, and project
|
||||||
|
IDs.
|
||||||
|
|
||||||
|
#. List users and note the user ID you want to assign to the role:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user list
|
||||||
|
+----------------------------------+----------+---------+----------------------+
|
||||||
|
| id | name | enabled | email |
|
||||||
|
+----------------------------------+----------+---------+----------------------+
|
||||||
|
| 352b37f5c89144d4ad0534139266d51f | admin | True | admin@example.com |
|
||||||
|
| 981422ec906d4842b2fc2a8658a5b534 | alt_demo | True | alt_demo@example.com |
|
||||||
|
| 036e22a764ae497992f5fb8e9fd79896 | cinder | True | cinder@example.com |
|
||||||
|
| 86c0de739bcb4802b8dc786921355813 | demo | True | demo@example.com |
|
||||||
|
| 32ec34aae8ea432e8af560a1cec0e881 | glance | True | glance@example.com |
|
||||||
|
| 7047fcb7908e420cb36e13bbd72c972c | nova | True | nova@example.com |
|
||||||
|
+----------------------------------+----------+---------+----------------------+
|
||||||
|
|
||||||
|
#. List role IDs and note the role ID you want to assign:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role list
|
||||||
|
+----------------------------------+---------------+
|
||||||
|
| id | name |
|
||||||
|
+----------------------------------+---------------+
|
||||||
|
| 71ccc37d41c8491c975ae72676db687f | Member |
|
||||||
|
| 149f50a1fe684bfa88dae76a48d26ef7 | ResellerAdmin |
|
||||||
|
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
|
||||||
|
| 6ecf391421604da985db2f141e46a7c8 | admin |
|
||||||
|
| deb4fffd123c4d02a907c2c74559dccf | anotherrole |
|
||||||
|
| bef1f95537914b1295da6aa038ef4de6 | new-role |
|
||||||
|
+----------------------------------+---------------+
|
||||||
|
|
||||||
|
#. List projects and note the project ID you want to assign to the role:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project list
|
||||||
|
+----------------------------------+--------------------+---------+
|
||||||
|
| id | name | enabled |
|
||||||
|
+----------------------------------+--------------------+---------+
|
||||||
|
| f7ac731cc11f40efbc03a9f9e1d1d21f | admin | True |
|
||||||
|
| c150ab41f0d9443f8874e32e725a4cc8 | alt_demo | True |
|
||||||
|
| a9debfe41a6d4d09a677da737b907d5e | demo | True |
|
||||||
|
| 9208739195a34c628c58c95d157917d7 | invisible_to_admin | True |
|
||||||
|
| caa9b4ce7d5c4225aa25d6ff8b35c31f | new-user | True |
|
||||||
|
| 1a4a0618b306462c9830f876b0bd6af2 | project-new | True |
|
||||||
|
| 3943a53dc92a49b2827fae94363851e1 | service | True |
|
||||||
|
| 80cab5e1f02045abad92a2864cfd76cb | test_project | True |
|
||||||
|
+----------------------------------+--------------------+---------+
|
||||||
|
|
||||||
|
#. Assign a role to a user-project pair. In this example, assign the
|
||||||
|
``new-role`` role to the ``demo`` and ``test-project`` pair:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role add --user USER_NAME --project TENANT_ID ROLE_NAME
|
||||||
|
|
||||||
|
#. Verify the role assignment:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role list --user USER_NAME --project TENANT_ID
|
||||||
|
+--------------+----------+---------------------------+--------------+
|
||||||
|
| id | name | user_id | tenant_id |
|
||||||
|
+--------------+----------+---------------------------+--------------+
|
||||||
|
| bef1f9553... | new-role | 86c0de739bcb4802b21355... | 80cab5e1f... |
|
||||||
|
+--------------+----------+---------------------------+--------------+
|
||||||
|
|
||||||
|
View role details
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
View details for a specified role:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role show ROLE_NAME
|
||||||
|
+----------+----------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+----------+----------------------------------+
|
||||||
|
| id | bef1f95537914b1295da6aa038ef4de6 |
|
||||||
|
| name | new-role |
|
||||||
|
+----------+----------------------------------+
|
||||||
|
|
||||||
|
Remove a role
|
||||||
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Remove a role from a user-project pair:
|
||||||
|
|
||||||
|
#. Run the :command:`openstack role remove` command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role remove --user USER_NAME --project TENANT_ID ROLE_NAME
|
||||||
|
|
||||||
|
#. Verify the role removal:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack role list --user USER_NAME --project TENANT_ID
|
||||||
|
|
||||||
|
If the role was removed, the command output omits the removed role.
|
9
doc/admin-guide-cloud/source/cli_manage_services.rst
Normal file
9
doc/admin-guide-cloud/source/cli_manage_services.rst
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
===============
|
||||||
|
Manage services
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
cli_keystone_manage_services.rst
|
||||||
|
cli_nova_manage_services.rst
|
40
doc/admin-guide-cloud/source/cli_manage_shares.rst
Normal file
40
doc/admin-guide-cloud/source/cli_manage_shares.rst
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
.. _share:
|
||||||
|
|
||||||
|
=============
|
||||||
|
Manage shares
|
||||||
|
=============
|
||||||
|
|
||||||
|
A share is provided by file storage. You can give access to a share to
|
||||||
|
instances. To create and manage shares, use ``manila`` client commands.
|
||||||
|
|
||||||
|
Migrate a share
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
As an administrator, you can migrate a share with its data from one
|
||||||
|
location to another in a manner that is transparent to users and
|
||||||
|
workloads.
|
||||||
|
|
||||||
|
Possible use cases for data migration include:
|
||||||
|
|
||||||
|
- Bring down a physical storage device for maintenance without
|
||||||
|
disrupting workloads.
|
||||||
|
|
||||||
|
- Modify the properties of a share.
|
||||||
|
|
||||||
|
- Free up space in a thinly-provisioned back end.
|
||||||
|
|
||||||
|
Migrate a share with the :command:`manila migrate` command, as shown in the
|
||||||
|
following example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ manila migrate shareID destinationHost --force-host-copy True|False
|
||||||
|
|
||||||
|
In this example, :option:`--force-host-copy True` forces the generic
|
||||||
|
host-based migration mechanism and bypasses any driver optimizations.
|
||||||
|
``destinationHost`` is in this format ``host#pool`` which includes
|
||||||
|
destination host and pool.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If the user is not an administrator, the migration fails.
|
321
doc/admin-guide-cloud/source/cli_networking_advanced_quotas.rst
Normal file
321
doc/admin-guide-cloud/source/cli_networking_advanced_quotas.rst
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
================================
|
||||||
|
Manage Networking service quotas
|
||||||
|
================================
|
||||||
|
|
||||||
|
A quota limits the number of available resources. A default
|
||||||
|
quota might be enforced for all tenants. When you try to create
|
||||||
|
more resources than the quota allows, an error occurs:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
$ neutron net-create test_net
|
||||||
|
Quota exceeded for resources: ['network']
|
||||||
|
|
||||||
|
Per-tenant quota configuration is also supported by the quota
|
||||||
|
extension API. See :ref:`cfg_quotas_per_tenant` for details.
|
||||||
|
|
||||||
|
Basic quota configuration
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
In the Networking default quota mechanism, all tenants have
|
||||||
|
the same quota values, such as the number of resources that a
|
||||||
|
tenant can create.
|
||||||
|
|
||||||
|
The quota value is defined in the OpenStack Networking
|
||||||
|
``neutron.conf`` configuration file. To disable quotas for
|
||||||
|
a specific resource, such as network, subnet,
|
||||||
|
or port, remove a corresponding item from ``quota_items``.
|
||||||
|
This example shows the default quota values:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[quotas]
|
||||||
|
# resource name(s) that are supported in quota features
|
||||||
|
quota_items = network,subnet,port
|
||||||
|
|
||||||
|
# number of networks allowed per tenant, and minus means unlimited
|
||||||
|
quota_network = 10
|
||||||
|
|
||||||
|
# number of subnets allowed per tenant, and minus means unlimited
|
||||||
|
quota_subnet = 10
|
||||||
|
|
||||||
|
# number of ports allowed per tenant, and minus means unlimited
|
||||||
|
quota_port = 50
|
||||||
|
|
||||||
|
# default driver to use for quota checks
|
||||||
|
quota_driver = neutron.quota.ConfDriver
|
||||||
|
|
||||||
|
OpenStack Networking also supports quotas for L3 resources:
|
||||||
|
router and floating IP. Add these lines to the
|
||||||
|
``quotas`` section in the ``neutron.conf`` file:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[quotas]
|
||||||
|
# number of routers allowed per tenant, and minus means unlimited
|
||||||
|
quota_router = 10
|
||||||
|
|
||||||
|
# number of floating IPs allowed per tenant, and minus means unlimited
|
||||||
|
quota_floatingip = 50
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The ``quota_items`` option does not affect these quotas.
|
||||||
|
|
||||||
|
OpenStack Networking also supports quotas for security group
|
||||||
|
resources: number of security groups and the number of rules for
|
||||||
|
each security group. Add these lines to the
|
||||||
|
``quotas`` section in the ``neutron.conf`` file:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[quotas]
|
||||||
|
# number of security groups per tenant, and minus means unlimited
|
||||||
|
quota_security_group = 10
|
||||||
|
|
||||||
|
# number of security rules allowed per tenant, and minus means unlimited
|
||||||
|
quota_security_group_rule = 100
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The ``quota_items`` option does not affect these quotas.
|
||||||
|
|
||||||
|
.. _cfg_quotas_per_tenant:
|
||||||
|
|
||||||
|
Configure per-tenant quotas
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
OpenStack Networking also supports per-tenant quota limit by
|
||||||
|
quota extension API.
|
||||||
|
|
||||||
|
Use these commands to manage per-tenant quotas:
|
||||||
|
|
||||||
|
neutron quota-delete
|
||||||
|
Delete defined quotas for a specified tenant
|
||||||
|
|
||||||
|
neutron quota-list
|
||||||
|
Lists defined quotas for all tenants
|
||||||
|
|
||||||
|
neutron quota-show
|
||||||
|
Shows quotas for a specified tenant
|
||||||
|
|
||||||
|
neutron quota-update
|
||||||
|
Updates quotas for a specified tenant
|
||||||
|
|
||||||
|
Only users with the ``admin`` role can change a quota value. By default,
|
||||||
|
the default set of quotas are enforced for all tenants, so no
|
||||||
|
:command:`quota-create` command exists.
|
||||||
|
|
||||||
|
#. Configure Networking to show per-tenant quotas
|
||||||
|
|
||||||
|
Set the ``quota_driver`` option in the ``neutron.conf`` file.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
quota_driver = neutron.db.quota_db.DbQuotaDriver
|
||||||
|
|
||||||
|
When you set this option, the output for Networking commands shows ``quotas``.
|
||||||
|
|
||||||
|
#. List Networking extensions.
|
||||||
|
|
||||||
|
To list the Networking extensions, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron ext-list -c alias -c name
|
||||||
|
|
||||||
|
The command shows the ``quotas`` extension, which provides
|
||||||
|
per-tenant quota management support.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
+-----------------+--------------------------+
|
||||||
|
| alias | name |
|
||||||
|
+-----------------+--------------------------+
|
||||||
|
| agent_scheduler | Agent Schedulers |
|
||||||
|
| security-group | security-group |
|
||||||
|
| binding | Port Binding |
|
||||||
|
| quotas | Quota management support |
|
||||||
|
| agent | agent |
|
||||||
|
| provider | Provider Network |
|
||||||
|
| router | Neutron L3 Router |
|
||||||
|
| lbaas | LoadBalancing service |
|
||||||
|
| extraroute | Neutron Extra Route |
|
||||||
|
+-----------------+--------------------------+
|
||||||
|
|
||||||
|
#. Show information for the quotas extension.
|
||||||
|
|
||||||
|
To show information for the ``quotas`` extension, run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron ext-show quotas
|
||||||
|
+-------------+------------------------------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------+------------------------------------------------------------+
|
||||||
|
| alias | quotas |
|
||||||
|
| description | Expose functions for quotas management per tenant |
|
||||||
|
| links | |
|
||||||
|
| name | Quota management support |
|
||||||
|
| namespace | http://docs.openstack.org/network/ext/quotas-sets/api/v2.0 |
|
||||||
|
| updated | 2012-07-29T10:00:00-00:00 |
|
||||||
|
+-------------+------------------------------------------------------------+
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Only some plug-ins support per-tenant quotas.
|
||||||
|
Specifically, Open vSwitch, Linux Bridge, and VMware NSX
|
||||||
|
support them, but new versions of other plug-ins might
|
||||||
|
bring additional functionality. See the documentation for
|
||||||
|
each plug-in.
|
||||||
|
|
||||||
|
#. List tenants who have per-tenant quota support.
|
||||||
|
|
||||||
|
The :command:`quota-list` command lists tenants for which the per-tenant
|
||||||
|
quota is enabled. The command does not list tenants with default
|
||||||
|
quota support. You must be an administrative user to run this command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-list
|
||||||
|
+------------+---------+------+--------+--------+----------------------------------+
|
||||||
|
| floatingip | network | port | router | subnet | tenant_id |
|
||||||
|
+------------+---------+------+--------+--------+----------------------------------+
|
||||||
|
| 20 | 5 | 20 | 10 | 5 | 6f88036c45344d9999a1f971e4882723 |
|
||||||
|
| 25 | 10 | 30 | 10 | 10 | bff5c9455ee24231b5bc713c1b96d422 |
|
||||||
|
+------------+---------+------+--------+--------+----------------------------------+
|
||||||
|
|
||||||
|
#. Show per-tenant quota values.
|
||||||
|
|
||||||
|
The :command:`quota-show` command reports the current
|
||||||
|
set of quota limits for the specified tenant.
|
||||||
|
Non-administrative users can run this command without the
|
||||||
|
:option:`--tenant_id` parameter. If per-tenant quota limits are
|
||||||
|
not enabled for the tenant, the command shows the default
|
||||||
|
set of quotas.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-show --tenant_id 6f88036c45344d9999a1f971e4882723
|
||||||
|
+------------+-------+
|
||||||
|
| Field | Value |
|
||||||
|
+------------+-------+
|
||||||
|
| floatingip | 20 |
|
||||||
|
| network | 5 |
|
||||||
|
| port | 20 |
|
||||||
|
| router | 10 |
|
||||||
|
| subnet | 5 |
|
||||||
|
+------------+-------+
|
||||||
|
|
||||||
|
The following command shows the command output for a
|
||||||
|
non-administrative user.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-show
|
||||||
|
+------------+-------+
|
||||||
|
| Field | Value |
|
||||||
|
+------------+-------+
|
||||||
|
| floatingip | 20 |
|
||||||
|
| network | 5 |
|
||||||
|
| port | 20 |
|
||||||
|
| router | 10 |
|
||||||
|
| subnet | 5 |
|
||||||
|
+------------+-------+
|
||||||
|
|
||||||
|
#. Update quota values for a specified tenant.
|
||||||
|
|
||||||
|
Use the :command:`quota-update` command to
|
||||||
|
update a quota for a specified tenant.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-update --tenant_id 6f88036c45344d9999a1f971e4882723 --network 5
|
||||||
|
+------------+-------+
|
||||||
|
| Field | Value |
|
||||||
|
+------------+-------+
|
||||||
|
| floatingip | 50 |
|
||||||
|
| network | 5 |
|
||||||
|
| port | 50 |
|
||||||
|
| router | 10 |
|
||||||
|
| subnet | 10 |
|
||||||
|
+------------+-------+
|
||||||
|
|
||||||
|
You can update quotas for multiple resources through one
|
||||||
|
command.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-update --tenant_id 6f88036c45344d9999a1f971e4882723 --subnet 5 --port 20
|
||||||
|
+------------+-------+
|
||||||
|
| Field | Value |
|
||||||
|
+------------+-------+
|
||||||
|
| floatingip | 50 |
|
||||||
|
| network | 5 |
|
||||||
|
| port | 20 |
|
||||||
|
| router | 10 |
|
||||||
|
| subnet | 5 |
|
||||||
|
+------------+-------+
|
||||||
|
|
||||||
|
To update the limits for an L3 resource such as, router
|
||||||
|
or floating IP, you must define new values for the quotas
|
||||||
|
after the ``--`` directive.
|
||||||
|
|
||||||
|
This example updates the limit of the number of floating
|
||||||
|
IPs for the specified tenant.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-update --tenant_id 6f88036c45344d9999a1f971e4882723 -- --floatingip 20
|
||||||
|
+------------+-------+
|
||||||
|
| Field | Value |
|
||||||
|
+------------+-------+
|
||||||
|
| floatingip | 20 |
|
||||||
|
| network | 5 |
|
||||||
|
| port | 20 |
|
||||||
|
| router | 10 |
|
||||||
|
| subnet | 5 |
|
||||||
|
+------------+-------+
|
||||||
|
|
||||||
|
You can update the limits of multiple resources by
|
||||||
|
including L2 resources and L3 resource through one
|
||||||
|
command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-update --tenant_id 6f88036c45344d9999a1f971e4882723
|
||||||
|
--network 3 --subnet 3 --port 3 -- --floatingip 3 --router 3
|
||||||
|
+------------+-------+
|
||||||
|
| Field | Value |
|
||||||
|
+------------+-------+
|
||||||
|
| floatingip | 3 |
|
||||||
|
| network | 3 |
|
||||||
|
| port | 3 |
|
||||||
|
| router | 3 |
|
||||||
|
| subnet | 3 |
|
||||||
|
+------------+-------+
|
||||||
|
|
||||||
|
#. Delete per-tenant quota values.
|
||||||
|
|
||||||
|
To clear per-tenant quota limits, use the
|
||||||
|
:command:`quota-delete` command.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-delete --tenant_id 6f88036c45344d9999a1f971e4882723
|
||||||
|
Deleted quota: 6f88036c45344d9999a1f971e4882723
|
||||||
|
|
||||||
|
After you run this command, you can see that quota
|
||||||
|
values for the tenant are reset to the default values.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ neutron quota-show --tenant_id 6f88036c45344d9999a1f971e4882723
|
||||||
|
+------------+-------+
|
||||||
|
| Field | Value |
|
||||||
|
+------------+-------+
|
||||||
|
| floatingip | 50 |
|
||||||
|
| network | 10 |
|
||||||
|
| port | 50 |
|
||||||
|
| router | 10 |
|
||||||
|
| subnet | 10 |
|
||||||
|
+------------+-------+
|
51
doc/admin-guide-cloud/source/cli_nova_evacuate.rst
Normal file
51
doc/admin-guide-cloud/source/cli_nova_evacuate.rst
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
==================
|
||||||
|
Evacuate instances
|
||||||
|
==================
|
||||||
|
|
||||||
|
If a hardware malfunction or other error causes a cloud compute node to fail,
|
||||||
|
you can evacuate instances to make them available again. You can optionally
|
||||||
|
include the target host on the :command:`evacuate` command. If you omit the
|
||||||
|
host, the scheduler chooses the target host.
|
||||||
|
|
||||||
|
To preserve user data on the server disk, configure shared storage on the
|
||||||
|
target host. When you evacuate the instance, Compute detects whether shared
|
||||||
|
storage is available on the target host. Also, you must validate that the
|
||||||
|
current VM host is not operational. Otherwise, the evacuation fails.
|
||||||
|
|
||||||
|
#. To find a host for the evacuated instance, list all hosts:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova host-list
|
||||||
|
|
||||||
|
#. Evacuate the instance. You can use the :option:`--password PWD` option
|
||||||
|
to pass the instance password to the command. If you do not specify a
|
||||||
|
password, the command generates and prints one after it finishes
|
||||||
|
successfully. The following command evacuates a server from a failed host
|
||||||
|
to HOST_B.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova evacuate EVACUATED_SERVER_NAME HOST_B
|
||||||
|
|
||||||
|
The command rebuilds the instance from the original image or volume and
|
||||||
|
returns a password. The command preserves the original configuration, which
|
||||||
|
includes the instance ID, name, uid, IP address, and so on.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
+-----------+--------------+
|
||||||
|
| Property | Value |
|
||||||
|
+-----------+--------------+
|
||||||
|
| adminPass | kRAJpErnT4xZ |
|
||||||
|
+-----------+--------------+
|
||||||
|
|
||||||
|
#. To preserve the user disk data on the evacuated server, deploy Compute
|
||||||
|
with a shared file system. To configure your system, see
|
||||||
|
`Configure migrations <http://docs.openstack.org/admin-guide-cloud/compute-configuring-migrations.html>`_
|
||||||
|
in the `OpenStack Cloud Administrator Guide`. The
|
||||||
|
following example does not change the password.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova evacuate EVACUATED_SERVER_NAME HOST_B --on-shared-storage
|
@ -0,0 +1,206 @@
|
|||||||
|
=======================
|
||||||
|
Manage project security
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Security groups are sets of IP filter rules that are applied to all
|
||||||
|
project instances, which define networking access to the instance. Group
|
||||||
|
rules are project specific; project members can edit the default rules
|
||||||
|
for their group and add new rule sets.
|
||||||
|
|
||||||
|
All projects have a ``default`` security group which is applied to any
|
||||||
|
instance that has no other defined security group. Unless you change the
|
||||||
|
default, this security group denies all incoming traffic and allows only
|
||||||
|
outgoing traffic to your instance.
|
||||||
|
|
||||||
|
You can use the ``allow_same_net_traffic`` option in the
|
||||||
|
``/etc/nova/nova.conf`` file to globally control whether the rules apply
|
||||||
|
to hosts which share a network.
|
||||||
|
|
||||||
|
If set to:
|
||||||
|
|
||||||
|
- ``True`` (default), hosts on the same subnet are not filtered and are
|
||||||
|
allowed to pass all types of traffic between them. On a flat network,
|
||||||
|
this allows all instances from all projects unfiltered communication.
|
||||||
|
With VLAN networking, this allows access between instances within the
|
||||||
|
same project. You can also simulate this setting by configuring the
|
||||||
|
default security group to allow all traffic from the subnet.
|
||||||
|
|
||||||
|
- ``False``, security groups are enforced for all connections.
|
||||||
|
|
||||||
|
Additionally, the number of maximum rules per security group is
|
||||||
|
controlled by the ``security_group_rules`` and the number of allowed
|
||||||
|
security groups per project is controlled by the ``security_groups``
|
||||||
|
quota (see the `Manage quotas <http://docs.openstack.org/admin-guide-cloud/cli_set_quotas.html>`_
|
||||||
|
section).
|
||||||
|
|
||||||
|
List and view current security groups
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
From the command-line you can get a list of security groups for the
|
||||||
|
project, using the :command:`nova` command:
|
||||||
|
|
||||||
|
#. Ensure your system variables are set for the user and tenant for
|
||||||
|
which you are checking security group rules. For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
export OS_USERNAME=demo00
|
||||||
|
export OS_TENANT_NAME=tenant01
|
||||||
|
|
||||||
|
#. Output security groups, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-list
|
||||||
|
+---------+-------------+
|
||||||
|
| Name | Description |
|
||||||
|
+---------+-------------+
|
||||||
|
| default | default |
|
||||||
|
| open | all ports |
|
||||||
|
+---------+-------------+
|
||||||
|
|
||||||
|
#. View the details of a group, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-list-rules groupName
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-list-rules open
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| IP Protocol | From Port | To Port | IP Range | Source Group |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| icmp | -1 | 255 | 0.0.0.0/0 | |
|
||||||
|
| tcp | 1 | 65535 | 0.0.0.0/0 | |
|
||||||
|
| udp | 1 | 65535 | 0.0.0.0/0 | |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
|
||||||
|
These rules are allow type rules as the default is deny. The first
|
||||||
|
column is the IP protocol (one of icmp, tcp, or udp). The second and
|
||||||
|
third columns specify the affected port range. The third column
|
||||||
|
specifies the IP range in CIDR format. This example shows the full
|
||||||
|
port range for all protocols allowed from all IPs.
|
||||||
|
|
||||||
|
Create a security group
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
When adding a new security group, you should pick a descriptive but
|
||||||
|
brief name. This name shows up in brief descriptions of the instances
|
||||||
|
that use it where the longer description field often does not. For
|
||||||
|
example, seeing that an instance is using security group "http" is much
|
||||||
|
easier to understand than "bobs\_group" or "secgrp1".
|
||||||
|
|
||||||
|
#. Ensure your system variables are set for the user and tenant for
|
||||||
|
which you are creating security group rules.
|
||||||
|
|
||||||
|
#. Add the new security group, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-create GroupName Description
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-create global_http "Allows Web traffic anywhere on the Internet."
|
||||||
|
+--------------------------------------+-------------+----------------------------------------------+
|
||||||
|
| Id | Name | Description |
|
||||||
|
+--------------------------------------+-------------+----------------------------------------------+
|
||||||
|
| 1578a08c-5139-4f3e-9012-86bd9dd9f23b | global_http | Allows Web traffic anywhere on the Internet. |
|
||||||
|
+--------------------------------------+-------------+----------------------------------------------+
|
||||||
|
|
||||||
|
#. Add a new group rule, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-add-rule secGroupName ip-protocol from-port to-port CIDR
|
||||||
|
|
||||||
|
The arguments are positional, and the ``from-port`` and ``to-port``
|
||||||
|
arguments specify the local port range connections are allowed to
|
||||||
|
access, not the source and destination ports of the connection. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-add-rule global_http tcp 80 80 0.0.0.0/0
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| IP Protocol | From Port | To Port | IP Range | Source Group |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| tcp | 80 | 80 | 0.0.0.0/0 | |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
|
||||||
|
You can create complex rule sets by creating additional rules. For
|
||||||
|
example, if you want to pass both HTTP and HTTPS traffic, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-add-rule global_http tcp 443 443 0.0.0.0/0
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| IP Protocol | From Port | To Port | IP Range | Source Group |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| tcp | 443 | 443 | 0.0.0.0/0 | |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
|
||||||
|
Despite only outputting the newly added rule, this operation is
|
||||||
|
additive (both rules are created and enforced).
|
||||||
|
|
||||||
|
#. View all rules for the new security group, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-list-rules global_http
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| IP Protocol | From Port | To Port | IP Range | Source Group |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
| tcp | 80 | 80 | 0.0.0.0/0 | |
|
||||||
|
| tcp | 443 | 443 | 0.0.0.0/0 | |
|
||||||
|
+-------------+-----------+---------+-----------+--------------+
|
||||||
|
|
||||||
|
Delete a security group
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Ensure your system variables are set for the user and tenant for
|
||||||
|
which you are deleting a security group.
|
||||||
|
|
||||||
|
#. Delete the new security group, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-delete GroupName
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-delete global_http
|
||||||
|
|
||||||
|
Create security group rules for a cluster of instances
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Source Groups are a special, dynamic way of defining the CIDR of allowed
|
||||||
|
sources. The user specifies a Source Group (Security Group name), and
|
||||||
|
all the user's other Instances using the specified Source Group are
|
||||||
|
selected dynamically. This alleviates the need for individual rules to
|
||||||
|
allow each new member of the cluster.
|
||||||
|
|
||||||
|
#. Make sure to set the system variables for the user and tenant for
|
||||||
|
which you are creating a security group rule.
|
||||||
|
|
||||||
|
#. Add a source group, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-add-group-rule secGroupName source-group ip-protocol from-port to-port
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova secgroup-add-group-rule cluster global_http tcp 22 22
|
||||||
|
|
||||||
|
The ``cluster`` rule allows SSH access from any other instance that
|
||||||
|
uses the ``global_http`` group.
|
77
doc/admin-guide-cloud/source/cli_nova_manage_services.rst
Normal file
77
doc/admin-guide-cloud/source/cli_nova_manage_services.rst
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
=======================
|
||||||
|
Manage Compute services
|
||||||
|
=======================
|
||||||
|
|
||||||
|
You can enable and disable Compute services. The following
|
||||||
|
examples disable and enable the ``nova-compute`` service.
|
||||||
|
|
||||||
|
|
||||||
|
#. List the Compute services:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova service-list
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+-----------------+
|
||||||
|
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+-----------------+
|
||||||
|
| nova-conductor | devstack | internal | enabled | up | 2013-10-16T00:56:08.000000 | None |
|
||||||
|
| nova-cert | devstack | internal | enabled | up | 2013-10-16T00:56:09.000000 | None |
|
||||||
|
| nova-compute | devstack | nova | enabled | up | 2013-10-16T00:56:07.000000 | None |
|
||||||
|
| nova-network | devstack | internal | enabled | up | 2013-10-16T00:56:06.000000 | None |
|
||||||
|
| nova-scheduler | devstack | internal | enabled | up | 2013-10-16T00:56:04.000000 | None |
|
||||||
|
| nova-consoleauth | devstack | internal | enabled | up | 2013-10-16T00:56:07.000000 | None |
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+-----------------+
|
||||||
|
|
||||||
|
#. Disable a nova service:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova service-disable localhost.localdomain nova-compute --reason 'trial log'
|
||||||
|
+----------+--------------+----------+-------------------+
|
||||||
|
| Host | Binary | Status | Disabled Reason |
|
||||||
|
+----------+--------------+----------+-------------------+
|
||||||
|
| devstack | nova-compute | disabled | Trial log |
|
||||||
|
+----------+--------------+----------+-------------------+
|
||||||
|
|
||||||
|
#. Check the service list:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova service-list
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+------------------+
|
||||||
|
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+------------------+
|
||||||
|
| nova-conductor | devstack | internal | enabled | up | 2013-10-16T00:56:48.000000 | None |
|
||||||
|
| nova-cert | devstack | internal | enabled | up | 2013-10-16T00:56:49.000000 | None |
|
||||||
|
| nova-compute | devstack | nova | disabled | up | 2013-10-16T00:56:47.000000 | Trial log |
|
||||||
|
| nova-network | devstack | internal | enabled | up | 2013-10-16T00:56:51.000000 | None |
|
||||||
|
| nova-scheduler | devstack | internal | enabled | up | 2013-10-16T00:56:44.000000 | None |
|
||||||
|
| nova-consoleauth | devstack | internal | enabled | up | 2013-10-16T00:56:47.000000 | None |
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+------------------+
|
||||||
|
|
||||||
|
#. Enable the service:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova service-enable localhost.localdomain nova-compute
|
||||||
|
+----------+--------------+---------+
|
||||||
|
| Host | Binary | Status |
|
||||||
|
+----------+--------------+---------+
|
||||||
|
| devstack | nova-compute | enabled |
|
||||||
|
+----------+--------------+---------+
|
||||||
|
|
||||||
|
#. Check the service list:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova service-list
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+-----------------+
|
||||||
|
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+-----------------+
|
||||||
|
| nova-conductor | devstack | internal | enabled | up | 2013-10-16T00:57:08.000000 | None |
|
||||||
|
| nova-cert | devstack | internal | enabled | up | 2013-10-16T00:57:09.000000 | None |
|
||||||
|
| nova-compute | devstack | nova | enabled | up | 2013-10-16T00:57:07.000000 | None |
|
||||||
|
| nova-network | devstack | internal | enabled | up | 2013-10-16T00:57:11.000000 | None |
|
||||||
|
| nova-scheduler | devstack | internal | enabled | up | 2013-10-16T00:57:14.000000 | None |
|
||||||
|
| nova-consoleauth | devstack | internal | enabled | up | 2013-10-16T00:57:07.000000 | None |
|
||||||
|
+------------------+----------+----------+---------+-------+----------------------------+-----------------+
|
78
doc/admin-guide-cloud/source/cli_nova_migrate.rst
Normal file
78
doc/admin-guide-cloud/source/cli_nova_migrate.rst
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
=================================================
|
||||||
|
Migrate a single instance to another compute host
|
||||||
|
=================================================
|
||||||
|
|
||||||
|
When you want to move an instance from one compute host to another,
|
||||||
|
you can use the :command:`nova migrate` command. The scheduler chooses the
|
||||||
|
destination compute host based on its settings. This process does
|
||||||
|
not assume that the instance has shared storage available on the
|
||||||
|
target host.
|
||||||
|
|
||||||
|
#. To list the VMs you want to migrate, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova list
|
||||||
|
|
||||||
|
#. After selecting a VM from the list, run this command where :guilabel:`VM_ID`
|
||||||
|
is set to the ID in the list returned in the previous step:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova show VM_ID
|
||||||
|
|
||||||
|
#. Use the :command:`nova migrate` command.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova migrate VM_ID
|
||||||
|
|
||||||
|
#. To migrate an instance and watch the status, use this example script:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Provide usage
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 VM_ID"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $# -eq 0 ]] && usage
|
||||||
|
|
||||||
|
# Migrate the VM to an alternate hypervisor
|
||||||
|
echo -n "Migrating instance to alternate host"
|
||||||
|
VM_ID=$1
|
||||||
|
nova migrate $VM_ID
|
||||||
|
VM_OUTPUT=`nova show $VM_ID`
|
||||||
|
VM_STATUS=`echo "$VM_OUTPUT" | grep status | awk '{print $4}'`
|
||||||
|
while [[ "$VM_STATUS" != "VERIFY_RESIZE" ]]; do
|
||||||
|
echo -n "."
|
||||||
|
sleep 2
|
||||||
|
VM_OUTPUT=`nova show $VM_ID`
|
||||||
|
VM_STATUS=`echo "$VM_OUTPUT" | grep status | awk '{print $4}'`
|
||||||
|
done
|
||||||
|
nova resize-confirm $VM_ID
|
||||||
|
echo " instance migrated and resized."
|
||||||
|
echo;
|
||||||
|
|
||||||
|
# Show the details for the VM
|
||||||
|
echo "Updated instance details:"
|
||||||
|
nova show $VM_ID
|
||||||
|
|
||||||
|
# Pause to allow users to examine VM details
|
||||||
|
read -p "Pausing, press <enter> to exit."
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If you see this error, it means you are either
|
||||||
|
trying the command with the wrong credentials,
|
||||||
|
such as a non-admin user, or the ``policy.json``
|
||||||
|
file prevents migration for your user:
|
||||||
|
|
||||||
|
``ERROR (Forbidden): Policy doesn't allow compute_extension:admin_actions:migrate
|
||||||
|
to be performed. (HTTP 403)``
|
||||||
|
|
||||||
|
The instance is booted from a new host, but preserves its configuration
|
||||||
|
including its ID, name, any metadata, IP address, and other properties.
|
24
doc/admin-guide-cloud/source/cli_nova_numa_libvirt.rst
Normal file
24
doc/admin-guide-cloud/source/cli_nova_numa_libvirt.rst
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
=============================================
|
||||||
|
Consider NUMA topology when booting instances
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
NUMA topology can exist on both the physical hardware of the host, and the
|
||||||
|
virtual hardware of the instance. OpenStack Compute uses libvirt to tune
|
||||||
|
instances to take advantage of NUMA topologies. The libvirt driver boot
|
||||||
|
process looks at the NUMA topology field of both the instance and the host it
|
||||||
|
is being booted on, and uses that information to generate an appropriate
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
If the host is NUMA capable, but the instance has not requested a NUMA
|
||||||
|
topology, Compute attempts to pack the instance into a single cell.
|
||||||
|
If this fails, though, Compute will not continue to try.
|
||||||
|
|
||||||
|
If the host is NUMA capable, and the instance has requested a specific NUMA
|
||||||
|
topology, Compute will try to pin the vCPUs of different NUMA cells
|
||||||
|
on the instance to the corresponding NUMA cells on the host. It will also
|
||||||
|
expose the NUMA topology of the instance to the guest OS.
|
||||||
|
|
||||||
|
If you want Compute to pin a particular vCPU as part of this process,
|
||||||
|
set the ``vcpu_pin_set`` parameter in the ``nova.conf`` configuration
|
||||||
|
file. For more information about the ``vcpu_pin_set`` parameter, see the
|
||||||
|
Configuration Reference Guide.
|
36
doc/admin-guide-cloud/source/cli_nova_specify_host.rst
Normal file
36
doc/admin-guide-cloud/source/cli_nova_specify_host.rst
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
=========================================
|
||||||
|
Select hosts where instances are launched
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
With the appropriate permissions, you can select which
|
||||||
|
host instances are launched on and which roles can boot instances
|
||||||
|
on this host.
|
||||||
|
|
||||||
|
#. To select the host where instances are launched, use
|
||||||
|
the :option:`--availability_zone ZONE:HOST` parameter on the
|
||||||
|
:command:`nova boot` command.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova boot --image <uuid> --flavor m1.tiny --key_name test --availability-zone nova:server2
|
||||||
|
|
||||||
|
#. To specify which roles can launch an instance on a
|
||||||
|
specified host, enable the ``create:forced_host`` option in
|
||||||
|
the ``policy.json`` file. By default, this option is
|
||||||
|
enabled for only the admin role.
|
||||||
|
|
||||||
|
#. To view the list of valid compute hosts, use the
|
||||||
|
:command:`nova hypervisor-list` command.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova hypervisor-list
|
||||||
|
+----+---------------------+
|
||||||
|
| ID | Hypervisor hostname |
|
||||||
|
+----+---------------------+
|
||||||
|
| 1 | server2 |
|
||||||
|
| 2 | server3 |
|
||||||
|
| 3 | server4 |
|
||||||
|
+----+---------------------+
|
299
doc/admin-guide-cloud/source/cli_set_compute_quotas.rst
Normal file
299
doc/admin-guide-cloud/source/cli_set_compute_quotas.rst
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
=============================
|
||||||
|
Manage Compute service quotas
|
||||||
|
=============================
|
||||||
|
|
||||||
|
As an administrative user, you can use the :command:`nova quota-*`
|
||||||
|
commands, which are provided by the ``python-novaclient``
|
||||||
|
package, to update the Compute service quotas for a specific tenant or
|
||||||
|
tenant user, as well as update the quota defaults for a new tenant.
|
||||||
|
|
||||||
|
**Compute quota descriptions**
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
:widths: 10 40
|
||||||
|
|
||||||
|
* - Quota name
|
||||||
|
- Description
|
||||||
|
* - cores
|
||||||
|
- Number of instance cores (VCPUs) allowed per tenant.
|
||||||
|
* - fixed-ips
|
||||||
|
- Number of fixed IP addresses allowed per tenant. This number
|
||||||
|
must be equal to or greater than the number of allowed
|
||||||
|
instances.
|
||||||
|
* - floating-ips
|
||||||
|
- Number of floating IP addresses allowed per tenant.
|
||||||
|
* - injected-file-content-bytes
|
||||||
|
- Number of content bytes allowed per injected file.
|
||||||
|
* - injected-file-path-bytes
|
||||||
|
- Length of injected file path.
|
||||||
|
* - injected-files
|
||||||
|
- Number of injected files allowed per tenant.
|
||||||
|
* - instances
|
||||||
|
- Number of instances allowed per tenant.
|
||||||
|
* - key-pairs
|
||||||
|
- Number of key pairs allowed per user.
|
||||||
|
* - metadata-items
|
||||||
|
- Number of metadata items allowed per instance.
|
||||||
|
* - ram
|
||||||
|
- Megabytes of instance ram allowed per tenant.
|
||||||
|
* - security-groups
|
||||||
|
- Number of security groups per tenant.
|
||||||
|
* - security-group-rules
|
||||||
|
- Number of rules per security group.
|
||||||
|
|
||||||
|
View and update Compute quotas for a tenant (project)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To view and update default quota values
|
||||||
|
---------------------------------------
|
||||||
|
#. List all default quotas for all tenants:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-defaults
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-defaults
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| Quota | Limit |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| instances | 10 |
|
||||||
|
| cores | 20 |
|
||||||
|
| ram | 51200 |
|
||||||
|
| floating_ips | 10 |
|
||||||
|
| fixed_ips | -1 |
|
||||||
|
| metadata_items | 128 |
|
||||||
|
| injected_files | 5 |
|
||||||
|
| injected_file_content_bytes | 10240 |
|
||||||
|
| injected_file_path_bytes | 255 |
|
||||||
|
| key_pairs | 100 |
|
||||||
|
| security_groups | 10 |
|
||||||
|
| security_group_rules | 20 |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
|
||||||
|
#. Update a default value for a new tenant.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-class-update --KEY VALUE default
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-class-update --instances 15 default
|
||||||
|
|
||||||
|
To view quota values for an existing tenant (project)
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
#. Place the tenant ID in a usable variable.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ tenant=$(openstack project show -f value -c id TENANT_NAME)
|
||||||
|
|
||||||
|
#. List the currently set quota values for a tenant.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-show --tenant $tenant
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-show --tenant $tenant
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| Quota | Limit |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| instances | 10 |
|
||||||
|
| cores | 20 |
|
||||||
|
| ram | 51200 |
|
||||||
|
| floating_ips | 10 |
|
||||||
|
| fixed_ips | -1 |
|
||||||
|
| metadata_items | 128 |
|
||||||
|
| injected_files | 5 |
|
||||||
|
| injected_file_content_bytes | 10240 |
|
||||||
|
| injected_file_path_bytes | 255 |
|
||||||
|
| key_pairs | 100 |
|
||||||
|
| security_groups | 10 |
|
||||||
|
| security_group_rules | 20 |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
|
||||||
|
To update quota values for an existing tenant (project)
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
|
#. Obtain the tenant ID.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ tenant=$(openstack project show -f value -c id TENANT_NAME)
|
||||||
|
|
||||||
|
#. Update a particular quota value.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-update --QUOTA_NAME QUOTA_VALUE TENANT_ID
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-update --floating-ips 20 $tenant
|
||||||
|
$ nova quota-show --tenant $tenant
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| Quota | Limit |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| instances | 10 |
|
||||||
|
| cores | 20 |
|
||||||
|
| ram | 51200 |
|
||||||
|
| floating_ips | 20 |
|
||||||
|
| fixed_ips | -1 |
|
||||||
|
| metadata_items | 128 |
|
||||||
|
| injected_files | 5 |
|
||||||
|
| injected_file_content_bytes | 10240 |
|
||||||
|
| injected_file_path_bytes | 255 |
|
||||||
|
| key_pairs | 100 |
|
||||||
|
| security_groups | 10 |
|
||||||
|
| security_group_rules | 20 |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
To view a list of options for the :command:`quota-update` command, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova help quota-update
|
||||||
|
|
||||||
|
View and update Compute quotas for a tenant user
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To view quota values for a tenant user
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
#. Place the user ID in a usable variable.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ tenantUser=$(openstack user show -f value -c id USER_NAME)
|
||||||
|
|
||||||
|
#. Place the user's tenant ID in a usable variable, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ tenant=$(openstack project show -f value -c id TENANT_NAME)
|
||||||
|
|
||||||
|
#. List the currently set quota values for a tenant user.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-show --user $tenantUser --tenant $tenant
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-show --user $tenantUser --tenant $tenant
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| Quota | Limit |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| instances | 10 |
|
||||||
|
| cores | 20 |
|
||||||
|
| ram | 51200 |
|
||||||
|
| floating_ips | 20 |
|
||||||
|
| fixed_ips | -1 |
|
||||||
|
| metadata_items | 128 |
|
||||||
|
| injected_files | 5 |
|
||||||
|
| injected_file_content_bytes | 10240 |
|
||||||
|
| injected_file_path_bytes | 255 |
|
||||||
|
| key_pairs | 100 |
|
||||||
|
| security_groups | 10 |
|
||||||
|
| security_group_rules | 20 |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
|
||||||
|
To update quota values for a tenant user
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
#. Place the user ID in a usable variable.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ tenantUser=$(openstack user show -f value -c id USER_NAME)
|
||||||
|
|
||||||
|
#. Place the user's tenant ID in a usable variable, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ tenant=$(openstack project show -f value -c id TENANT_NAME)
|
||||||
|
|
||||||
|
#. Update a particular quota value, as follows:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-update --user $tenantUser --QUOTA_NAME QUOTA_VALUE $tenant
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova quota-update --user $tenantUser --floating-ips 12 $tenant
|
||||||
|
$ nova quota-show --user $tenantUser --tenant $tenant
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| Quota | Limit |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
| instances | 10 |
|
||||||
|
| cores | 20 |
|
||||||
|
| ram | 51200 |
|
||||||
|
| floating_ips | 12 |
|
||||||
|
| fixed_ips | -1 |
|
||||||
|
| metadata_items | 128 |
|
||||||
|
| injected_files | 5 |
|
||||||
|
| injected_file_content_bytes | 10240 |
|
||||||
|
| injected_file_path_bytes | 255 |
|
||||||
|
| key_pairs | 100 |
|
||||||
|
| security_groups | 10 |
|
||||||
|
| security_group_rules | 20 |
|
||||||
|
+-----------------------------+-------+
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
To view a list of options for the :command:`quota-update` command, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova help quota-update
|
||||||
|
|
||||||
|
To display the current quota usage for a tenant user
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
|
Use :command:`nova absolute-limits` to get a list of the
|
||||||
|
current quota values and the current quota usage:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ nova absolute-limits --tenant TENANT_NAME
|
||||||
|
+-------------------------+-------+
|
||||||
|
| Name | Value |
|
||||||
|
+-------------------------+-------+
|
||||||
|
| maxServerMeta | 128 |
|
||||||
|
| maxPersonality | 5 |
|
||||||
|
| maxImageMeta | 128 |
|
||||||
|
| maxPersonalitySize | 10240 |
|
||||||
|
| maxTotalRAMSize | 51200 |
|
||||||
|
| maxSecurityGroupRules | 20 |
|
||||||
|
| maxTotalKeypairs | 100 |
|
||||||
|
| totalRAMUsed | 0 |
|
||||||
|
| maxSecurityGroups | 10 |
|
||||||
|
| totalFloatingIpsUsed | 0 |
|
||||||
|
| totalInstancesUsed | 0 |
|
||||||
|
| totalSecurityGroupsUsed | 0 |
|
||||||
|
| maxTotalFloatingIps | 10 |
|
||||||
|
| maxTotalInstances | 10 |
|
||||||
|
| totalCoresUsed | 0 |
|
||||||
|
| maxTotalCores | 20 |
|
||||||
|
+-------------------------+-------+
|
54
doc/admin-guide-cloud/source/cli_set_quotas.rst
Normal file
54
doc/admin-guide-cloud/source/cli_set_quotas.rst
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
=============
|
||||||
|
Manage quotas
|
||||||
|
=============
|
||||||
|
|
||||||
|
To prevent system capacities from being exhausted without
|
||||||
|
notification, you can set up quotas. Quotas are operational
|
||||||
|
limits. For example, the number of gigabytes allowed for each
|
||||||
|
tenant can be controlled so that cloud resources are optimized.
|
||||||
|
Quotas can be enforced at both the tenant (or project)
|
||||||
|
and the tenant-user level.
|
||||||
|
|
||||||
|
Using the command-line interface, you can manage quotas for
|
||||||
|
the OpenStack Compute service, the OpenStack Block Storage service,
|
||||||
|
and the OpenStack Networking service.
|
||||||
|
|
||||||
|
The cloud operator typically changes default values because a
|
||||||
|
tenant requires more than ten volumes or 1 TB on a compute
|
||||||
|
node.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
To view all tenants (projects), run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project list
|
||||||
|
+----------------------------------+----------+
|
||||||
|
| ID | Name |
|
||||||
|
+----------------------------------+----------+
|
||||||
|
| e66d97ac1b704897853412fc8450f7b9 | admin |
|
||||||
|
| bf4a37b885fe46bd86e999e50adad1d3 | services |
|
||||||
|
| 21bd1c7c95234fd28f589b60903606fa | tenant01 |
|
||||||
|
| f599c5cd1cba4125ae3d7caed08e288c | tenant02 |
|
||||||
|
+----------------------------------+----------+
|
||||||
|
|
||||||
|
To display all current users for a tenant, run:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack user list --project PROJECT_NAME
|
||||||
|
+----------------------------------+--------+
|
||||||
|
| ID | Name |
|
||||||
|
+----------------------------------+--------+
|
||||||
|
| ea30aa434ab24a139b0e85125ec8a217 | demo00 |
|
||||||
|
| 4f8113c1d838467cad0c2f337b3dfded | demo01 |
|
||||||
|
+----------------------------------+--------+
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
cli_set_compute_quotas.rst
|
||||||
|
cli_cinder_quotas.rst
|
||||||
|
cli_networking_advanced_quotas.rst
|
@ -30,6 +30,7 @@ Contents
|
|||||||
database.rst
|
database.rst
|
||||||
baremetal.rst
|
baremetal.rst
|
||||||
orchestration.rst
|
orchestration.rst
|
||||||
|
cli.rst
|
||||||
cross_project.rst
|
cross_project.rst
|
||||||
common/app_support.rst
|
common/app_support.rst
|
||||||
common/glossary.rst
|
common/glossary.rst
|
||||||
|
Loading…
Reference in New Issue
Block a user