OpenStack Python客户端的Docker图像生成器
osc-docker-builder的Python项目详细描述
OpenStack客户端的Docker图像生成器(也称为OSCS Docker Builder)
很多人需要安装/更新/升级/降级任何openstack 任何时候都可以使用python客户端。多亏了Docker容器 具有特定上游的所有openstack客户端的独立环境 你想要的版本。
先决条件
先决条件列表:
- docker镜像:确保有一个正式的python docker镜像 对于提供的python版本参数。
- tox:所有客户端都在使用tox,python版本参数将是 在环境列表中匹配。
- 公共版本:所有客户机都必须有相同的版本,在其他版本中 必须指定其他版本的情况(按中的“release”属性 (osc.yml文件)重写全局释放参数。例如, 在osc.yml中,您可以看到gnocchi客户端有“master”版本 而不是“稳定/牛顿”。
使用OSCS构建Docker图像
此模块可以通过PIP安装:
$ pip install osc-docker-builder
获得命令帮助的最佳方法是:
osc-builder --help usage: ocs [-h] [-bp BUILD_PATH] [-f CONFIG_FILE] [-pv PYTHON_VERSION] [-r RELEASE] [-c CLIENTS] [-sf] [-v] Build a docker image with all Openstack clients that you want for a specific upstream branch and python version optional arguments: -h, --help show this help message and exit -bp BUILD_PATH, --build-path BUILD_PATH The build path where files are written. -f CONFIG_FILE, --config-file CONFIG_FILE A YAML config file. -pv PYTHON_VERSION, --python-version PYTHON_VERSION Python version for docker image base(https://hub.docker.com/_/python/).For example : 2.7, 3.5.2 -r RELEASE, --release RELEASE Upstream release. -c CLIENTS, --clients CLIENTS Provide all openstack python clients that you want.By defaults only python-openstackclient will be installed. -sf, --skip-fails Skip failures and create the image. -v, --verbose Show details.
准备好行动了吗?,假设要为 这些python版本和openstack客户端:
osc-builder --python-version 3.4 --clients openstack --clients heat --release stable/newton --build-path /tmp/osc-docker-builder
我建议使用配置文件(可以由版本控制 控制系统):
osc-builder -f osc.yml
此命令可以从源代码启动。主要功能 可在OSC Docker_Builder软件包中找到:
$ osc.py -f osc.yml -bp /tmp/osc-builder
作为命令执行输出,我们有一个docker映像可以使用。 将您的图像推送到您的私人注册表或使用“engapa”上的“我的图像” dockerhub.com中的帐户
运行和使用Docker容器
例如,为python客户机2.7运行基于最新映像的容器 释放稳定/牛顿:
$ docker run -it -d --name osc engapa/osc:2.7-stable_newton-latest 1f395d7273b99b734725fcbab4ebd05082f21978e0c4e3104cc8332c7430920d $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f395d7273b9 engapa/osc:2.7-stable_newton-latest "/bin/bash" 2 seconds ago Up 3 seconds osc
例如,让我们查看安装在 容器:
$ docker exec -it 1f395d7273b9 /bin/bash -c "heat --version" 1.5.0
如果您喜欢在容器内操作:
$ docker attach 1f395d7273b9 root@1f395d7273b9:# pip list --format columns | grep -i "^python-.*client" python-openstackclient 3.2.1.dev10 /src/python-openstackclient python-saharaclient 0.18.1.dev1 /src/python-saharaclient python-searchlightclient 1.0.1.dev1 /src/python-searchlightclient python-senlinclient 1.0.1.dev14 /src/python-senlinclient python-solumclient 2.1.2.dev2 /src/python-solumclient python-swiftclient 3.1.1.dev1 /src/python-swiftclient ... root@1f395d7273b9:/#
如果要更新所有python客户端版本(如果提供了版本 是一个分支,例如:master)只需在 容器:
$ docker attach 1f395d7273b9 root@1f395d7273b9:/root# pip install -U -r requirements.txt
openstack的一个有趣的模块是“os client config”,它的目标是 使用卷装入点共享的云配置文件(位于“/root”, “/root/.config/openstack”或“/etc/openstack”目录):
$ cat << EOF > cloud.yml > clouds: > spaincloud: > auth: > username: engapa > password: XXXXXXXXX > project_name: OSOOS > auth_url: 'https://spaincloud.com:5001/v2.0' > region_name: SpainSalamanca > dns_api_version: 1 > EOF $ docker run -it --name osc -v $(pwd)/clouds.yml:/root/.config/openstack/clouds.yml engapa/osc:2.7-stable_newton-latest root@1536ac361c6c:~# openstack --os-cloud spaincloud server list ...
显影剂模式
具有代码的主要任务由 tox
要启动测试,只需键入:
$ tox -r ... Name Stmts Miss Cover ----------------------------------------------- osc_docker_builder.py 0 0 100% osc_docker_builder/osc.py 129 102 70% ----------------------------------------------- TOTAL 129 102 70% ---------------------------------------------------------------------- Ran 5 tests in 0.097s OK ___________________________________________________________________________ summary ____________________________________________________________________________ pep8: commands succeeded py27: commands succeeded py35: commands succeeded congratulations :)
加载virtualenv并生成docker映像:
$ source .tox/py27/bin/activate $(py27) osc-builder -f osc.yml