OpenStack Python客户端的Docker图像生成器

osc-docker-builder的Python项目详细描述


OpenStack客户端的Docker图像生成器(也称为OSCS Docker Builder)

Latest VersionDownloadsCode IssuescodecovCircleCI

很多人需要安装/更新/升级/降级任何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

作者

恩里克·加西亚·帕布罗斯engapa@gmail.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OpenShift的齿轮特性   java如何在Liferay站点的每个页面上放置公司地址和电话?   java确定整数数组中是否存在一个子集,在两个条件下求和到给定的目标值   序列化为什么java中的serialVersionUID必须是静态的、最终的、长类型的?   java响应返回null   java注入接口实现Quarkus   java我不明白为什么第二次排序的运行时间比第一次慢?   (Java)显示图像的最佳方式?   java Android应用程序因添加布局而崩溃   java如何在运行时获取泛型变量的类   java Selenium web驱动程序:无效的选择器:*:WebKitFullScreenSentor   Spring中的java注入值始终为空   Eclipse中带有TestNG插件的@BeforeSuite和@AfterSuite的java问题   使用trycatch块、filewriter和printwriter在java中创建自定义类   如何在Java 安卓上绘制相交的两条线