我想将一个ansible变量设置为某个默认值,但前提是该变量未定义.否则我想保持不变.
我尝试了这两种方法,它们都产生递归循环:
namespace: "{{namespace|default(default_namespace)}}"
namespace: "{% if namespace is defined %}{{namespace}}{% else %}{{default_namespace}}{% endif %}"
Run Code Online (Sandbox Code Playgroud) 背景
有一个我无法控制的私有 docker 注册表。无法从我的计算机访问此注册表,但可以从我有权访问的远程服务器访问。
这是我当前(效率很低)的工作流程:
# On my machine
$ docker save IMAGE > FILE
$ scp FILE SERVER
$ ssh SERVER
# On the server
$ docker load < FILE
$ docker tag -f IMAGE REGISTRY:5000/IMAGE
$ docker push REGISTRY:5000/IMAGE
Run Code Online (Sandbox Code Playgroud)
问题
即使大多数 docker 层没有变化,我也需要保存、上传和加载整个 tarball 来推送图像。
我尝试使用 ssh 将 docker 注册表端口(5000)转发到我机器上的端口:
$ ssh -L 5042:REGISTRY:5000 SERVER
Run Code Online (Sandbox Code Playgroud)
现在我可以从我的机器与注册表进行通信:
$ curl localhost:5042/v2/
{}
Run Code Online (Sandbox Code Playgroud)
但是 docker 不会向它推送图像:
$ docker tag IMAGE localhost:5042/IMAGE
$ docker push localhost:5042/IMAGE
The push refers to a repository …
Run Code Online (Sandbox Code Playgroud) 我们有一个Shell脚本,可以自动准备虚拟环境,然后在其中运行测试。该脚本的部分安装要求:
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
脚本多次运行时,它会为每个需求打印警告:
Requirement already satisfied (use --upgrade to upgrade): discover==0.4.0
...
Run Code Online (Sandbox Code Playgroud)
我需要每次都运行安装步骤,以防有人添加新要求。我了解为什么显示警告。问题在于它会使测试输出混乱。
有没有办法禁用/隐藏此警告?