From 6550392ee78ce71bbe3338b6aae04573187473d6 Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: Sun, 9 Oct 2016 00:38:52 +0000 Subject: [PATCH] Deploy mirrorlist as docker container on staging Signed-off-by: Patrick Uiterwijk --- playbooks/groups/proxies.yml | 2 ++ roles/haproxy/templates/haproxy.cfg | 4 +++ .../files/mirrorlist1.service | 11 ++++++ .../files/mirrorlist2.service | 11 ++++++ .../mirrorlist_proxy/tasks/main.yml | 34 +++++++++++++++++++ 5 files changed, 62 insertions(+) create mode 100644 roles/mirrormanager/mirrorlist_proxy/files/mirrorlist1.service create mode 100644 roles/mirrormanager/mirrorlist_proxy/files/mirrorlist2.service create mode 100644 roles/mirrormanager/mirrorlist_proxy/tasks/main.yml diff --git a/playbooks/groups/proxies.yml b/playbooks/groups/proxies.yml index dd67c6a8c5..c287b0475d 100644 --- a/playbooks/groups/proxies.yml +++ b/playbooks/groups/proxies.yml @@ -19,6 +19,8 @@ - collectd/base - sudo - rsyncd + - { role: mirrormanager/mirrorlist_proxy, + when: env == "staging"} - { role: openvpn/client, when: env != "staging" } - apache diff --git a/roles/haproxy/templates/haproxy.cfg b/roles/haproxy/templates/haproxy.cfg index 71c2b5ba03..96b89d9aab 100644 --- a/roles/haproxy/templates/haproxy.cfg +++ b/roles/haproxy/templates/haproxy.cfg @@ -44,6 +44,10 @@ listen fp-wiki 0.0.0.0:10001 listen mirror-lists 0.0.0.0:10002 balance hdr(appserver) timeout connect 30s +{% if env == "staging" %} + server mirrorlist-local1 localhost:18081 check inter 5s rise 2 fall 3 weight 100 + server mirrorlist-local2 localhost:18082 check inter 5s rise 2 fall 3 weight 100 +{% endif %} server mirrorlist-phx2 mirrorlist-phx2:80 check inter 5s rise 2 fall 3 {% if env == "production" %} server mirrorlist-dedicatedsolutions mirrorlist-dedicatedsolutions:80 check inter 5s rise 2 fall 3 diff --git a/roles/mirrormanager/mirrorlist_proxy/files/mirrorlist1.service b/roles/mirrormanager/mirrorlist_proxy/files/mirrorlist1.service new file mode 100644 index 0000000000..fcb8d288c0 --- /dev/null +++ b/roles/mirrormanager/mirrorlist_proxy/files/mirrorlist1.service @@ -0,0 +1,11 @@ +[Unit] +Description=Mirrorlist Container 1 +After=docker.service +Requires=docker.service + +[Service] +TimeoutStartSec=0 +ExecStart=/usr/bin/docker run --rm --name %n -v /srv/mirrorlist/data:/var/lib/mirrormanager:z -p 18081:80 puiterwijk/infra-test:mirrorlist + +[Install] +WantedBy=multi-user.target diff --git a/roles/mirrormanager/mirrorlist_proxy/files/mirrorlist2.service b/roles/mirrormanager/mirrorlist_proxy/files/mirrorlist2.service new file mode 100644 index 0000000000..a24e90087b --- /dev/null +++ b/roles/mirrormanager/mirrorlist_proxy/files/mirrorlist2.service @@ -0,0 +1,11 @@ +[Unit] +Description=Mirrorlist Container 2 +After=docker.service +Requires=docker.service + +[Service] +TimeoutStartSec=0 +ExecStart=/usr/bin/docker run --rm --name %n -v /srv/mirrorlist/data:/var/lib/mirrormanager:z -p 18082:80 puiterwijk/infra-test:mirrorlist + +[Install] +WantedBy=multi-user.target diff --git a/roles/mirrormanager/mirrorlist_proxy/tasks/main.yml b/roles/mirrormanager/mirrorlist_proxy/tasks/main.yml new file mode 100644 index 0000000000..8febbeb8bb --- /dev/null +++ b/roles/mirrormanager/mirrorlist_proxy/tasks/main.yml @@ -0,0 +1,34 @@ +--- +# tasklist for setting up the mirrorlist app as a container on proxies +- name: Install docker + package: name=docker state=present + tags: + - mirrorlist_proxy + +- name: Run docker + service: name=docker state=started enabled=yes + tags: + - mirrorlist_proxy + +- name: Pull mirrorlist image + docker_image: + name: puiterwijk/infra-test:mirrorlist + tags: + - mirrorlist_proxy + +# We deploy two service files. Both listen on a different port, so that we can switch +# them out as part of the pkl deployment without having any local downtime. +- name: Deploy service files + copy: src={{item}}.service dest=/etc/systemd/system/{{item}}.service + with_items: + - mirrorlist1 + - mirrorlist2 + tags: + - mirrorlist_proxy + +# We enable mirrorlist1 so we have one that always starts on boot. The pkl deployment script +# will make sure that at least one is running and the other is killed. +- name: Enable mirrorlist1 + server: name=mirrorlist1 enabled=yes + tags: + - mirrorlist_proxy