2016-09-17 20:15:37 +00:00
|
|
|
# -*- mode: yaml -*-
|
|
|
|
include:
|
|
|
|
- nginx
|
|
|
|
- rsyncd
|
|
|
|
- cron
|
|
|
|
|
|
|
|
{% set dst_host = salt['pillar.get']('mirror:dst_host',
|
|
|
|
'gentoo'+salt['grains.get']('domain', 'localdomain')) %}
|
|
|
|
{% set mirror_host = salt['pillar.get']('gentoo:mirror_host', 'gentoo.bakka.su') %}
|
|
|
|
{% set default_root = "/var/storage/mirrors" %}
|
|
|
|
{% set mirror_types = salt['pillar.get']('mirror:types', []) %}
|
|
|
|
|
|
|
|
# TODO: cron jobs randomizaton/pillar
|
|
|
|
|
|
|
|
/etc/ssl/nginx/gentoo-mirror/:
|
|
|
|
file.directory:
|
|
|
|
- create: True
|
|
|
|
- mode: 750
|
|
|
|
- user: root
|
|
|
|
- group: nginx
|
|
|
|
|
|
|
|
/etc/ssl/nginx/gentoo-mirror/certificate.pem:
|
|
|
|
file.managed:
|
|
|
|
- source: salt://ssl/certificate-chain.tpl
|
|
|
|
- template: jinja
|
|
|
|
- defaults:
|
|
|
|
cert_chain_key: 'gentoo-mirror'
|
|
|
|
- mode: 644
|
|
|
|
- user: root
|
|
|
|
- group: nginx
|
|
|
|
|
|
|
|
/etc/ssl/nginx/gentoo-mirror/privkey.pem:
|
|
|
|
file.managed:
|
|
|
|
- source: salt://ssl/privkey.tpl
|
|
|
|
- template: jinja
|
|
|
|
- defaults:
|
|
|
|
privkey_key: 'gentoo-mirror'
|
|
|
|
- mode: 600
|
|
|
|
- user: root
|
|
|
|
- group: root
|
|
|
|
|
|
|
|
/etc/nginx/vhosts.d/gentoo-mirror.conf:
|
|
|
|
file.managed:
|
|
|
|
- source: salt://gentoo-mirrors/gentoo_mirror.nginx.conf.tpl
|
|
|
|
- template: jinja
|
|
|
|
- defaults:
|
|
|
|
ssl: False
|
|
|
|
server_name: {{ dst_host }}
|
|
|
|
document_root: {{ default_root }}
|
|
|
|
- context:
|
|
|
|
ssl: True
|
|
|
|
ssl_cert_path: /etc/ssl/nginx/gentoo-mirror/certificate.pem
|
|
|
|
ssl_key_path: /etc/ssl/nginx/gentoo-mirror/privkey.pem
|
|
|
|
- mode: 644
|
|
|
|
- user: root
|
|
|
|
- group: root
|
|
|
|
- require:
|
|
|
|
- file: /etc/ssl/nginx/gentoo-mirror/certificate.pem
|
|
|
|
- file: /etc/ssl/nginx/gentoo-mirror/certificate.pem
|
|
|
|
- watch_in:
|
|
|
|
- cmd: nginx-reload
|
|
|
|
|
|
|
|
/opt/gentoo-rsync/:
|
|
|
|
file.directory:
|
|
|
|
- create: True
|
|
|
|
- mode: 755
|
|
|
|
- user: root
|
|
|
|
- group: root
|
|
|
|
|
|
|
|
/opt/gentoo-rsync/rsync-base.sh:
|
|
|
|
file.managed:
|
|
|
|
- source: salt://gentoo-mirrors/rsync-base.sh
|
|
|
|
- mode: 755
|
|
|
|
- user: root
|
|
|
|
- group: root
|
|
|
|
- require:
|
|
|
|
- file: /opt/gentoo-rsync/
|
|
|
|
|
|
|
|
/etc/rsync/:
|
|
|
|
file.directory:
|
|
|
|
- create: True
|
|
|
|
- mode: 755
|
|
|
|
- user: root
|
|
|
|
- group: root
|
|
|
|
|
|
|
|
{% if 'gentoo-distfiles' in mirror_types %}
|
|
|
|
"{{ default_root }}/gentoo-distfiles":
|
|
|
|
file.directory:
|
|
|
|
- create: True
|
|
|
|
- makedirs: True
|
|
|
|
|
|
|
|
/etc/rsync/rsync-gentoo-distfiles.conf:
|
|
|
|
file.managed:
|
|
|
|
- source: salt://gentoo-mirrors/rsync-conf.tpl
|
|
|
|
- template: jinja
|
|
|
|
- defaults:
|
|
|
|
rsync_src: "rsync://{{ mirror_host }}/gentoo-distfiles"
|
|
|
|
rsync_dst: "{{ default_root }}/gentoo-distfiles"
|
|
|
|
# - context:
|
|
|
|
|
|
|
|
/opt/gentoo-rsync/rsync-gentoo-distfiles.sh:
|
|
|
|
file.symlink:
|
|
|
|
- target: /opt/gentoo-rsync/rsync-base.sh
|
|
|
|
- require:
|
|
|
|
- file: /opt/gentoo-rsync/rsync-base.sh
|
|
|
|
|
|
|
|
rsync-gentoo-distfiles:
|
|
|
|
cron.present:
|
|
|
|
- identifier: rsync-gentoo-distfiles
|
|
|
|
- name: /opt/gentoo-rsync/rsync-gentoo-distfiles.sh
|
|
|
|
- user: root
|
|
|
|
- hour: '*/4'
|
|
|
|
- require:
|
|
|
|
- file: /etc/rsync/rsync-gentoo-distfiles.conf
|
|
|
|
- file: /opt/gentoo-rsync/rsync-gentoo-distfiles.sh
|
|
|
|
|
|
|
|
/etc/rsyncd.d/gentoo-distfiles.conf:
|
|
|
|
ini.options_present:
|
|
|
|
- sections:
|
|
|
|
'gentoo-distfiles':
|
|
|
|
path: "{{ default_root }}/gentoo-distfiles"
|
|
|
|
comment: "Gentoo Linux distfiles mirror"
|
|
|
|
- watch_in:
|
|
|
|
- service: rsyncd
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
{% if 'gentoo-portage' in mirror_types %}
|
|
|
|
"{{ default_root }}/gentoo-portage":
|
|
|
|
file.directory:
|
|
|
|
- create: True
|
|
|
|
- makedirs: True
|
|
|
|
|
|
|
|
/etc/rsync/rsync-gentoo-portage.conf:
|
|
|
|
file.managed:
|
|
|
|
- source: salt://gentoo-mirrors/rsync-conf.tpl
|
|
|
|
- template: jinja
|
|
|
|
- defaults:
|
|
|
|
rsync_src: "rsync://{{ mirror_host }}/gentoo-portage"
|
|
|
|
rsync_dst: "{{ default_root }}/gentoo-portage"
|
|
|
|
rsync_opts: "+ --checksums"
|
|
|
|
# - context:
|
|
|
|
|
|
|
|
/opt/gentoo-rsync/rsync-gentoo-portage.sh:
|
|
|
|
file.symlink:
|
|
|
|
- target: /opt/gentoo-rsync/rsync-base.sh
|
|
|
|
- require:
|
|
|
|
- file: /opt/gentoo-rsync/rsync-base.sh
|
|
|
|
|
|
|
|
rsync-gentoo-portage:
|
|
|
|
cron.present:
|
|
|
|
- identifier: rsync-gentoo-portage
|
|
|
|
- name: /opt/gentoo-rsync/rsync-gentoo-portage.sh
|
|
|
|
- user: root
|
|
|
|
- hour: '*/4'
|
|
|
|
- require:
|
|
|
|
- file: /etc/rsync/rsync-gentoo-portage.conf
|
|
|
|
- file: /opt/gentoo-rsync/rsync-gentoo-portage.sh
|
|
|
|
|
|
|
|
/etc/rsyncd.d/gentoo-portage.conf:
|
|
|
|
ini.options_present:
|
|
|
|
- sections:
|
|
|
|
'gentoo-portage':
|
|
|
|
path: "{{ default_root }}/gentoo-portage"
|
|
|
|
comment: "Gentoo Linux Portage tree mirror"
|
|
|
|
exclude: "/.git"
|
|
|
|
- watch_in:
|
|
|
|
- service: rsyncd
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
{% if 'packages' in mirror_types %}
|
|
|
|
"{{ default_root }}/gentoo-packages":
|
|
|
|
file.directory:
|
|
|
|
- create: True
|
|
|
|
- makedirs: True
|
|
|
|
|
|
|
|
{% for inst in salt['pillar.get']('mirror:gentoo_package_repos', []) %}
|
|
|
|
/opt/gentoo-rsync/rsync-gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages.sh:
|
|
|
|
file.symlink:
|
|
|
|
- target: /opt/gentoo-rsync/rsync-base.sh
|
|
|
|
- require:
|
|
|
|
- file: /opt/gentoo-rsync/rsync-base.sh
|
|
|
|
|
|
|
|
"{{ default_root }}/{{ inst.get('rsync_dst', 'gentoo-packages/'+inst['arch']+'/'+inst['cpu_arch']) }}":
|
|
|
|
file.directory:
|
|
|
|
- create: True
|
|
|
|
- makedirs: True
|
|
|
|
|
|
|
|
/etc/rsync/rsync-gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages.conf:
|
|
|
|
file.managed:
|
|
|
|
- source: salt://gentoo-mirrors/rsync-conf.tpl
|
|
|
|
- template: jinja
|
|
|
|
- defaults:
|
|
|
|
rsync_src: "{{ inst.get('rsync_src', 'rsync://'+mirror_host+'/gentoo-packages/'+inst['arch']+'/'+inst['cpu_arch']) }}"
|
|
|
|
rsync_dst: "{{ default_root }}/{{ inst.get('rsync_dst', 'gentoo-packages/'+inst['arch']+'/'+inst['cpu_arch']) }}"
|
|
|
|
|
|
|
|
rsync-gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages:
|
|
|
|
cron.present:
|
|
|
|
- identifier: rsync-gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages
|
|
|
|
- name: /opt/gentoo-rsync/rsync-gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages.sh
|
|
|
|
- user: root
|
2016-09-17 21:23:27 +00:00
|
|
|
- dayweek: "{{ inst.get('day','*') }}"
|
2016-09-17 20:15:37 +00:00
|
|
|
- hour: "{{ inst.get('hour','*/4') }}"
|
|
|
|
- minute: "{{ inst.get('minute','0') }}"
|
|
|
|
- require:
|
|
|
|
- file: /etc/rsync/rsync-gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages.conf
|
|
|
|
- file: /opt/gentoo-rsync/rsync-gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages.sh
|
|
|
|
|
|
|
|
/etc/rsyncd.d/gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages.conf:
|
|
|
|
ini.options_present:
|
|
|
|
- sections:
|
|
|
|
'gentoo-{{ inst['arch'] }}-{{ inst['cpu_arch'] }}-packages':
|
|
|
|
path: "{{ default_root }}/{{ inst.get('rsync_dst', 'gentoo-packages/'+inst['arch']+'/'+inst['cpu_arch']) }}"
|
|
|
|
comment: "Gentoo Linux {{ inst['arch'] }}-{{ inst['cpu_arch'] }} packages repo"
|
|
|
|
- watch_in:
|
|
|
|
- service: rsyncd
|
|
|
|
{% endfor %}
|
|
|
|
{% endif %}
|