【问题标题】:How to config pip index-url in Kolla-Ansible?如何在 Kolla-Ansible 中配置 pip index-url?
【发布时间】:2021-08-24 02:56:57
【问题描述】:

我在内部服务器中部署了一些私有包,我想在 Kolla-Ansible 的图像中配置 pip。有没有我可以修改的配置选项来实现这一点? pip config 和我安装 Kolla-Ansible 的虚拟环境一样吗?

【问题讨论】:

    标签: docker ansible openstack


    【解决方案1】:

    pip 配置是否与我安装 Kolla-Ansible 的虚拟环境相同?

    IIUC,不。在我的实验中,主机的pip config与虚拟环境不同。像这样:

    root@l-pc:~# pip -V
    pip 20.2 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
    
    root@l-pc:~# pip config list
    global.index-url='http://my.host.com/pypi/simple'
    install.trusted-host='my.host.com'
    
    
    root@l-pc:~# docker exec -it -u 0 nova_compute /bin/bash
    
    (nova-compute)[root@l-pc /]# pip -V
    pip 20.3.1 from /var/lib/kolla/venv/lib/python2.7/site-packages/pip (python 2.7)
    
    (nova-compute)[root@l-pc /]# pip config list
    :env:.extra-index-url='https://mirror.iad.rax.opendev.org/wheel/ubuntu-18.04-x86_64'
    :env:.index-url='http://mirror.iad.rax.opendev.org:8080/pypi/simple'
    :env:.trusted-host='mirror.iad.rax.opendev.org'
    
    

    在 Kolla-Ansible 的图像中配置 pip。我可以修改任何配置选项来实现这一点吗?

    在我看来,可能是的。所有根据 docker 容器的虚拟环境文件(/etc/resolv.conf, /etc/hosts)都会在启动时更新与主机的一致。

    因此,您可以通过在部署 docker 映像或重新启动正在运行的 docker 容器之前更新文件来实现。

    • /etc/hosts中添加1.1.1.1 mirror.iad.rax.opendev.org解析,其中1.1.1.1是您的内部服务器,mirror.iad.rax.opendev.org是图片中的默认index-url。

    • 如果您有DNS server: 1.1.1.2,则在/etc/resolv.conf中插入nameserver 1.1.1.2,这将解析图像默认index-url: mirror.iad.rax.opendev.org域名。

    在 Kolla-Ansible 的图像中配置 pip

    • index-url your.internal.server.com之后将图片的.pip/pip.conf更新为extra-index-url public.pip.server.com,它会寻找extra-index-url而在index-url中找不到。但是通过这种方式,您可以执行 docker commit 来创建您的新图像。

    【讨论】:

    • 我只在内部pypi服务器上托管我的包,如果将mirror.iad.rax.opendev.org解析到内部服务器,那么我无法下载公共包。(这是我的猜测,我没有尝试过)跨度>
    • 您在内部服务器中的私有包是否与公共包同名?如果不是,也许您需要在index-url your.internal.server.com 之后将图像的pip config 更新为--extra-index-url public.pip.server.com。如果是,我建议您应该维护您需要的所有软件包,其中一些是您自己制作的,作为从公共服务器下载的其他软件包。还有一件事,你的内部 pypi 服务器可以访问公共网络吗?如果是,也许您可​​以在内部服务器中配置一些公共包的代理。
    • 我在内部服务器中的私有包与公共包同名,所以我想将内部pypi服务器设为index-url,将公共服务器设为extra-index-url。我已经使用 pip.conf 文件创建了基本 ubuntu 映像,但没有运气。然后我尝试更改kolla/docker/openstack-base/Dockerfile.j2(jinja2模板),将http://1.1.1.1/packages/mypackage-0.0.1.tar.gz添加到set openstack_base_pip_packages,它工作。我还没弄清楚为什么 pip.conf 没有改变设置,解决方案只是不好而且是暂时的。
    • 我忘记了我是否测试过这个,我认为它会正常工作。但是我记得在openstack服务源代码中将私有包添加到requirements.txt并没有触发下载,所以问题是如何让kolla-ansible下载我的私有包。我找到的解决方案是更改模板文件。无论如何,谢谢你的回答!
    • 哦,我知道了,感谢您的努力。也许我的回答是回复:how configure pip index-url in kolla-ansible's docker image。您可以通过合适的解决方案回答您的问题并接受它。从“stackoverflow.com/help/self-answer”检查。欢呼。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    相关资源
    最近更新 更多