小编Hri*_*nov的帖子

Ansible playbook-wide变量

我有一个有多个主机部分的剧本.我想在这个playbook.yml文件中定义一个仅适用于文件的变量,例如:

vars:
  my_global_var: 'hello'

- hosts: db
  tasks:
   -shell: echo {{my_global_var}} 

- hosts: web
  tasks:
   -shell: echo {{my_global_var}} 
Run Code Online (Sandbox Code Playgroud)

上面的例子不起作用.我必须为每个主机部分复制变量(坏)或在更高级别定义它,例如在我的group_vars/all(不是我想要的,但工作).我也知道可以包含变量文件,但这会影响可读性.是否有任何建议将其置于正确的范围内(例如,剧本文件本身)?

variables ansible

18
推荐指数
2
解决办法
1万
查看次数

Ansible 1.9.4:无法锁定apt以进行独占操作

我碰到了Failed to lock apt for exclusive operation问题:https: //github.com/geerlingguy/ansible-role-apache/issues/50

我在GitHub上发布了很多细节.

我google了很多"无法锁定专属操作"的Ansible投诉,但没有简单的答案.有帮助吗?

ansible

10
推荐指数
5
解决办法
1万
查看次数

Gradle多个编译依赖关系语法

我试图在Gradle 1.12中声明一个编译依赖项,其中多个项目共享相同的exclude子句(这是为了避免在任何地方重复排除).我知道我可以这样做:

configurations {
    compile.exclude group: 'com.google.gwt'
    all*.exclude group: 'com.google.guava'
}
Run Code Online (Sandbox Code Playgroud)

但这会影响所有配置.我想要的是这样的(这在Gradle 1.12中不起作用,如下所示):

compile (
         ["org.jboss.errai:errai-data-binding:2.4.4.Final"]
        ,["org.jboss.errai:errai-data-ioc:2.4.4.Final"]
    ){
        exclude group: 'com.google.gwt' 
        exclude group: 'com.google.guava'
    }
Run Code Online (Sandbox Code Playgroud)

所以我可以将我需要排除的所有依赖项集中在一个地方,并且仍然可以在其他地方:

compile 'com.google.guava:guava:17.0'
Run Code Online (Sandbox Code Playgroud)

更新: 为了澄清,我的唯一目标是替换这段代码:

compile ('bla.bla.bla:1.0'){
  exclude 'same.component:1.0' //Ugly repeat
}
compile ('boo.boo.boo:1.0'){
  exclude 'same.component:1.0' //Ugly repeat
}
compile ('uh.uh.uh:1.0'){
  exclude 'same.component:1.0' //Ugly repeat
}
compile ('oh.oh.oh:1.0'){
  exclude 'same.component:1.0' //Ugly repeat
}
Run Code Online (Sandbox Code Playgroud)

像这样的短暂和甜蜜(目前不工作):

compile( 'bla.bla.bla:1.0'
        ,'boo.boo.boo:1.0'
        ,'uh.uh.uh:1.0'
        ,'oh.oh.oh:1.0'
)
{
    exclude 'same.component:1.0' //Only once! Sweet!
}
Run Code Online (Sandbox Code Playgroud)

syntax configuration compilation gradle

9
推荐指数
1
解决办法
4236
查看次数

为什么ansible总是用模板中的单引号替换双引号?

我正在尝试使用Ansible模板生成Dockerfiles - 请参阅Ansible Galaxy和Github中的角色源和模板

我需要创建一个标准的Dockerfile行,如:

...
VOLUME ["/etc/postgresql/9.4"]
...
Run Code Online (Sandbox Code Playgroud)

但是,当我把它放在输入文件中时:

...
instruction: CMD
value: "[\"/etc/postgresql/{{postgresql_version}}\"]"
...
Run Code Online (Sandbox Code Playgroud)

最终渲染如下:

...
VOLUME ['/etc/postgresql/9.4']
...
Run Code Online (Sandbox Code Playgroud)

