|
64 | 64 |
|
65 | 65 | {%- set service_name = kind if vm_name == "main" else kind ~ "-" ~ vm_name %} |
66 | 66 |
|
67 | | - {%- if ( kind in ["vmserver", "vmalert"] ) and vm_data.get("nginx", {}) and vm_data.get("nginx",{}).get("enabled", True) %} |
68 | | - {%- include "victoriametrics/nginx/init.sls" %} |
69 | | - {%- endif %} |
| 67 | + {%- set vmargskeys = [] %} |
| 68 | + {%- set vmargslist = [] %} |
70 | 69 |
|
71 | | - {%- do defaults[kind]["args"].update(vm_data.get("args", {})) %} |
72 | | - {%- do vm_data.setdefault("args", {}).update(defaults[kind]["args"]) %} |
73 | | - {%- if kind != "vmalert" %} |
74 | | - {%- set arg_storage = defaults[kind]["arg_storage"] %} |
75 | | - {%- set data_dir = vm_data.get(arg_storage, defaults[kind]["args"][arg_storage]).format(vm_name=vm_name) %} |
76 | | - {%- do vm_data["args"].update({arg_storage: data_dir}) %} |
| 70 | + {%- set vmargs = [] %} |
| 71 | + {%- set vm_data_args = vm_data.get("args", []) %} |
| 72 | + {%- if vm_data_args is mapping %} |
| 73 | + {% do vmargs.append(vm_data_args) %} |
| 74 | + {%- else %} |
| 75 | + {% do vmargs.extend(vm_data_args) %} |
77 | 76 | {%- endif %} |
78 | 77 |
|
79 | | - {%- set vmargslist = [] %} |
80 | | - {%- for k, v in vm_data.get("args", {}).items() %} |
81 | | - {%- do vmargslist.append("-" ~ k ~ "=" ~ v) %} |
| 78 | + {# Populate args from pillar #} |
| 79 | + {%- for arg in vmargs %} |
| 80 | + {%- for k, v in arg.items() %} |
| 81 | + {%- do vmargskeys.append(k) %} |
| 82 | + {% if v is string %} |
| 83 | + {%- do vmargslist.append({k: v.format(vm_name=vm_name)}) %} |
| 84 | + {%- else %} |
| 85 | + {%- do vmargslist.append({k: v}) %} |
| 86 | + {%- endif %} |
| 87 | + {%- endfor %} |
| 88 | + {%- endfor %} |
| 89 | +
|
| 90 | + {# Populate args from defaults if not set in pillar #} |
| 91 | + {%- for arg in defaults[kind]["args"] %} |
| 92 | + {%- for k, v in arg.items() %} |
| 93 | + {% if k not in vmargskeys %} |
| 94 | + {%- do vmargslist.append({k: v.format(vm_name=vm_name)}) %} |
| 95 | + {% endif %} |
| 96 | + {%- endfor %} |
82 | 97 | {%- endfor %} |
83 | 98 |
|
| 99 | + {%- do vm_data.update({"settings":{}}) %} |
| 100 | + {%- for arg in vmargslist %} |
| 101 | + {%- for k, v in arg.items() %} |
| 102 | + {%- if k == defaults[kind]["arg_storage"] %} |
| 103 | + {%- do vm_data["settings"].update({"storage_dir": v}) %} |
| 104 | + {%- endif %} |
| 105 | + {%- if k == "httpListenAddr" %} |
| 106 | + {%- do vm_data["settings"].update({k: v}) %} |
| 107 | + {%- endif %} |
| 108 | + {% endfor %} |
| 109 | + {% endfor %} |
| 110 | +
|
| 111 | + |
| 112 | + {%- if ( kind in ["vmserver", "vmalert"] ) and vm_data.get("nginx", {}) and vm_data.get("nginx",{}).get("enabled", True) %} |
| 113 | + {%- include "victoriametrics/nginx/init.sls" %} |
| 114 | + {%- endif %} |
| 115 | +
|
84 | 116 | {%- if kind != "vmalert" %} |
85 | 117 | {{ kind }}_{{ vm_name }}_storage_dir: |
86 | 118 | file.directory: |
87 | | - - name: {{ vm_data["args"][arg_storage] }} |
| 119 | + - name: {{ vm_data["settings"]["storage_dir"] }} |
88 | 120 | - makedirs: True |
89 | 121 | - user: root |
90 | 122 | - group: root |
|
96 | 128 | - source: {{ service_target.rsplit("/", maxsplit=1)[0] }}/{{ defaults[kind]["original_name"] }} |
97 | 129 | - force: True |
98 | 130 |
|
| 131 | + {# Transform in joinable list #} |
| 132 | + {%- set vmargslistjoin = [] %} |
| 133 | + {%- for arg in vmargslist %} |
| 134 | + {%- for k, v in arg.items() %} |
| 135 | + {%- do vmargslistjoin.append("-" ~ k ~ "=" ~ v) %} |
| 136 | + {% endfor %} |
| 137 | + {% endfor %} |
| 138 | +
|
99 | 139 | {{ kind }}_{{ vm_name }}_systemd_unit: |
100 | 140 | file.managed: |
101 | 141 | - name: /etc/systemd/system/{{ service_name }}.service |
|
112 | 152 | StartLimitInterval=0 |
113 | 153 | Restart=on-failure |
114 | 154 | RestartSec=1 |
115 | | - ExecStart={{ service_target }} {{ " ".join(vmargslist) }} |
| 155 | + ExecStart={{ service_target }} {{ " ".join(vmargslistjoin) }} |
116 | 156 |
|
117 | 157 | [Install] |
118 | 158 | WantedBy=multi-user.target |
|
0 commit comments