Files @ 80299693b896
Branch filter:

Location: majic-ansible-roles/roles/wsgi_website/molecule/default/prepare.yml

branko
MAR-150: Use fixtures for X.509 artefacts in the wsgi_website role:

- Removed the statically generated artefacts.
- Generate X.509 artefacts for tests using Gimmecert.
- Updated paths to point to generated artefacts.
- Introduced cleanup playbook for removing generated artefacts.
---

- name: Set-up fixtures
  hosts: localhost
  connection: local
  gather_facts: false
  tasks:

    - name: Initialise CA hierarchy
      command: "gimmecert init"
      args:
        creates: ".gimmecert/ca/level1.cert.pem"
        chdir: "tests/data/"

    - name: Generate server private keys and certificates
      command:
      args:
        chdir: "tests/data/"
        creates: ".gimmecert/server/{{ item.name }}.cert.pem"
        argv:
          - "gimmecert"
          - "server"
          - "{{ item.name }}"
          - "{{ item.fqdn }}"
      with_items:
        - name: parameters-mandatory_https
          fqdn: parameters-mandatory
        - name: parameters-optional.local_https
          fqdn: parameters-optional.local
        - name: parameters-paste-req_https
          fqdn: parameters-paste-req
        - name: wsgi-website_https
          fqdn: wsgi-website

    - name: Set-up link to generated X.509 material
      file:
        src: ".gimmecert"
        dest: "tests/data/x509"
        state: link

- name: Prepare
  hosts: all
  gather_facts: false
  tasks:
    - name: Install python for Ansible
      raw: test -e /usr/bin/python3 || (apt -y update && apt install -y python3-minimal)
      become: true
      changed_when: false

- hosts: wsgi-website
  become: true
  tasks:

    - name: Update all caches to avoid errors due to missing remote archives
      apt:
        update_cache: true
      changed_when: false

    - name: Set-up /etc/hosts entries
      lineinfile:
        dest: /etc/hosts
        line: "{{ ansible_eth0.ipv4.address }} parameters-mandatory parameters-optional.local parameters-paste-req wsgi-website"

    - name: Install curl for testing redirects and webpage content
      apt:
        name: curl
        state: present

    - name: Install swaks for testing mail forwarding
      apt:
        name: swaks
        state: present

    - name: Install net-tools for testing sockets
      apt:
        name: net-tools
        state: present

    - name: Install Postfix for testing mail forwarding (Exim4 not covered)
      apt:
        name: postfix
        state: present

    - name: Install procmail for consistency with mail_server and mail_forwarder roles
      apt:
        name: procmail
        state: present

    - name: Update Postfix configuration
      lineinfile:
        path: /etc/postfix/main.cf
        regexp: "^{{ item.key }}"
        line: "{{ item.value }}"
        state: present
      with_dict:
        myhostname: "myhostname = {{ inventory_hostname }}"
        mailbox_command: 'mailbox_command = procmail -a "$EXTENSION"'
      notify:
        - Restart Postfix

    - name: Direct all mails from the root account to vagrant (Stretch image does not do that by default)
      lineinfile:
        path: /etc/aliases
        regexp: "^root"
        line: "root: vagrant"
        state: present
      notify:
        - Generate aliases database

    - name: Set-up group for an additional user
      group:
        name: user
        state: present

    - name: Set-up additional user for testing mail delivery
      user:
        name: user
        group: user
        shell: /bin/bash

    - name: Remove the ss utility (see https://github.com/philpep/testinfra/pull/320)
      file:
        path: "/bin/ss"
        state: absent

  handlers:

    - name: Restart Postfix
      service:
        name: postfix
        state: restarted

    - name: Generate aliases database
      command: "/usr/bin/newaliases"