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