{{tag>Brouillon Cloud}}
= OpenStack client API
Voir :
* https://docs.openstack.org/python-openstackclient/pike/configuration/index.html
* https://developer.rackspace.com/blog/openstack-cli-basics/
* https://docs.openstack.org/security-guide/api-endpoints/api-endpoint-configuration-recommendations.html
Sur le fonctionnement des APIs :
* https://adam.younglogic.com/2013/09/keystone-v3-api-examples/
* https://www.oreilly.com/learning/lets-use-keystone
* https://www.mirantis.com/blog/manage-openstack-projects-using-domains-havana/
* http://alexconst.net/2016/02/08/ansible/
== Install
=== Paquet Debian
apt-get install openstack-clients
Le script suivant permet de jouer avec les APIs ''/usr/bin/python2-openstack''
=== Install python-openstackclient via pip
sudo apt-get install virtualenv build-essential python-dev
mkdir openstackcli
cd openstackcli
virtualenv .
source bin/activate
pip install python-openstackclient
sudo ln -fs $PWD/bin/openstack /usr/local/bin/
#deactivate
Install Auto-completion
openstack complete |sudo tee /etc/bash_completion.d/osc.bash_completion
== Config
''~/.config/openstack/clouds.yaml''
clouds:
devstack:
auth:
auth_url: http://192.168.56.11/identity/v3
username: "admin"
project_id: 17780b954c3a4b04a8123ac76d68f7b4
project_name: "admin"
user_domain_name: "Default"
password: "toor"
region_name: "RegionOne"
interface: "public"
identity_api_version: 3
Debug - Test flux
curl http://192.168.56.11/identity/v3
Test
openstack project list --os-cloud devstack
export OS_CLOUD=devstack
# python2-openstack service list
openstack service list
openstack project list
openstack server list
Ou par variables
''devstack-openrc''
#
# See :
# * https://docs.openstack.org/python-openstackclient/pike/cli/man/openstack.html#environment-variables
# * https://docs.openstack.org/newton/install-guide-ubuntu/keystone-openrc.html
unset $(set |grep _ENDPOINT_ |cut -d= -f1)
unset $(set |grep ^OS_ |cut -d= -f1)
export LC_ALL=C
# LC_ALL=C.UTF-8
export OS_NO_CACHE='true'
export OS_CACERT=/etc/ssl/certs/
export OS_PROJECT_NAME='admin'
export OS_USERNAME='admin'
export OS_PASSWORD='toor'
export OS_AUTH_URL='http://192.168.56.11/identity/v3'
#export OS_DEFAULT_DOMAIN='Default'
export OS_USER_DOMAIN_NAME='Default'
export OS_IDENTITY_API_VERSION='3'
#export OS_INTERFACE='public'
#export OS_AUTH_STRATEGY='keystone'
#export OS_REGION_NAME='RegionOne'
#export OS_ENDPOINT_TYPE="$OS_AUTH_URL"
#export CINDER_ENDPOINT_TYPE="OS_AUTH_URL"
#export GLANCE_ENDPOINT_TYPE="$OS_AUTH_URL"
#export KEYSTONE_ENDPOINT_TYPE="$OS_AUTH_URL"
#export NOVA_ENDPOINT_TYPE="$OS_AUTH_URL"
#export NEUTRON_ENDPOINT_TYPE="$OS_AUTH_URL"
export OS_CLOUDNAME=devstack
# Add OS_CLOUDNAME to PS1
if [ -z "${CLOUDPROMPT_ENABLED:-}" ]; then
export PS1=${PS1:-""}
export PS1=\${OS_CLOUDNAME:+"(\$OS_CLOUDNAME)"}\ $PS1
export CLOUDPROMPT_ENABLED=1
fi
Syntaxe
openstack --os-identity-api-version 3 --help
== Exemple
openstack keypair create --public-key ~/.ssh/id_rsa.pub maclef
== Pb
=== Pb certificate verify failed
$ openstack project list --os-cloud vio
Failed to discover available identity versions when contacting https://vio.acme.local:5000/v3. Attempting to parse version from URL.
SSL exception connecting to https://vio.acme.local:5000/v3/auth/tokens: HTTPSConnectionPool(host='vio.acme.local', port=5000): Max retries exceeded with url: /v3/auth/tokens (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))
==== Solution
openssl s_client -showcerts -verify 5 -connect 192.168.21.53:5000 /usr/local/share/ca-certificates/vio.acme.local_5000.crt
update-ca-certificates
export OS_CACERT=/etc/ssl/certs/
=== Pb 'int' object has no attribute 'startswith'
$ openstack server list --os-cloud vio
'int' object has no attribute 'startswith'
==== Solution 1
Voir https://review.openstack.org/#/c/388832/
Patcher les fichiers ci-dessous comme https://review.openstack.org/#/c/388832/2/osc_lib/cli/client_config.py :
* /usr/lib/python2.7/dist-packages/osc_lib/cli/client_config.py
* /usr/lib/python2.7/dist-packages/openstackclient/common/client_config.py
==== Solution 2
Dans clouds.yaml remplacer ''identity_api_version: 3'' par ''identity_api_version: "3"''
== Autres
[[https://www.stratoscale.com/blog/compute/how-to-automate-the-export-of-aws-ec2-to-your-openstack-cloud/|How to Automate the Export of AWS EC2 to Your Openstack Cloud]]