
Restructure things to be a little more helpful. Also add a reference to the Dockerfile we provide and remove an errant header that should have been removed in change Ife108e6ae191641b56e872e4616a3f4ec78281e8. Change-Id: I5f562a99ccee7db485b5d40ef4ea6f2e2e362c13 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
230 lines
8.5 KiB
ReStructuredText
230 lines
8.5 KiB
ReStructuredText
===============
|
|
OpenStackClient
|
|
===============
|
|
|
|
.. image:: https://img.shields.io/pypi/v/python-openstackclient.svg
|
|
:target: https://pypi.org/project/python-openstackclient/
|
|
:alt: Latest Version
|
|
|
|
OpenStackClient (OSC) is a command-line client for OpenStack that brings
|
|
the command set for Compute, Identity, Image, Network, Object Store and Block
|
|
Storage APIs together in a single shell with a uniform command structure.
|
|
Support for additional service APIs is provided via plugins.
|
|
|
|
The primary goal is to provide a unified shell command structure and a common
|
|
language to describe operations in OpenStack.
|
|
|
|
Getting Started
|
|
===============
|
|
|
|
OpenStack Client can be installed from PyPI using pip:
|
|
|
|
.. code-block:: shell
|
|
|
|
python3 -m pip install python-openstackclient
|
|
|
|
You can use ``--help`` or the ``help`` command to get a list of global options
|
|
and supported commands:
|
|
|
|
.. code-block:: shell
|
|
|
|
openstack --help
|
|
openstack help
|
|
|
|
You can also get help for a specific command:
|
|
|
|
.. code-block:: shell
|
|
|
|
openstack server create --help
|
|
openstack help server create
|
|
|
|
You can add support for additional services by installing their clients. For
|
|
example, to add support for the DNS service (designate):
|
|
|
|
.. code-block:: shell
|
|
|
|
python3 -m pip install python3-designateclient
|
|
|
|
A ``Dockerfile`` is provided for your convenience in the repository. You can
|
|
use this to build your own container images:
|
|
|
|
.. code-block:: shell
|
|
|
|
git clone https://opendev.org/openstack/python-openstackclient
|
|
cd python-openstackclient
|
|
podman build . -t example.com/myuser/openstackclient
|
|
|
|
For more information the available options and commands, refer to the `Users
|
|
Guide`__.
|
|
|
|
.. __: https://docs.openstack.org/python-openstackclient/latest/cli/index.html
|
|
|
|
Configuration
|
|
=============
|
|
|
|
OpenStack Client must be configured with authentication information in order to
|
|
communicate with a given OpenStack cloud. This configuration can be achieved
|
|
via a ``clouds.yaml`` file, a set of environment variables (often shared via an
|
|
``openrc`` file), a set of command-line options, or a combination of all three.
|
|
Your cloud provider or deployment tooling will typically provide either a
|
|
``clouds.yaml`` file or ``openrc`` file for you. If using a ``clouds.yaml``
|
|
file, OpenStack Client expects to find it in one of the following locations:
|
|
|
|
* If set, the path indicated by the ``OS_CLIENT_CONFIG_FILE`` environment
|
|
variable
|
|
* ``.`` (the current directory)
|
|
* ``$HOME/.config/openstack``
|
|
* ``/etc/openstack``
|
|
|
|
The options you should set will depend on the configuration of your cloud and
|
|
the authentication mechanism(s) supported. For example, consider a cloud that
|
|
supports username/password authentication. Configuration for this cloud using a
|
|
``clouds.yaml`` file would look like so:
|
|
|
|
.. code-block:: yaml
|
|
|
|
clouds:
|
|
my-cloud:
|
|
auth:
|
|
auth_url: '<url-to-openstack-identity>'
|
|
project_name: '<project-name>'
|
|
project_domain_name: '<project-domain-name>'
|
|
username: '<username>'
|
|
user_domain_name: '<user-domain-name>'
|
|
password: '<password>' # (optional)
|
|
region_name: '<region>'
|
|
|
|
The corresponding environment variables would look very similar:
|
|
|
|
.. code-block:: shell
|
|
|
|
export OS_AUTH_URL=<url-to-openstack-identity>
|
|
export OS_REGION_NAME=<region>
|
|
export OS_PROJECT_NAME=<project-name>
|
|
export OS_PROJECT_DOMAIN_NAME=<project-domain-name>
|
|
export OS_USERNAME=<username>
|
|
export OS_USER_DOMAIN_NAME=<user-domain-name>
|
|
export OS_PASSWORD=<password> # (optional)
|
|
|
|
Likewise, the corresponding command-line options would look very similar:
|
|
|
|
::
|
|
|
|
openstack
|
|
--os-auth-url <url-to-openstack-identity>
|
|
--os-region <region>
|
|
--os-project-name <project-name>
|
|
--os-project-domain-name <project-domain-name>
|
|
--os-username <username>
|
|
--os-user-domain-name <user-domain-name>
|
|
[--os-password <password>]
|
|
|
|
.. note::
|
|
|
|
If a password is not provided above (in plaintext), you will be
|
|
interactively prompted to provide one securely.
|
|
|
|
Some clouds use federated authentication. If this is the case, your
|
|
configuration will be slightly more involved. For example, to configure
|
|
username/password authentication for a federated user using a ``clouds.yaml``
|
|
file:
|
|
|
|
.. code-block:: yaml
|
|
|
|
clouds:
|
|
my-cloud:
|
|
auth:
|
|
auth_url: '<url-to-openstack-identity>'
|
|
project_name: '<project-name>'
|
|
project_domain_name: '<project-domain-name>'
|
|
username: '<username-in-idp>'
|
|
user_domain_name: '<user-domain-name>'
|
|
password: '<password-in-idp>'
|
|
identity_provider: '<the-desired-idp-in-keystone>'
|
|
client_id: '<the-client-id-configured-in-the-idp>'
|
|
client_secret: '<the-client-secret-configured-in-the-idp>'
|
|
openid_scope: '<the-scopes-of-desired-attributes-to-claim-from-idp>'
|
|
protocol: '<the-protocol-used-in-the-apache2-oidc-proxy>'
|
|
access_token_type: '<the-access-token-type-used-by-your-idp>'
|
|
discovery_endpoint: '<the-well-known-endpoint-of-the-idp>'
|
|
auth_type: 'v3oidcpassword'
|
|
region_name: '<region>'
|
|
|
|
The corresponding environment variables would look very similar:
|
|
|
|
.. code-block:: shell
|
|
|
|
export OS_PROJECT_NAME=<project-name>
|
|
export OS_PROJECT_DOMAIN_NAME=<project-domain-name>
|
|
export OS_AUTH_URL=<url-to-openstack-identity>
|
|
export OS_IDENTITY_API_VERSION=3
|
|
export OS_AUTH_TYPE=v3oidcpassword
|
|
export OS_USERNAME=<username-in-idp>
|
|
export OS_PASSWORD=<password-in-idp>
|
|
export OS_IDENTITY_PROVIDER=<the-desired-idp-in-keystone>
|
|
export OS_CLIENT_ID=<the-client-id-configured-in-the-idp>
|
|
export OS_CLIENT_SECRET=<the-client-secred-configured-in-the-idp>
|
|
export OS_OPENID_SCOPE=<the-scopes-of-desired-attributes-to-claim-from-idp>
|
|
export OS_PROTOCOL=<the-protocol-used-in-the-apache2-oidc-proxy>
|
|
export OS_ACCESS_TOKEN_TYPE=<the-access-token-type-used-by-your-idp>
|
|
export OS_DISCOVERY_ENDPOINT=<the-well-known-endpoint-of-the-idp>
|
|
|
|
Likewise, the corresponding command-line options would look very similar:
|
|
|
|
.. code-block:: shell
|
|
|
|
--os-project-name <project-name>
|
|
--os-project-domain-name <project-domain-name>
|
|
--os-auth-url <url-to-openstack-identity>
|
|
--os-identity-api-version 3
|
|
--os-auth-plugin openid
|
|
--os-auth-type v3oidcpassword
|
|
--os-username <username-in-idp>
|
|
--os-password <password-in-idp>
|
|
--os-identity-provider <the-desired-idp-in-keystone>
|
|
--os-client-id <the-client-id-configured-in-the-idp>
|
|
--os-client-secret <the-client-secred-configured-in-the-idp>
|
|
--os-openid-scope <the-scopes-of-desired-attributes-to-claim-from-idp>
|
|
--os-protocol <the-protocol-used-in-the-apache2-oidc-proxy>
|
|
--os-access-token-type <the-access-token-type-used-by-your-idp>
|
|
--os-discovery-endpoint <the-well-known-endpoint-of-the-idp>
|
|
|
|
For more information on configuring authentication, including an overview of
|
|
the many authentication mechanisms supported, refer to the `Authentication
|
|
guide`__. For more information on configuration in general, refer to the
|
|
`Configuration guide`__.
|
|
|
|
.. __: https://docs.openstack.org/python-openstackclient/latest/cli/authentication.html.
|
|
.. __: https://docs.openstack.org/python-openstackclient/latest/configuration/index.html
|
|
|
|
Contributing
|
|
============
|
|
|
|
You can clone the repository from opendev.org::
|
|
|
|
git clone https://opendev.org/openstack/python-openstackclient
|
|
cd python-openstackclient
|
|
|
|
OpenStack Client uses the same contributor process as other OpenStack projects.
|
|
For information on this process, including help on setting up you Gerrit
|
|
account and an overview of the CI process, refer to the `OpenStack Contributors
|
|
Guide`__.
|
|
|
|
For more information on contributing to OpenStack Client itself, including
|
|
guidance on how to design new commands and how to report bugs, refer to the
|
|
`Contributors Guide`__.
|
|
|
|
.. __: https://docs.openstack.org/python-openstackclient/latest/contributor/index.html
|
|
.. __: https://docs.opendev.org/opendev/infra-manual/latest/developers.html
|
|
|
|
Links
|
|
-----
|
|
|
|
* `Issue Tracker <https://bugs.launchpad.net/python-openstackclient>`_
|
|
* `Code Review <https://review.opendev.org/#/q/status:open+project:openstack/openstacksdk,n,z>`_
|
|
* `Documentation <https://docs.openstack.org/python-openstackclient/latest/>`_
|
|
* `PyPi <https://pypi.org/project/python-openstackclient>`_
|
|
* `Mailing list <https://lists.openstack.org/mailman3/lists/openstack-discuss.lists.openstack.org/>`_
|
|
* `Release Notes <https://docs.openstack.org/releasenotes/python-openstackclient>`_
|
|
* `IRC (#openstack-sdks on OFTC (irc.oftc.net)) <irc://irc.oftc.net/openstack-sdks>`_
|