簡體   English   中英

docker-compose and ansible中的“如果不存在則掛載”子句

[英]“mount if not exists” clause in docker-compose and ansible

我定義了幾個路徑,可在其中找到字典:

"/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中,我想掛載所有相對卷,但是由於路徑中有遞歸信息,因此我決定掛載父目錄。

docker-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中包含一個“如果不存在則掛載”子句

我應該如何實現?

您可以在循環之前應用檢查唯一性:

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

正則表達式^([^*]+$|.*?(?=/[*]))將選擇不帶*的路徑或帶/*的路徑的第一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM