From 047eae459d8265d5760e647226bcf91ebfba1c8e Mon Sep 17 00:00:00 2001
From: Ian Wienand <iwienand@redhat.com>
Date: Fri, 21 Feb 2020 10:14:05 +1100
Subject: [PATCH] static: add releases.openstack.org site

This adds the site to publish from

 /afs/openstack.org/project/releases.openstack.org

Change-Id: Ia91deb9a51441ac9974137ed39fc5a185689a11c
Task: #37724
Story: #2006598
---
 playbooks/host_vars/static01.opendev.org.yaml |  2 +
 .../handlers/main.yaml                        |  3 ++
 .../files/50-releases.openstack.org.conf      | 41 +++++++++++++++++++
 playbooks/roles/static/tasks/main.yaml        | 16 ++++++++
 testinfra/test_static.py                      | 10 ++++-
 5 files changed, 70 insertions(+), 2 deletions(-)
 create mode 100755 playbooks/roles/static/files/50-releases.openstack.org.conf

diff --git a/playbooks/host_vars/static01.opendev.org.yaml b/playbooks/host_vars/static01.opendev.org.yaml
index 0dfb5392d6..358ee4e39b 100644
--- a/playbooks/host_vars/static01.opendev.org.yaml
+++ b/playbooks/host_vars/static01.opendev.org.yaml
@@ -11,6 +11,8 @@ letsencrypt_certs:
     - security.openstack.org
   static01-specs-openstack-org:
     - specs.openstack.org
+  static01-releases-openstack-org:
+    - releases.openstack.org
   static01-tarballs-opendev-org:
     - tarballs.opendev.org
   static01-tarballs-openstack-org:
diff --git a/playbooks/roles/letsencrypt-create-certs/handlers/main.yaml b/playbooks/roles/letsencrypt-create-certs/handlers/main.yaml
index 758b196aa1..32c717b2bc 100644
--- a/playbooks/roles/letsencrypt-create-certs/handlers/main.yaml
+++ b/playbooks/roles/letsencrypt-create-certs/handlers/main.yaml
@@ -50,6 +50,9 @@
 - name: letsencrypt updated static01-security-openstack-org
   include_tasks: roles/letsencrypt-create-certs/handlers/restart_apache.yaml
 
+- name: letsencrypt updated static01-releases-openstack-org
+  include_tasks: roles/letsencrypt-create-certs/handlers/restart_apache.yaml
+
 - name: letsencrypt updated static01-tarballs-opendev-org
   include_tasks: roles/letsencrypt-create-certs/handlers/restart_apache.yaml
 
diff --git a/playbooks/roles/static/files/50-releases.openstack.org.conf b/playbooks/roles/static/files/50-releases.openstack.org.conf
new file mode 100755
index 0000000000..d55221abc0
--- /dev/null
+++ b/playbooks/roles/static/files/50-releases.openstack.org.conf
@@ -0,0 +1,41 @@
+Define AFS_ROOT /afs/openstack.org/project/releases.openstack.org
+
+<VirtualHost *:80>
+  ServerName releases.openstack.org
+  RewriteEngine On
+  RewriteRule ^/(.*) https://releases.openstack.org/$1 [last,redirect=permanent]
+  LogLevel warn
+  ErrorLog /var/log/apache2/releases.openstack.org_error.log
+  CustomLog /var/log/apache2/releases.openstack.org_access.log combined
+  ServerSignature Off
+</VirtualHost>
+
+<IfModule mod_ssl.c>
+<VirtualHost *:443>
+
+  ServerName releases.openstack.org
+
+  DocumentRoot ${AFS_ROOT}
+
+  SSLCertificateFile      /etc/letsencrypt-certs/releases.openstack.org/releases.openstack.org.cer
+  SSLCertificateKeyFile   /etc/letsencrypt-certs/releases.openstack.org/releases.openstack.org.key
+  SSLCertificateChainFile /etc/letsencrypt-certs/releases.openstack.org/ca.cer
+  SSLProtocol All -SSLv2 -SSLv3
+  # Note: this list should ensure ciphers that provide forward secrecy
+  SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!AES256:!aNULL:!eNULL:!MD5:!DSS:!PSK:!SRP
+  SSLHonorCipherOrder on
+
+  <Directory ${AFS_ROOT}>
+    Options Indexes FollowSymLinks MultiViews
+    AllowOverrideList Redirect RedirectMatch
+    Satisfy Any
+    Require all granted
+  </Directory>
+
+  LogLevel warn
+  ErrorLog /var/log/apache2/releases.openstack.org_error.log
+  CustomLog /var/log/apache2/releases.openstack.org_access.log combined
+  ServerSignature Off
+
+</VirtualHost>
+</IfModule>
diff --git a/playbooks/roles/static/tasks/main.yaml b/playbooks/roles/static/tasks/main.yaml
index 7da1063217..ccac282f98 100644
--- a/playbooks/roles/static/tasks/main.yaml
+++ b/playbooks/roles/static/tasks/main.yaml
@@ -167,3 +167,19 @@
     creates: /etc/apache2/sites-enabled/50-service-types.openstack.org
   notify:
     - Reload apache2
+
+# releases.openstack.org
+- name: Install releases.openstack.org
+  copy:
+    src: 50-releases.openstack.org.conf
+    dest: /etc/apache2/sites-available/
+    owner: root
+    group: root
+    mode: 0644
+
+- name: Enable releases.openstack.org
+  command: a2ensite 50-releases.openstack.org
+  args:
+    creates: /etc/apache2/sites-enabled/50-releases.openstack.org
+  notify:
+    - Reload apache2
diff --git a/testinfra/test_static.py b/testinfra/test_static.py
index d60c9432a6..243206c491 100644
--- a/testinfra/test_static.py
+++ b/testinfra/test_static.py
@@ -54,14 +54,20 @@ def test_tarballs_opendev_org(host):
     # An old file that should be present
     assert 'nova-12.0.0.tar.gz' in cmd.stdout
 
-def test_specs_opendev_org(host):
+def test_specs_openstack_org(host):
     cmd = host.run('curl --insecure '
                    '--resolve specs.openstack.org:443:127.0.0.1 '
                    'https://specs.openstack.org/specs.opml')
     assert 'OpenStack Specs Feeds' in cmd.stdout
 
-def test_service_types_opendev_org(host):
+def test_service_types_openstack_org(host):
     cmd = host.run('curl --insecure '
                    '--resolve service-types.openstack.org:443:127.0.0.1 '
                    'https://service-types.openstack.org')
     assert 'OpenStack Service Types Authority Data' in cmd.stdout
+
+def test_releases_openstack_org(host):
+    cmd = host.run('curl --insecure '
+                   '--resolve releases.openstack.org:443:127.0.0.1 '
+                   'https://releases.openstack.org')
+    assert 'OpenStack Releases: OpenStack Releases' in cmd.stdout