TungstenFabric (Contrail) controllerにopenstack clientをインストールする

前回、TungstenFabric + Openstack をdeployしたので、設定をしていきたいところですが、GUIでポチポチするのも手間なのでCLIでの設定を試したいと思います。
CLIで設定するには、tungstenfabricやopenstackのapiを叩けばいいのですが、ものによってはkeystoneでの認証が必要のため、予めTokenを取得してcmdのヘッダに付与する必要があります。
Tokenを取得する方法としては、openstack コマンドがありますが、前回のdeploy方法だとopenstackコマンドが使えません。※
その為、openstack client をインストールすることで、openstack コマンドを使用可能にし、cmdからAPIを叩けるようにします。

※openstack controllerで稼働している"kolla_toolbox"というコンテナにログインし、admin-openrc.shを読み込むことで使えますが、毎度コンテナからというのも手間なので

docker exec -it kolla_toolbox bash
source /var/lib/kolla/config_files/admin-openrc.sh

設定

TungstenFabric Controllerに、virtualenvをインストールし作成した仮想環境の中にpipでopenstack clientをインストールします。

yum install -y gcc python-devel
python2.7 -m pip install virtualenv
python2.7 -m virtualenv venv-osp-client
source venv-osp-client/bin/activate
pip install python-openstackclient python-ironicclient

openstack client では、複数のファイルでqueue モジュールを使用していますが、queueモジュールはpython2とpython3で名称が変化しています。

Python2系: Queue
Python3系: queue

今回の環境では、Python2.7を使用している為、下記のファイルを置換する必要があります。

sed -i -e "s/import queue/import Queue/g" /root/venv-osp-client/lib/python2.7/site-packages/openstack/utils.py
sed -i -e "s/import queue/import Queue/g" /root/venv-osp-client/lib/python2.7/site-packages/openstack/cloud/openstackcloud.py

次に、OpenStack クライアント環境スクリプトを作成します。

cat << 'EOF' > admin-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=contrail123
export OS_AUTH_URL=http://192.168.0.10:35357/v3
export OS_INTERFACE=internal
export OS_IDENTITY_API_VERSION=3
export OS_REGION_NAME=RegionOne
export OS_AUTH_PLUGIN=password
export OS_BAREMETAL_API_VERSION=1.29

export PS1="${PS1-}(o $OS_USERNAME $OS_PROJECT_NAME)]\$ "
EOF

作成後に、source コマンドで読み込みます。

source admin-openrc.sh 

これで、openstackコマンドが使用可能になったので、Tokenが取得可能になりました。

TOKEN=$(openstack token issue | awk '/ id/{print $4}')
echo $TOKEN