我失去了"(这使得Dockerfiles无用)

有帮助吗?我如何说服Jinja不要用'with'代替?我试过 ',安全过滤器,甚至{%raw%} - 它只是继续这样做!

更新: 以下是如何重现该问题:

galaxy.ansible.com或Github 获取peruncs.docker角色(上面给出链接)用下面的内容写一个简单的playbook(比如demo.yml)并运行:ansible-playbook -v demo.yml.该-v选项将允许您查看temp目录,其中产生的Dockerfile去与破碎的内容,所以你可以检查它.生成docker镜像并不重要,只需尝试使Dockerfile正确.

- name: Build docker image
  hosts: localhost
  vars:
        - somevar: whatever        
        - image_tag: "blabla/booboo"
        - docker_copy_files: []
        - docker_file_content:
             - instruction: CMD
               value: '["/usr/bin/runit", "{{somevar}}"]'
  roles:         
      - peruncs.docker
Run Code Online (Sandbox Code Playgroud)

提前致谢!

jinja2 ansible docker

8
推荐指数
1
解决办法
5582
查看次数

Ansible docker 模块缺少 CP 命令?

docker 客户端提供了这里解释的cp子命令,这在需要将文件复制到容器中时非常方便(注意:这有点类似于镜像构建中的 Dockerfile ADD 指令)。在 Docker 1.8 中,cp命令甚至被扩展了一点。

但是,阅读Ansible docker 模块文档,似乎缺少了这一点?这是我的2个问题:

  1. 我误解了 Ansible 文档吗?
  2. 如果 Ansible 缺少 cp 东西,有没有人找到解决方法?我可以想到使用 Ansible复制模块 首先将文件传输到远程机器,然后使用cp运行本地docker客户端,但理想情况下,Ansible 的 docker 模块会作为 docker 模块的一部分一次性完成此操作?

提前致谢。

cp ansible docker

5
推荐指数
1
解决办法
5253
查看次数

OpenJ9 和 docker 容器?

从历史上看,HotSpot 在 docker 容器中运行的记录很差,错误地判断了分配的资源(例如 RAM)。不过,情况正在慢慢好转。

OpenJ9 如何与 docker 容器保持一致,以及它在多大程度上了解容器提供的资源(内存、套接字、线程等)

此外,在 JavaOne 2017 演示期间,有人提到 OpenJ9 可以跨不同 OpenJ9 VM 缓存 jit 编译的类。当虚拟机被限制在不同的容器中(或者)如果容器化的 JVM 共享 Docker 卷时,这种共享缓存是否可行?

openj9

5
推荐指数
1
解决办法
1583
查看次数

开放自由和休眠

我可以在 open-liberty 中使用 Hibernate 作为 JPA 实现吗?如果存在这种集成,我认为它带有分布式缓存和 JTA?

hibernate jpa open-liberty

5
推荐指数
1
解决办法
1713
查看次数

java 20 解构功能中的错误?

以下是 Java 20 中的错误还是我遗漏了什么?如果您编译/运行以下程序,您将获得预期的打印输出。但是,如果您取消注释开关中的单行:

import static java.lang.System.*;
public class Main {
    record Point(int x, int y, Color color){}
    enum Color {RED, BLUE, YELLOW}
    public static void main(String[] args) {
        testSwitch(new Point(10,20,Color.BLUE));
        testSwitch(new Point(10,20,Color.RED));
        testSwitch("vbjhjbhbjhbj");
        testSwitch(1.012);
        testSwitch(Color.YELLOW);
    }
    static void testSwitch(Object o){
        switch(o){
            case null -> out.println("Null");
            case Color c -> out.println("Color: "+c);
            //case Point(var x, var y, Color c) when c == Color.RED -> out.printf("Red point x=%d, y=%d\n",x,y);
            case Point(var x, var y, var color) -> out.printf("Point x=%d, y=%d, …
Run Code Online (Sandbox Code Playgroud)

java java-20

5
推荐指数
1
解决办法
217
查看次数