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无法调用扩展超级非抽象类的抽象类方法   java Hibernate 5关联[]引用了一个未映射的实体[]:origin(User.hbm.xml)   java禁用JSpinner中的数字分组   java Spring的环境抽象是否使用PropertyEditor?   java是否创建自定义注释作为FrameworkAnnotation的别名?   java如何将Selenium安装为Unix守护程序?   java三值if运算符在正则if-one中   有人能帮我在一个程序上分析java代码吗?   java Spring集成5.0反应堆类型支持   java Websphere 7线程转储分析   java Akka期货和监管策略如何应对失败   使用Clojure中的可选参数调用java函数的构造函数   java如何消除安卓按钮的延迟?   Android上使用X.509证书的java认证应用程序   java如何获取列表中特定类型的所有对象?   java如何将json数组字符串转换为json对象   安卓 Java从长时间返回的日期不正确   java Android Studio在尝试从TextEdit搜索单词时崩溃   ViewPager的java子项