
As of pip 22.0, its HTML parser no longer accepts any page which doesn't start with the string "<!DOCTYPE html>" and, unfortunately, Apache's mod_autoindex declares a very specific HTML 3.2 doctype instead, causing pip to break any time our wheel cache is added to its indices. The main index we generate has been updated with https://review.opendev.org/826969 but we need this change to address Apache's dynamically generated file lists for that site. Configure Apache to supply a custom header file for file indices within the /wheel/ subtree of our mirror vhosts, and alias it from outside the docroot in order to reduce clutter of the top-level directory index. Also instruct mod_autoindex to omit its own document preamble which would otherwise include the original doctype declaration. Note that this omits the header title and H1 level headings from the resulting pages, but as these are only meant for machine parsing anyway and not humans, it's a compromise to keep the solution as simple and straightforward as possible. Change-Id: Id71174954b13b80483256d37f773b781f4956c21
165 lines
3.3 KiB
YAML
165 lines
3.3 KiB
YAML
- name: Check AFS mounted
|
|
stat:
|
|
path: "/afs/openstack.org/mirror"
|
|
register: afs_mirror
|
|
- name: Sanity check AFS
|
|
assert:
|
|
that:
|
|
- afs_mirror.stat.exists
|
|
|
|
- name: Install apache2
|
|
apt:
|
|
name:
|
|
- apache2
|
|
- apache2-utils
|
|
state: present
|
|
|
|
- name: Rewrite module
|
|
apache2_module:
|
|
state: present
|
|
name: rewrite
|
|
|
|
- name: Substitute module
|
|
apache2_module:
|
|
state: present
|
|
name: substitute
|
|
|
|
- name: Cache module
|
|
apache2_module:
|
|
state: present
|
|
name: cache
|
|
|
|
- name: Cache disk module
|
|
apache2_module:
|
|
state: present
|
|
name: cache_disk
|
|
|
|
- name: Proxy module
|
|
apache2_module:
|
|
state: present
|
|
name: proxy
|
|
|
|
- name: HTTP Proxy module
|
|
apache2_module:
|
|
state: present
|
|
name: proxy_http
|
|
|
|
- name: Apache macro module
|
|
apache2_module:
|
|
state: present
|
|
name: macro
|
|
|
|
- name: Apache 2 ssl module
|
|
apache2_module:
|
|
state: present
|
|
name: ssl
|
|
|
|
- name: Apache webroot
|
|
file:
|
|
path: '{{ www_base }}'
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
|
|
- name: Apache www root
|
|
file:
|
|
path: '{{ www_root }}'
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
|
|
- name: AFS content symlinks
|
|
file:
|
|
src: '{{ mirror_root }}/{{ item }}'
|
|
dest: '{{ www_root }}/{{ item }}'
|
|
state: link
|
|
owner: root
|
|
group: root
|
|
follow: false
|
|
with_items:
|
|
- apt-puppetlabs
|
|
- centos
|
|
- centos-stream
|
|
- ceph-deb-nautilus
|
|
- ceph-deb-octopus
|
|
- deb-docker
|
|
- debian
|
|
- debian-security
|
|
- debian-openstack
|
|
- epel
|
|
- fedora
|
|
- logs
|
|
- openeuler
|
|
- opensuse
|
|
- ubuntu
|
|
- ubuntu-ports
|
|
- ubuntu-cloud-archive
|
|
- wheel
|
|
- yum-puppetlabs
|
|
|
|
- name: Install robots.txt
|
|
copy:
|
|
src: robots.txt
|
|
dest: '{{ www_root }}'
|
|
owner: root
|
|
group: root
|
|
mode: 0444
|
|
|
|
- name: Install wheel_header.html
|
|
copy:
|
|
src: wheel_header.html
|
|
dest: '{{ www_base }}'
|
|
owner: root
|
|
group: root
|
|
mode: 0444
|
|
|
|
- name: Apache proxy cache
|
|
file:
|
|
path: /var/cache/apache2/proxy
|
|
owner: www-data
|
|
group: www-data
|
|
mode: 0755
|
|
state: directory
|
|
|
|
- name: Set mirror servername and alias
|
|
set_fact:
|
|
apache_server_name: '{{ inventory_hostname }}'
|
|
# Strip the numeric host value (like mirror01.region.provider.o.o
|
|
# becomes mirror.region...) for the serveralias
|
|
apache_server_alias: '{{ inventory_hostname | regex_replace("^mirror\d\d\.", "mirror.") }}'
|
|
|
|
- name: Copy apache tuning
|
|
copy:
|
|
src: apache-connection-tuning
|
|
dest: /etc/apache2/conf-enabled/connection-tuning.conf
|
|
owner: root
|
|
group: root
|
|
mode: 0644
|
|
notify: restart apache2
|
|
|
|
- name: Create mirror virtual host
|
|
template:
|
|
src: mirror.vhost.j2
|
|
dest: /etc/apache2/sites-available/mirror.conf
|
|
|
|
- name: Make sure default site disabled
|
|
command: a2dissite 000-default.conf
|
|
args:
|
|
removes: /etc/apache2/sites-enabled/000-default.conf
|
|
|
|
- name: Enable mirror virtual host
|
|
command: a2ensite mirror
|
|
args:
|
|
creates: /etc/apache2/sites-enabled/mirror.conf
|
|
notify:
|
|
- restart apache2
|
|
|
|
# Clean apache cache once an hour, keep size down to 70GiB.
|
|
- name: Proxy cleanup cron job
|
|
cron:
|
|
name: Apache cache cleanup
|
|
state: present
|
|
job: /usr/bin/flock -n /var/run/htcacheclean.lock /usr/bin/htcacheclean -n -p /var/cache/apache2/proxy -t -l 60000M > /dev/null
|
|
minute: '0'
|
|
hour: '*'
|