blob: 907f4cffe18000c5142007eb428d54aa5b1a7b6e [file] [log] [blame]
Filip Pytlounf5383a42015-10-06 16:28:32 +02001{%- from "linux/map.jinja" import system with context %}
2{%- if system.enabled %}
3
Petr Michalec459da2b2017-04-13 11:13:09 +02004linux_repo_prereq_pkgs:
5 pkg.installed:
6 - pkgs: {{ system.pkgs }}
Marek Celoud9ed34032017-04-11 16:03:23 +02007
Petr Michalec10462bb2017-03-23 19:18:08 +01008# global proxy setup
9{%- if system.proxy.get('pkg', {}).get('enabled', False) %}
10{%- if grains.os_family == 'Debian' %}
11
12/etc/apt/apt.conf.d/99proxies-salt:
13 file.managed:
14 - template: jinja
15 - source: salt://linux/files/apt.conf.d_proxies
16 - defaults:
17 external_host: False
18 https: {{ system.proxy.get('pkg', {}).get('https', None) | default(system.proxy.get('https', None), true) }}
19 http: {{ system.proxy.get('pkg', {}).get('http', None) | default(system.proxy.get('http', None), true) }}
20 ftp: {{ system.proxy.get('pkg', {}).get('ftp', None) | default(system.proxy.get('ftp', None), true) }}
21
22{%- else %}
23
24/etc/apt/apt.conf.d/99proxies-salt:
25 file.absent
26
27{%- endif %}
28{%- endif %}
29
Filip Pytlounf5383a42015-10-06 16:28:32 +020030{% set default_repos = {} %}
31
Jiri Broulik25839cc2017-04-18 17:05:20 +020032{%- if system.purge_repos|default(False) %}
33
34purge_sources_list_d_repos:
35 file.directory:
36 - name: /etc/apt/sources.list.d/
37 - clean: True
38
39{%- endif %}
40
Filip Pytlounf5383a42015-10-06 16:28:32 +020041{%- for name, repo in system.repo.iteritems() %}
Petr Michalece9978ce2017-05-15 17:15:49 +020042{%- set name=repo.get('name', name) %}
Filip Pytlounf5383a42015-10-06 16:28:32 +020043{%- if grains.os_family == 'Debian' %}
44
Petr Michalec10462bb2017-03-23 19:18:08 +010045# per repository proxy setup
46{%- if repo.get('proxy', {}).get('enabled', False) %}
47{%- set external_host = repo.proxy.get('host', None) or repo.source.split('/')[2] %}
48/etc/apt/apt.conf.d/99proxies-salt-{{ name }}:
49 file.managed:
50 - template: jinja
51 - source: salt://linux/files/apt.conf.d_proxies
52 - defaults:
53 external_host: {{ external_host }}
54 https: {{ repo.proxy.get('https', None) or system.proxy.get('pkg', {}).get('https', None) | default(system.proxy.get('https', None), True) }}
55 http: {{ repo.proxy.get('http', None) or system.proxy.get('pkg', {}).get('http', None) | default(system.proxy.get('http', None), True) }}
56 ftp: {{ repo.proxy.get('ftp', None) or system.proxy.get('pkg', {}).get('ftp', None) | default(system.proxy.get('ftp', None), True) }}
57{%- else %}
58/etc/apt/apt.conf.d/99proxies-salt-{{ name }}:
59 file.absent
60{%- endif %}
61
Filip Pytlounf5383a42015-10-06 16:28:32 +020062{%- if repo.pin is defined %}
63
64linux_repo_{{ name }}_pin:
65 file.managed:
66 - name: /etc/apt/preferences.d/{{ name }}
67 - source: salt://linux/files/preferences_repo
68 - template: jinja
69 - defaults:
70 repo_name: {{ name }}
71
72{%- else %}
73
74linux_repo_{{ name }}_pin:
75 file.absent:
76 - name: /etc/apt/preferences.d/{{ name }}
77
78{%- endif %}
79
80{%- if repo.get('default', False) %}
81
82{%- do default_repos.update({name: repo}) %}
83
Petr Michalec1ae62b12017-04-27 14:35:13 +020084{%- if repo.get('key') %}
85
86linux_repo_{{ name }}_key:
87 cmd.wait:
88 - name: "echo '{{ repo.key }}' | apt-key add -"
89 - watch:
90 - file: default_repo_list
91
92{%- elif repo.key_url|default(False) %}
Filip Pytlounf5383a42015-10-06 16:28:32 +020093
94linux_repo_{{ name }}_key:
95 cmd.wait:
96 - name: "curl -s {{ repo.key_url }} | apt-key add -"
97 - watch:
98 - file: default_repo_list
99
100{%- endif %}
101
102{%- else %}
103
Filip Pytlounbd16dc22017-11-13 13:57:36 +0100104{%- if repo.get('enabled', True) %}
105
Filip Pytlounf5383a42015-10-06 16:28:32 +0200106linux_repo_{{ name }}:
107 pkgrepo.managed:
Martin Polreich09a648a2017-05-04 11:35:14 +0200108 {%- if repo.ppa is defined %}
109 - ppa: {{ ppa }}
110 {%- else %}
Filip Pytlounf5383a42015-10-06 16:28:32 +0200111 - human_name: {{ name }}
112 - name: {{ repo.source }}
113 {%- if repo.architectures is defined %}
114 - architectures: {{ repo.architectures }}
115 {%- endif %}
116 - file: /etc/apt/sources.list.d/{{ name }}.list
Filip Pytloun914eff92017-03-22 18:46:15 +0100117 - clean_file: {{ repo.clean|default(True) }}
Filip Pytlounf5383a42015-10-06 16:28:32 +0200118 {%- if repo.key_id is defined %}
119 - keyid: {{ repo.key_id }}
120 {%- endif %}
121 {%- if repo.key_server is defined %}
122 - keyserver: {{ repo.key_server }}
123 {%- endif %}
124 {%- if repo.key_url is defined %}
125 - key_url: {{ repo.key_url }}
126 {%- endif %}
Petr Michalecc146f182017-03-22 10:14:32 +0100127 - consolidate: {{ repo.get('consolidate', False) }}
128 - clean_file: {{ repo.get('clean_file', False) }}
129 - refresh_db: {{ repo.get('refresh_db', True) }}
Marek Celoud159d3812017-03-03 23:02:45 +0100130 - require:
Petr Michalec459da2b2017-04-13 11:13:09 +0200131 - pkg: linux_repo_prereq_pkgs
Petr Michalec10462bb2017-03-23 19:18:08 +0100132 {%- if repo.get('proxy', {}).get('enabled', False) %}
133 - file: /etc/apt/apt.conf.d/99proxies-salt-{{ name }}
134 {%- endif %}
135 {%- if system.proxy.get('pkg', {}).get('enabled', False) %}
136 - file: /etc/apt/apt.conf.d/99proxies-salt
137 {%- endif %}
Jiri Broulik25839cc2017-04-18 17:05:20 +0200138 {%- if system.purge_repos|default(False) %}
139 - file: purge_sources_list_d_repos
140 {%- endif %}
Martin Polreich09a648a2017-05-04 11:35:14 +0200141 {%- endif %}
Filip Pytlounf5383a42015-10-06 16:28:32 +0200142
Filip Pytlounbd16dc22017-11-13 13:57:36 +0100143{%- else %}
144
145linux_repo_{{ name }}_absent:
146 file.absent:
147 - name: /etc/apt/sources.list.d/{{ name }}.list:
148
149{%- endif %}
150
Filip Pytlounf5383a42015-10-06 16:28:32 +0200151{%- endif %}
152
153{%- endif %}
154
155{%- if grains.os_family == "RedHat" %}
156
Petr Michalec10462bb2017-03-23 19:18:08 +0100157{%- if repo.get('proxy', {}).get('enabled', False) %}
158# PLACEHOLDER
159# TODO, implement per proxy configuration for Yum
160{%- endif %}
161
Filip Pytlounf5383a42015-10-06 16:28:32 +0200162{%- if not repo.get('default', False) %}
163
164linux_repo_{{ name }}:
165 pkgrepo.managed:
166 - name: {{ name }}
Filip Pytloun96be4372016-03-19 14:02:47 +0100167 - humanname: {{ repo.get('humanname', name) }}
168 {%- if repo.mirrorlist is defined %}
169 - mirrorlist: {{ repo.mirrorlist }}
170 {%- else %}
Filip Pytlounf5383a42015-10-06 16:28:32 +0200171 - baseurl: {{ repo.source }}
Filip Pytloun96be4372016-03-19 14:02:47 +0100172 {%- endif %}
Filip Pytlounf5383a42015-10-06 16:28:32 +0200173 - gpgcheck: {% if repo.get('gpgcheck', False) %}1{% else %}0{% endif %}
Filip Pytloun96be4372016-03-19 14:02:47 +0100174 {%- if repo.gpgkey is defined %}
175 - gpgkey: {{ repo.gpgkey }}
176 {%- endif %}
Marek Celoud159d3812017-03-03 23:02:45 +0100177 - require:
Petr Michalec459da2b2017-04-13 11:13:09 +0200178 - pkg: linux_repo_prereq_pkgs
Filip Pytlounf5383a42015-10-06 16:28:32 +0200179
180{%- endif %}
181
182{%- endif %}
183
184{%- endfor %}
185
186{%- if default_repos|length > 0 and grains.os_family == 'Debian' %}
187
188default_repo_list:
189 file.managed:
190 - name: /etc/apt/sources.list
191 - source: salt://linux/files/sources.list
192 - template: jinja
193 - user: root
194 - group: root
195 - mode: 0644
Bruno Binet94ee9d52017-05-05 17:01:03 +0200196{%- if system.purge_repos|default(False) %}
Jiri Broulik25839cc2017-04-18 17:05:20 +0200197 - replace: True
198{%- endif %}
Filip Pytlounf5383a42015-10-06 16:28:32 +0200199 - defaults:
200 default_repos: {{ default_repos }}
Marek Celoud159d3812017-03-03 23:02:45 +0100201 - require:
Petr Michalec459da2b2017-04-13 11:13:09 +0200202 - pkg: linux_repo_prereq_pkgs
Filip Pytlounf5383a42015-10-06 16:28:32 +0200203
Marek Celoudf163f062017-04-27 16:25:09 +0200204refresh_default_repo:
205 module.wait:
206 - name: pkg.refresh_db
207 - watch:
208 - file: default_repo_list
209
Filip Pytlounf5383a42015-10-06 16:28:32 +0200210{%- endif %}
211
212{%- endif %}