首页 文章

docker-compose和ansible中的“mount if not exists”子句

提问于
浏览
0

我定义了几个路径,我应该在一个ansible dictionnary中找到日志:

"/data/athena/jenkins_master/home/logs"
"/data/athena/jenkins_master/home/logs/*"
"/data/athena/jenkins_master/home/logs/*/*"
"/data/athena/jenkins_master/home/jobs/*/builds/*"

然后,在docker-compose中,我想挂载所有相对卷,但由于我在路径中有递归信息,所以我决定挂载父目录 .

泊坞窗,compose.yml

{% for log in in_filebeat_dict.filebeat.logs | default([]) %}
      - {{ log.path.split('*')[0] }}:{{ log.path.split('*')[0] }}:ro
{% endfor %}

现在我的问题是,对于所有这些条目,它将尝试挂载几次: "/data/athena/jenkins_master/home/logs" 并将失败

当我在另一部分(filebeat)中使用它时,我必须在字典中保留细节 .

我想知道如何在docker-compose中包含“mount if not exists”子句

我应该如何实现它?

1 回答

  • 2

    您可以在循环之前应用检查唯一性:

    {% for log_path in in_filebeat_dict.filebeat.logs | default([]) | map(attribute='path') | map('regex_search','^([^*]+$|.*?(?=/[*]))') | list | unique %}
          - {{ log_path }}:{{ log_path }}:ro
    {% endfor %}
    

    正则表达式 ^([^*]+$|.*?(?=/[*])) 用于选择不带 * 的路径或带有 /* 的路径的第一部分 .

相关问题