diff --git a/roles/wsgi_website/molecule/default/converge.yml b/roles/wsgi_website/molecule/default/converge.yml new file mode 100644 index 0000000000000000000000000000000000000000..6d6f16968493609523642b0d85b098b13bd1a6a0 --- /dev/null +++ b/roles/wsgi_website/molecule/default/converge.yml @@ -0,0 +1,220 @@ +--- + +- hosts: wsgi-website + become: true + vars: + # common + ca_certificates: + testca: "{{ lookup('file', 'tests/data/x509/ca/level1.cert.pem') }}" + + # web_server + default_https_tls_certificate: "{{ lookup('file', 'tests/data/x509/server/wsgi-website_https.cert.pem') }}" + default_https_tls_key: "{{ lookup('file', 'tests/data/x509/server/wsgi-website_https.key.pem') }}" + + roles: + + - role: wsgi_website + fqdn: parameters-mandatory + https_tls_certificate: "{{ lookup('file', 'tests/data/x509/server/parameters-mandatory_https.cert.pem') }}" + https_tls_key: "{{ lookup('file', 'tests/data/x509/server/parameters-mandatory_https.key.pem') }}" + wsgi_application: testapp:application + + - role: wsgi_website + fqdn: parameters-optional.local + https_tls_certificate: "{{ lookup('file', 'tests/data/x509/server/parameters-optional.local_https.cert.pem') }}" + https_tls_key: "{{ lookup('file', 'tests/data/x509/server/parameters-optional.local_https.key.pem') }}" + additional_nginx_config: + - comment: Custom missing page. + value: error_page 404 /my/own/error/page; + admin_uid: 5000 + environment_indicator: + background_colour: "#ff0000" + text_colour: "#00ff00" + text: "parameters-optional" + environment_variables: + MY_ENV_VAR: "My environment variable" + packages: + - atftp + - global + http_header_overrides: + Accept-Encoding: "" + rewrites: + - '^/rewrite1/(.*) /rewritten1/ last' + - '^/rewrite2/(.*) /rewritten2/$1 last' + static_locations: + - /static/ + - /media/ + uid: 5001 + use_paste: false + virtualenv_packages: + # Main packages. + - dnspython==2.6.1 + - prompt-toolkit==3.0.43 + - ptpython==3.0.26 + # Dependencies. + - appdirs==1.4.4 + - jedi==0.19.1 + - parso==0.8.3 + - pygments==2.17.2 + - wcwidth==0.2.13 + website_mail_recipients: user + wsgi_application: testapp:application + wsgi_requirements: + - gunicorn==21.1.0 + - packaging==23.2 + wsgi_requirements_in: + - gunicorn + + - role: wsgi_website + fqdn: parameters-paste-req + use_paste: true + virtualenv_packages: + # Main packages. + - Flask==3.0.2 + - Paste==3.7.1 + - PasteDeploy==3.1.0 + # Dependencies. + - Jinja2==3.1.3 + - MarkupSafe==2.1.5 + - Werkzeug==3.0.1 + - blinker==1.7.0 + - click==8.1.7 + - importlib-metadata==7.0.1 + - itsdangerous==2.1.2 + - six==1.16.0 + - zipp==3.17.0 + wsgi_application: config.ini + wsgi_requirements: + - gunicorn==21.1.0 + - packaging==23.2 + https_tls_certificate: "{{ lookup('file', 'tests/data/x509/server/parameters-paste-req_https.cert.pem') }}" + https_tls_key: "{{ lookup('file', 'tests/data/x509/server/parameters-paste-req_https.key.pem') }}" + +- hosts: wsgi-website + become: true + tasks: + # parameters-mandatory application + - name: Set-up directories where application files are hosted at + file: + path: "/var/www/parameters-mandatory/{{ item }}" + state: directory + owner: admin-parameters-mandatory + group: web-parameters-mandatory + mode: 02750 + with_items: + - htdocs/static + - htdocs/media + - code + - name: Deploy WSGI application + copy: + src: "tests/data/python/wsgi/testapp.py" + dest: "/var/www/parameters-mandatory/code/testapp.py" + owner: admin-parameters-mandatory + group: web-parameters-mandatory + mode: 0640 + notify: + - Restart parameters-mandatory + - name: Deploy a static file + copy: + src: "tests/data/static_file.txt" + dest: "/var/www/parameters-mandatory/htdocs/static/static_file.txt" + owner: admin-parameters-mandatory + group: web-parameters-mandatory + mode: 0640 + - name: Deploy a media file + copy: + src: "tests/data/media_file.txt" + dest: "/var/www/parameters-mandatory/htdocs/media/media_file.txt" + owner: admin-parameters-mandatory + group: web-parameters-mandatory + mode: 0640 + + # parameters-optional application + - name: Set-up directories where application files are hosted at + file: + path: "/var/www/parameters-optional.local/{{ item }}" + state: directory + owner: admin-parameters-optional_local + group: web-parameters-optional_local + mode: 02750 + with_items: + - htdocs/static + - htdocs/media + - code + - name: Deploy WSGI application + copy: + src: "tests/data/python/wsgi/testapp.py" + dest: "/var/www/parameters-optional.local/code/testapp.py" + owner: admin-parameters-optional_local + group: web-parameters-optional_local + mode: 0640 + notify: + - Restart parameters-optional.local + - name: Deploy a static file + copy: + src: "tests/data/static_file.txt" + dest: "/var/www/parameters-optional.local/htdocs/static/static_file.txt" + owner: admin-parameters-optional_local + group: web-parameters-optional_local + mode: 0640 + - name: Deploy a media file + copy: + src: "tests/data/media_file.txt" + dest: "/var/www/parameters-optional.local/htdocs/media/media_file.txt" + owner: admin-parameters-optional_local + group: web-parameters-optional_local + mode: 0640 + + # parameters-paste-req application + - name: Set-up directories where application files are hosted at + file: + path: "/var/www/parameters-paste-req/{{ item }}" + state: directory + owner: admin-parameters-paste-req + group: web-parameters-paste-req + mode: 02750 + with_items: + - htdocs/static + - htdocs/media + - code + - name: Deploy WSGI application + copy: + src: "tests/data/python/paste/{{ item }}" + dest: "/var/www/parameters-paste-req/code/{{ item }}" + owner: admin-parameters-paste-req + group: web-parameters-paste-req + mode: 0640 + with_items: + - config.ini + - testapp.py + - wsgi.py + notify: + - Restart parameters-paste-req + - name: Deploy a static file + copy: + src: "tests/data/static_file.txt" + dest: "/var/www/parameters-paste-req/htdocs/static/static_file.txt" + owner: admin-parameters-paste-req + group: web-parameters-paste-req + mode: 0640 + - name: Deploy a media file + copy: + src: "tests/data/media_file.txt" + dest: "/var/www/parameters-paste-req/htdocs/media/media_file.txt" + owner: admin-parameters-paste-req + group: web-parameters-paste-req + mode: 0640 + + handlers: + - name: Restart parameters-mandatory + service: + name: parameters-mandatory + state: restarted + - name: Restart parameters-optional.local + service: + name: parameters-optional.local + state: restarted + - name: Restart parameters-paste-req + service: + name: parameters-paste-req + state: restarted