2016-05-29 16:22:44 +02:00
|
|
|
---
|
|
|
|
|
2016-06-01 12:21:15 +02:00
|
|
|
- name: install svn, git, rsync and some perl stuff
|
2016-06-14 10:35:04 +02:00
|
|
|
pacman: name=git,subversion,rsync,perl-dbd-pg,perl-timedate,diffstat state=present
|
2016-05-29 16:22:44 +02:00
|
|
|
|
|
|
|
- name: create dbscripts users
|
2016-06-13 19:49:20 +02:00
|
|
|
user: name="{{ item }}" shell=/bin/bash
|
2016-05-29 16:22:44 +02:00
|
|
|
with_items:
|
|
|
|
- svn-packages
|
|
|
|
- svn-community
|
2016-05-31 11:56:58 +02:00
|
|
|
|
|
|
|
- name: add cleanup user
|
|
|
|
user: name=cleanup groups=tu,dev,multilib shell=/sbin/nologin
|
2016-05-29 16:22:44 +02:00
|
|
|
|
2016-06-13 19:49:20 +02:00
|
|
|
- name: add sourceballs user
|
|
|
|
user: name=sourceballs shell=/sbin/nologin
|
|
|
|
|
2016-06-13 20:59:05 +02:00
|
|
|
- name: set up sudoers.d for special users
|
2016-09-22 09:24:07 +02:00
|
|
|
copy: src=sudoers.d dest=/etc/sudoers.d/dbscripts owner=root group=root mode=0600
|
2016-06-13 20:59:05 +02:00
|
|
|
|
2017-10-20 21:26:55 +02:00
|
|
|
- name: create ssl cert
|
2020-06-12 21:55:13 +02:00
|
|
|
command: certbot certonly --email webmaster@archlinux.org --agree-tos --rsa-key-size 4096 --renew-by-default --webroot -w {{ letsencrypt_validation_dir }} -d '{{ repos_domain }}' creates='/etc/letsencrypt/live/{{ repos_domain }}/fullchain.pem'
|
2016-07-26 20:47:22 +02:00
|
|
|
|
2018-07-05 17:18:15 +02:00
|
|
|
- name: make nginx log dir
|
|
|
|
file: path=/var/log/nginx/{{ repos_domain }} state=directory owner=root group=root mode=0755
|
|
|
|
|
2016-06-15 03:58:08 +02:00
|
|
|
- name: set up nginx
|
2016-09-22 09:24:07 +02:00
|
|
|
template: src=nginx.d.conf.j2 dest=/etc/nginx/nginx.d/dbscripts.conf owner=root group=root mode=0644
|
2016-06-15 03:58:08 +02:00
|
|
|
notify:
|
2017-01-02 12:31:53 +01:00
|
|
|
- reload nginx
|
2016-07-26 20:47:22 +02:00
|
|
|
tags:
|
|
|
|
- nginx
|
2016-06-15 03:58:08 +02:00
|
|
|
|
|
|
|
- name: put dbscripts.htpasswd in place
|
2016-09-22 09:24:07 +02:00
|
|
|
copy: src=dbscripts.htpasswd dest=/etc/nginx/auth/dbscripts.htpasswd owner=root group=http mode=0640
|
2016-07-26 20:47:22 +02:00
|
|
|
tags:
|
|
|
|
- nginx
|
2016-06-15 03:58:08 +02:00
|
|
|
|
2016-05-30 03:58:07 +02:00
|
|
|
- name: create Arch Linux-specific users
|
|
|
|
user:
|
|
|
|
name: "{{ item.key }}"
|
|
|
|
group: users
|
|
|
|
groups: "{{ item.value.groups | join(',') }}"
|
2020-06-12 21:55:13 +02:00
|
|
|
comment: "{{ item.value.name }}"
|
2016-05-30 03:58:07 +02:00
|
|
|
state: present
|
|
|
|
with_dict: "{{ arch_users }}"
|
|
|
|
|
|
|
|
- name: configure ssh keys for devs
|
2017-01-02 15:53:10 +01:00
|
|
|
template: src=authorized_keys-group.j2 dest=/home/svn-packages/.ssh/authorized_keys owner=svn-packages group=svn-packages mode=600
|
|
|
|
vars:
|
|
|
|
pubkey_groups: ['dev']
|
|
|
|
tags: ['archusers']
|
2016-05-30 03:58:07 +02:00
|
|
|
|
2016-05-31 11:56:58 +02:00
|
|
|
- name: configure ssh keys for TUs
|
2017-01-02 15:53:10 +01:00
|
|
|
template: src=authorized_keys-group.j2 dest=/home/svn-community/.ssh/authorized_keys owner=svn-community group=svn-community mode=600
|
|
|
|
vars:
|
|
|
|
pubkey_groups: ['tu']
|
|
|
|
tags: ['archusers']
|
2016-05-30 03:58:07 +02:00
|
|
|
|
2016-09-17 16:46:46 +02:00
|
|
|
- name: create staging directories in user homes
|
2017-01-29 18:48:41 +01:00
|
|
|
dbscripts_mkdirs:
|
|
|
|
pathtmpl: '/home/{user}/staging/{dirname}'
|
|
|
|
permissions: 755
|
|
|
|
directories: ['', 'core', 'extra', 'testing', 'staging', 'community', 'community-staging', 'community-testing', 'multilib', 'multilib-staging', 'multilib-testing']
|
2020-06-12 21:55:13 +02:00
|
|
|
users: "{{ arch_users.keys() | list }}"
|
2017-01-29 18:48:41 +01:00
|
|
|
group: users
|
2016-12-19 09:42:20 +01:00
|
|
|
tags: ["archusers"]
|
2016-09-17 16:46:46 +02:00
|
|
|
|
2016-05-29 16:22:44 +02:00
|
|
|
- name: create dbscripts paths
|
|
|
|
file: path="{{ item }}" state=directory
|
|
|
|
with_items:
|
|
|
|
- /srv/repos/svn-community
|
|
|
|
- /srv/repos/svn-packages
|
|
|
|
|
2020-06-12 21:39:22 +02:00
|
|
|
- name: create svn-community/package-cleanup directory
|
|
|
|
file: path="/srv/repos/svn-community/package-cleanup" state=directory owner=svn-community group=tu mode=0775
|
|
|
|
- name: add acl user:cleanup:rwx to /srv/repos/svn-community/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-community/package-cleanup entry="user:cleanup:rwx" state=present
|
|
|
|
- name: add acl default:user::rwx to /srv/repos/svn-community/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-community/package-cleanup entry="default:user::rwx" state=present
|
|
|
|
- name: add acl default:user:cleanup:rwx to /srv/repos/svn-community/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-community/package-cleanup entry="default:user:cleanup:rwx" state=present
|
|
|
|
- name: add acl default:group::rwx to /srv/repos/svn-community/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-community/package-cleanup entry="default:group::rwx" state=present
|
|
|
|
- name: add acl default:other::r-x to /srv/repos/svn-community/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-community/package-cleanup entry="default:other::r-x" state=present
|
|
|
|
|
|
|
|
- name: create svn-packages/package-cleanup directory
|
|
|
|
file: path="/srv/repos/svn-packages/package-cleanup" state=directory owner=svn-packages group=dev mode=0775
|
|
|
|
- name: add acl user:cleanup:rwx to /srv/repos/svn-packages/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-packages/package-cleanup entry="user:cleanup:rwx" state=present
|
|
|
|
- name: add acl default:user::rwx to /srv/repos/svn-packages/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-packages/package-cleanup entry="default:user::rwx" state=present
|
|
|
|
- name: add acl default:user:cleanup:rwx to /srv/repos/svn-packages/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-packages/package-cleanup entry="default:user:cleanup:rwx" state=present
|
|
|
|
- name: add acl default:group::rwx to /srv/repos/svn-packages/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-packages/package-cleanup entry="default:group::rwx" state=present
|
|
|
|
- name: add acl default:other::r-x to /srv/repos/svn-packages/package-cleanup
|
|
|
|
acl: name=/srv/repos/svn-packages/package-cleanup entry="default:other::r-x" state=present
|
|
|
|
|
|
|
|
- name: create svn-community/source-cleanup directory
|
|
|
|
file: path="/srv/repos/svn-community/source-cleanup" state=directory owner=sourceballs group=svn-community mode=0755
|
|
|
|
- name: create svn-packages/source-cleanup directory
|
|
|
|
file: path="/srv/repos/svn-packages/source-cleanup" state=directory owner=sourceballs group=svn-packages mode=0755
|
|
|
|
|
|
|
|
- name: create svn-community/svn directory
|
|
|
|
file: path="/srv/repos/svn-community/svn" state=directory owner=svn-community group=svn-community mode=0755
|
|
|
|
- name: add acl default:user::rwx to /srv/repos/svn-community/svn
|
|
|
|
acl: name=/srv/repos/svn-community/svn entry="default:user::rwx" state=present
|
|
|
|
- name: add acl default:group::r-x to /srv/repos/svn-community/svn
|
|
|
|
acl: name=/srv/repos/svn-community/svn entry="default:group::r-x" state=present
|
|
|
|
- name: add acl default:other::r-x to /srv/repos/svn-community/svn
|
|
|
|
acl: name=/srv/repos/svn-community/svn entry="default:other::r-x" state=present
|
|
|
|
|
|
|
|
- name: create svn-packages/svn directory
|
|
|
|
file: path="/srv/repos/svn-packages/svn" state=directory owner=svn-packages group=svn-packages mode=0755
|
|
|
|
- name: add acl default:user::rwx to /srv/repos/svn-packages/svn
|
|
|
|
acl: name=/srv/repos/svn-packages/svn entry="default:user::rwx" state=present
|
|
|
|
- name: add acl default:group::r-x to /srv/repos/svn-packages/svn
|
|
|
|
acl: name=/srv/repos/svn-packages/svn entry="default:group::r-x" state=present
|
|
|
|
- name: add acl default:other::r-x to /srv/repos/svn-packages/svn
|
|
|
|
acl: name=/srv/repos/svn-packages/svn entry="default:other::r-x" state=present
|
|
|
|
|
|
|
|
- name: create svn-community/tmp directory
|
|
|
|
file: path="/srv/repos/svn-community/tmp" state=directory owner=svn-community group=tu mode=1775
|
|
|
|
- name: add acl user:sourceballs:rwx to /srv/repos/svn-community/tmp
|
|
|
|
acl: name=/srv/repos/svn-community/tmp entry="user:sourceballs:rwx" state=present
|
|
|
|
|
|
|
|
- name: create svn-packages/tmp directory
|
|
|
|
file: path="/srv/repos/svn-packages/tmp" state=directory owner=svn-packages group=dev mode=1775
|
|
|
|
- name: add acl user:sourceballs:rwx to /srv/repos/svn-packages/tmp
|
|
|
|
acl: name=/srv/repos/svn-packages/tmp entry="user:sourceballs:rwx" state=present
|
|
|
|
|
|
|
|
- name: touch /srv/ftp/lastsync file
|
|
|
|
file: path="/srv/ftp/lastsync" state=touch owner=ftp group=ftp mode=0644
|
|
|
|
|
|
|
|
- name: touch /srv/ftp/lastupdate file
|
|
|
|
file: path="/srv/ftp/lastupdate" state=touch owner=ftp group=ftp mode=0644
|
|
|
|
- name: add acl group:tu:rw- to /srv/ftp/lastupdate
|
|
|
|
acl: name=/srv/ftp/lastupdate entry="group:tu:rw-" state=present
|
|
|
|
- name: add acl group:dev:rw- to /srv/ftp/lastupdate
|
|
|
|
acl: name=/srv/ftp/lastupdate entry="group:dev:rw-" state=present
|
2016-05-30 03:58:07 +02:00
|
|
|
|
2016-05-29 16:22:44 +02:00
|
|
|
- name: clone dbscripts git repo
|
2017-05-30 19:00:40 +02:00
|
|
|
git: >
|
|
|
|
dest=/srv/repos/{{ item }}/dbscripts
|
|
|
|
repo=https://git.archlinux.org/dbscripts.git
|
2017-05-30 19:04:09 +02:00
|
|
|
version={{ dbscripts_commit }} update={{ dbscripts_update }}
|
2019-01-29 20:20:35 +01:00
|
|
|
verify_commit=yes
|
2016-05-29 16:22:44 +02:00
|
|
|
with_items:
|
|
|
|
- svn-community
|
|
|
|
- svn-packages
|
|
|
|
|
|
|
|
- name: make /srv/svn
|
|
|
|
file: path=/srv/svn state=directory
|
|
|
|
|
|
|
|
- name: symlink /srv/svn/community to /srv/repos/svn-community/svn
|
|
|
|
file: path=/srv/svn/community src=/srv/repos/svn-community/svn state=link
|
|
|
|
|
|
|
|
- name: symlink /srv/svn/packages to /srv/repos/svn-packages/svn
|
|
|
|
file: path=/srv/svn/packages src=/srv/repos/svn-packages/svn state=link
|
|
|
|
|
|
|
|
- name: symlink /community to /srv/repos/svn-community/dbscripts
|
|
|
|
file: path=/community src=/srv/repos/svn-community/dbscripts state=link
|
|
|
|
|
|
|
|
- name: symlink /packages to /srv/repos/svn-packages/dbscripts
|
2016-06-14 09:50:28 +02:00
|
|
|
file: path=/packages src=/srv/repos/svn-packages/dbscripts state=link
|
2016-05-29 16:22:44 +02:00
|
|
|
|
2016-06-15 16:33:23 +02:00
|
|
|
- name: put rsyncd.conf into tmpfiles
|
2016-09-22 09:24:07 +02:00
|
|
|
copy: src=rsyncd-tmpfiles.d dest=/etc/tmpfiles.d/rsyncd.conf owner=root group=root mode=0644
|
2016-06-15 16:33:23 +02:00
|
|
|
register: rsyncdtmpfiles
|
|
|
|
|
|
|
|
- name: use tmpfiles.d/rsyncd.conf
|
|
|
|
command: systemd-tmpfiles --create
|
|
|
|
when: rsyncdtmpfiles.changed
|
|
|
|
|
2016-06-01 12:21:15 +02:00
|
|
|
- name: create rsyncd-conf-genscripts
|
2016-09-22 09:24:07 +02:00
|
|
|
file: path=/etc/rsyncd-conf-genscripts state=directory owner=root group=root mode=0700
|
2016-06-01 12:21:15 +02:00
|
|
|
|
|
|
|
- name: install rsync.conf.proto
|
2017-01-01 22:15:34 +01:00
|
|
|
template: src=rsyncd.conf.proto.j2 dest=/etc/rsyncd-conf-genscripts/rsyncd.conf.proto owner=root group=root mode=0644
|
2016-06-01 12:21:15 +02:00
|
|
|
|
|
|
|
- name: configure gen_rsyncd.conf.pl
|
2016-09-22 09:24:07 +02:00
|
|
|
template: src=gen_rsyncd.conf.pl dest=/etc/rsyncd-conf-genscripts/gen_rsyncd.conf.pl owner=root group=root mode=0700
|
2016-12-30 01:15:27 +01:00
|
|
|
no_log: true
|
2016-06-01 12:21:15 +02:00
|
|
|
|
|
|
|
- name: generate mirror config
|
|
|
|
command: /etc/rsyncd-conf-genscripts/gen_rsyncd.conf.pl
|
|
|
|
|
2016-06-14 10:15:38 +02:00
|
|
|
- name: install svnlog
|
2016-09-22 09:24:07 +02:00
|
|
|
copy: src=svnlog dest=/usr/local/bin/svnlog owner=root group=root mode=0755
|
2016-06-14 10:15:38 +02:00
|
|
|
|
2016-06-19 20:08:37 +02:00
|
|
|
- name: add arch-svntogit user
|
|
|
|
user: name=svntogit shell=/sbin/nologin home=/srv/svntogit generate_ssh_key=yes ssh_key_bits=4096
|
|
|
|
|
|
|
|
- name: configure svntogit git user name
|
|
|
|
command: git config --global user.name = 'svntogit'
|
|
|
|
become: yes
|
|
|
|
become_user: svntogit
|
|
|
|
|
|
|
|
- name: configure svntogit git user email
|
|
|
|
command: git config --global user.name = 'svntogit@repos.archlinux.org'
|
|
|
|
become: yes
|
|
|
|
become_user: svntogit
|
|
|
|
|
|
|
|
- name: template arch-svntogit
|
2016-09-22 09:24:07 +02:00
|
|
|
copy: src=update-repos.sh dest=/srv/svntogit/update-repos.sh owner=root group=root mode=0755
|
2016-06-19 20:08:37 +02:00
|
|
|
|
|
|
|
- name: create svntogit repos subdir
|
|
|
|
file: path="/srv/svntogit/repos" state=directory owner=svntogit group=svntogit mode=0775
|
|
|
|
|
|
|
|
- name: clone git-svn repos
|
|
|
|
command: git svn clone file:///srv/repos/svn-{{ item }}/svn /srv/svntogit/repos/{{ item }} creates=/srv/svntogit/repos/{{ item }}
|
|
|
|
with_items:
|
|
|
|
- community
|
|
|
|
- packages
|
|
|
|
become: yes
|
|
|
|
become_user: svntogit
|
|
|
|
|
|
|
|
- name: add svntogit public remotes
|
|
|
|
command: git remote add public ssh://git.archlinux.org/srv/git/svntogit/{{ item }}.git chdir=/srv/svntogit/repos/{{ item }}
|
|
|
|
with_items:
|
|
|
|
- community
|
|
|
|
- packages
|
|
|
|
become: yes
|
|
|
|
become_user: svntogit
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
# The following command also serves as a way to get the data the first time the repo is set up
|
|
|
|
- name: configure svntogit pull upstream branch
|
|
|
|
command: git pull public master chdir=/srv/svntogit/repos/{{ item }}
|
|
|
|
with_items:
|
|
|
|
- community
|
|
|
|
- packages
|
|
|
|
become: yes
|
|
|
|
become_user: svntogit
|
|
|
|
|
|
|
|
- name: configure svntogit push upstream branch
|
|
|
|
command: git push -u public master chdir=/srv/svntogit/repos/{{ item }}
|
|
|
|
with_items:
|
|
|
|
- community
|
|
|
|
- packages
|
|
|
|
become: yes
|
|
|
|
become_user: svntogit
|
|
|
|
|
|
|
|
- name: fix svntogit home permissions
|
|
|
|
file: path="/srv/svntogit" state=directory owner=svntogit group=svntogit mode=0775
|
|
|
|
|
2016-09-20 19:59:39 +02:00
|
|
|
- name: install repo helpers
|
2016-09-22 09:24:07 +02:00
|
|
|
copy: src={{ item }} dest=/usr/local/bin/{{ item }} owner=root group=root mode=0755
|
2016-09-20 19:59:39 +02:00
|
|
|
with_items:
|
|
|
|
- lsrepo
|
|
|
|
- checklib32
|
|
|
|
|
2016-06-15 15:29:24 +02:00
|
|
|
- name: start and enable rsync
|
2016-06-01 12:21:15 +02:00
|
|
|
service: name=rsyncd.socket enabled=yes state=started
|
|
|
|
|
2018-03-05 22:46:24 +01:00
|
|
|
- name: open firewall holes for rsync
|
2018-08-14 05:34:38 +02:00
|
|
|
firewalld: service=rsyncd permanent=true state=enabled immediate=yes
|
2018-03-21 12:38:01 +01:00
|
|
|
when: configure_firewall
|
2018-08-17 06:56:37 +02:00
|
|
|
tags:
|
|
|
|
- firewall
|
2018-03-05 22:46:24 +01:00
|
|
|
|
2016-06-15 15:29:24 +02:00
|
|
|
- name: configure svnserve
|
|
|
|
copy: dest=/etc/conf.d/svnserve content="SVNSERVE_ARGS=-R -r /srv/svn\n"
|
|
|
|
|
|
|
|
- name: start and enable svnserve
|
|
|
|
service: name=svnserve enabled=yes state=started
|
|
|
|
|
2018-03-05 22:46:24 +01:00
|
|
|
- name: open firewall holes for svnserve
|
2018-08-14 05:34:38 +02:00
|
|
|
firewalld: port=3690/tcp permanent=true state=enabled immediate=yes
|
2018-03-21 12:38:01 +01:00
|
|
|
when: configure_firewall
|
2018-08-17 06:56:37 +02:00
|
|
|
tags:
|
|
|
|
- firewall
|
2018-03-05 22:46:24 +01:00
|
|
|
|
2016-05-29 16:22:44 +02:00
|
|
|
- name: install systemd timers
|
2016-09-22 09:24:07 +02:00
|
|
|
copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644
|
2016-05-29 16:22:44 +02:00
|
|
|
with_items:
|
|
|
|
- cleanup.timer
|
|
|
|
- cleanup.service
|
|
|
|
- sourceballs.timer
|
|
|
|
- sourceballs.service
|
|
|
|
- lastsync.timer
|
|
|
|
- lastsync.service
|
2016-06-01 12:21:15 +02:00
|
|
|
- gen_rsyncd.timer
|
|
|
|
- gen_rsyncd.service
|
2016-06-19 20:08:37 +02:00
|
|
|
- arch-svntogit.timer
|
|
|
|
- arch-svntogit.service
|
|
|
|
notify:
|
|
|
|
- daemon reload
|
2016-05-29 16:22:44 +02:00
|
|
|
|
2016-05-30 03:58:07 +02:00
|
|
|
- name: activate systemd timers
|
2016-05-29 16:22:44 +02:00
|
|
|
service: name={{ item }} enabled=yes state=started
|
|
|
|
with_items:
|
|
|
|
- cleanup.timer
|
|
|
|
- sourceballs.timer
|
|
|
|
- lastsync.timer
|
2016-06-01 12:21:15 +02:00
|
|
|
- gen_rsyncd.timer
|
2016-06-19 20:08:37 +02:00
|
|
|
- arch-svntogit.timer
|