diff --git a/roles/karaage3.1.17/tasks/apacheDebian.yml b/roles/apache2/tasks/apacheDebian.yml similarity index 100% rename from roles/karaage3.1.17/tasks/apacheDebian.yml rename to roles/apache2/tasks/apacheDebian.yml diff --git a/roles/karaage3.1.17/tasks/apacheRedHat.yml b/roles/apache2/tasks/apacheRedHat.yml similarity index 100% rename from roles/karaage3.1.17/tasks/apacheRedHat.yml rename to roles/apache2/tasks/apacheRedHat.yml diff --git a/roles/apache2/tasks/main.yml b/roles/apache2/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..0783dadda1e585aab27d19bf67b35ac7fbc6ed47 --- /dev/null +++ b/roles/apache2/tasks/main.yml @@ -0,0 +1,32 @@ +--- +- include: apacheDebian.yml + when: ansible_os_family == "Debian" +- include: apacheRedHat.yml + when: ansible_os_family == 'RedHat' + +- name: "Create apache key directory" + file: path={{ x509_key | dirname }} state=directory owner={{ apache_user }} mode=700 + sudo: true + +- name: "Create apache cert directory" + file: path={{ x509_cert | dirname }} state=directory owner={{ apache_user }} mode=755 + sudo: true + +- name: "Copying the apache key file" + template: src="files/{{ apache_key_file }}" dest="{{ x509_key }}" mode=0600 owner={{ apache_user }} group={{ apache_group }} + sudo: true + when: apache_key_file is defined + +- name: "Copying the apache cert file" + template: src="files/{{ apache_cert_file }}" dest="{{ x509_cert }}" mode=0644 owner={{ apache_user }} group={{ apache_group }} + sudo: true + when: apache_cert_file is defined + +- name: "Create log directory, start aoacge will have errors without it" + file: dest=/etc/apache2/logs state=directory + sudo: true + +- + name: "Change permissions for /var/www" + file: path=/var/www state=directory owner=root group={{ apache_user }} mode=0775 + sudo: true diff --git a/roles/karaage3.1.17/templates/default-ssl.j2 b/roles/apache2/templates/default-ssl.j2 similarity index 97% rename from roles/karaage3.1.17/templates/default-ssl.j2 rename to roles/apache2/templates/default-ssl.j2 index 4e5e7e95f0d987a36902e6a401433fc38e7d3017..bb54ff7fada4c956e51f50ce70677a4b00e5d070 100644 --- a/roles/karaage3.1.17/templates/default-ssl.j2 +++ b/roles/apache2/templates/default-ssl.j2 @@ -42,8 +42,8 @@ # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. - SSLCertificateFile /etc/ssl/certs/{{ apache_cert_file }} - SSLCertificateKeyFile /etc/ssl/private/{{ apache_key_file }} + SSLCertificateFile {{ x509_cert }} + SSLCertificateKeyFile {{ x509_key }} # Server Certificate Chain: # Point SSLCertificateChainFile at a file containing the @@ -51,7 +51,7 @@ # certificate chain for the server certificate. Alternatively # when the CA certificates are directly appended to the server # certificate for convinience. - SSLCertificateChainFile {{ x509_cert_chain }} + # SSLCertificateChainFile {{ x509_cert_chain }} # Certificate Authority (CA): # Set the CA certificate verification path where to find CA diff --git a/roles/karaage3.1.17/templates/default.j2 b/roles/apache2/templates/default.j2 similarity index 88% rename from roles/karaage3.1.17/templates/default.j2 rename to roles/apache2/templates/default.j2 index e79e43d03bac20f7d97939307f1b2dbafdbde24b..ddb95b6dffb640d445270ddc26c1dc86163178b2 100644 --- a/roles/karaage3.1.17/templates/default.j2 +++ b/roles/apache2/templates/default.j2 @@ -14,10 +14,10 @@ Order allow,deny allow from all </Directory> - <Directory /etc/karaage3> - Options FollowSymLinks - AllowOverride None - </Directory> +# <Directory /etc/karaage3> +# Options FollowSymLinks +# AllowOverride None +# </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> diff --git a/roles/apache2/vars/main.yml b/roles/apache2/vars/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..d207e0b1c80a8e8d67331273eade3fcfeef0af35 --- /dev/null +++ b/roles/apache2/vars/main.yml @@ -0,0 +1,6 @@ +--- + apache_user: "{% if ansible_os_family == 'RedHat' %}apache{% else %}www-data{% endif %}" + apache_group: "{% if ansible_os_family == 'RedHat' %}apache{% else %}www-data{% endif %}" + apache_config: "/etc/{% if ansible_os_family == 'RedHat' %}httpd{% else %}apache2{% endif %}" + x509_cert: "{{ apache_config }}/ssl/certs/server.cert.pem" + x509_key: "{{ apache_config }}/ssl/private/server.key.pem" diff --git a/roles/karaage3.1.17/tasks/karaage.yml b/roles/karaage3.1.17/tasks/karaage.yml index e30a8fcd7072aa8a9a55bcb100caa6d7ebf70b43..a3027fa598932a95508aa5056a571c0b5734f3fc 100644 --- a/roles/karaage3.1.17/tasks/karaage.yml +++ b/roles/karaage3.1.17/tasks/karaage.yml @@ -21,6 +21,7 @@ - libmysqlclient-dev - python-dev - python-matplotlib + - python-numpy when: ansible_os_family == "Debian" - @@ -53,11 +54,6 @@ git: repo="https://github.com/monash-merc/karaage.git" dest="/root/karaage3.1.7" force=yes sudo: true -- - name: "Create log directory, start aoacge will have errors without it" - file: dest=/etc/apache2/logs state=directory - sudo: true - - name: "Installing Karaage Dependencies" pip: name={{ item }} @@ -94,10 +90,11 @@ - /var/lib/karaage3 - /var/cache/karaage3 sudo: true -- - name: "Change permissions for /var/www" - file: path=/var/www state=directory owner=root group={{ apache_user }} mode=0775 - sudo: true + +- name: install karaage3-wsgi.conf + template: src=karaage3-wsgi.conf.j2 dest=/etc/apache2/conf-available/karaage3-wsgi.conf + sudo: true + - name: "enabling Karaage configuration" shell: a2enconf karaage3-wsgi @@ -118,11 +115,12 @@ - karaage3-celery sudo: true when: ansible_os_family == "Debian" + - - name: Downloading other packages RedHat + name: "Downloading other packages RedHat" git: repo={{ item.repo }} dest={{ item.dest }} with_items: - - { repo : 'https://github.com/numpy/numpy.git', dest : '/root/numpy' } +# - { repo : 'https://github.com/numpy/numpy.git', dest : '/root/numpy' } # - { repo : 'https://github.com/matplotlib/matplotlib.git', dest : '/root/matplotlib' } - { repo : 'https://github.com/Karaage-Cluster/karaage-software.git', dest : '/root/karaage-software' } - { repo : 'https://github.com/Karaage-Cluster/karaage-usage.git', dest : '/root/karaage-usage' } @@ -130,21 +128,23 @@ - { repo : 'https://github.com/Karaage-Cluster/karaage-cluster-tools.git', dest : '/root/karaage-cluster-tools' } sudo: true # when: ansible_os_family == "RedHat" + - + name: "Installing other packages RedHat" args: chdir: "/root/{{ item }}" creates: "/root/{{ item }}/build/bdist.linux-x86_64" - name: "Installing other packages RedHat" sudo: true shell: "env python setup.py install" -# when: ansible_os_family == "RedHat" with_items: - - numpy +# - numpy # - matplotlib - karaage-applications - karaage-software - karaage-usage - karaage-cluster-tools +# when: ansible_os_family == "RedHat" + - name: "Set Secret Key" lineinfile: dest=/etc/karaage3/settings.py regexp="SECRET_KEY = ''" line="SECRET_KEY = '{{ karaageSecretKey }}'" state=present @@ -155,15 +155,9 @@ shell: mysql -h {{ karaageDbHost }} -u {{ karaageDbName }} --password={{ karaagePassword }} -Bse 'use karaage; show tables;' | wc -l register: karaage_db_init -- - name: "Enable wsgi config" - file: src=/etc/apache2/mods-available/wsgi.conf path=/etc/apache2/mods-enabled/wsgi.conf state=link - sudo: true - -- - name: "Enable wsgi load" - file: src=/etc/apache2/mods-available/wsgi.load path=/etc/apache2/mods-enabled/wsgi.load state=link - sudo: true +- name: enable wsgi + shell: a2enmod wsgi + sudo: true - name: enable shibboleth shell: a2enmod shib2 @@ -202,15 +196,4 @@ sudo: true when: ansible_os_family == "RedHat" -- - name: "Enable shibboleth (ansible-galaxy install yaegashi.blockinfile)" - blockinfile: - dest: /etc/apache2/conf-available/karaage3-wsgi.conf - block: | - <Location /karaage> - AuthType Shibboleth - ShibRequireSession On - ShibUseHeaders On - require valid-user - </Location> diff --git a/roles/karaage3.1.17/tasks/main.yml b/roles/karaage3.1.17/tasks/main.yml index d6bd0a224a5958cb235904e882b3a7d37b36ddcb..d5b6fb5fc3adec6b4a4aca2265291b6597092590 100644 --- a/roles/karaage3.1.17/tasks/main.yml +++ b/roles/karaage3.1.17/tasks/main.yml @@ -1,33 +1,10 @@ --- - - name: "Copying the apache key file" - template: src="files/{{ apache_key_file }}" dest="/etc/ssl/private/{{ apache_key_file }}" mode=0600 owner=www-data group=www-data - sudo: true - when: apache_key_file is defined - - - name: "Copying the apache cert file" - template: src="files/{{ apache_cert_file }}" dest="/etc/ssl/certs/{{ apache_cert_file }}" mode=0644 owner=www-data group=www-data - sudo: true - when: apache_cert_file is defined - - - name: "Copying the apache cert chain file" - template: src="files/{{ apache_chain_file }}" dest="/etc/ssl/certs/{{ apache_chain_file }}" mode=0644 owner=www-data group=www-data - sudo: true - when: apache_chain_file is defined - name: "Copying the ldap ca cert file" - template: src="files/{{ ldap_TLSCARoot }}" dest="{{ ldapCaCertFile }}" mode=0644 + template: src="files/{{ ldap_TLSCARoot }}" dest="{{ apache_config }}/ssl/certs/ldap_ca.cert.pem" mode=0644 sudo: true when: apache_cert_file is defined -# - name: "Copying the apache cert file" -# template: src="files/{{ apache_cert_chain_file }}" dest="{{ x509_cert_chain }}" mode=0644 -# sudo: true -# when: apache_cert_file is defined - - include: prerequisitesDebian.yml when: ansible_os_family == "Debian" - - include: apacheDebian.yml - when: ansible_os_family == "Debian" - - include: apacheRedHat.yml - when: ansible_os_family == 'RedHat' - include: karaage.yml diff --git a/roles/karaage3.1.17/templates/settings.py.j2 b/roles/karaage3.1.17/templates/settings.py.j2 index 495d9a70294ea0dba8b9ec58e021a45f7bbbac53..14637992da7c61e809464378207431ca0910d26b 100644 --- a/roles/karaage3.1.17/templates/settings.py.j2 +++ b/roles/karaage3.1.17/templates/settings.py.j2 @@ -106,7 +106,7 @@ LDAP = { 'PASSWORD': '{{ ldapManagerPassword }}', 'REQUIRE_TLS': True, 'START_TLS': True, - 'TLS_CA': '{{ ldapCaCertFile }}', + 'TLS_CA': '{{ apache_config }}/ssl/certs/ldap_ca.cert.pem', } } diff --git a/roles/karaage3.1.17/templates/ssl.conf.j2 b/roles/karaage3.1.17/templates/ssl.conf.j2 deleted file mode 100644 index 1b2e1339b99987915ecf6957f993c24d20fa4691..0000000000000000000000000000000000000000 --- a/roles/karaage3.1.17/templates/ssl.conf.j2 +++ /dev/null @@ -1,221 +0,0 @@ -# -# This is the Apache server configuration file providing SSL support. -# It contains the configuration directives to instruct the server how to -# serve pages over an https connection. For detailing information about these -# directives see <URL:http://httpd.apache.org/docs/2.2/mod/mod_ssl.html> -# -# Do NOT simply read the instructions in here without understanding -# what they do. They're here only as hints or reminders. If you are unsure -# consult the online docs. You have been warned. -# - -LoadModule ssl_module modules/mod_ssl.so - -# -# When we also provide SSL we have to listen to the -# the HTTPS port in addition. -# -Listen 443 - -## -## SSL Global Context -## -## All SSL configuration in this context applies both to -## the main server and all SSL-enabled virtual hosts. -## - -# Pass Phrase Dialog: -# Configure the pass phrase gathering process. -# The filtering dialog program (`builtin' is a internal -# terminal dialog) has to provide the pass phrase on stdout. -SSLPassPhraseDialog builtin - -# Inter-Process Session Cache: -# Configure the SSL Session Cache: First the mechanism -# to use and second the expiring timeout (in seconds). -SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) -SSLSessionCacheTimeout 300 - -# Semaphore: -# Configure the path to the mutual exclusion semaphore the -# SSL engine uses internally for inter-process synchronization. -Mutex sysvsem default -# Pseudo Random Number Generator (PRNG): -# Configure one or more sources to seed the PRNG of the -# SSL library. The seed data should be of good random quality. -# WARNING! On some platforms /dev/random blocks if not enough entropy -# is available. This means you then cannot use the /dev/random device -# because it would lead to very long connection times (as long as -# it requires to make more entropy available). But usually those -# platforms additionally provide a /dev/urandom device which doesn't -# block. So, if available, use this one instead. Read the mod_ssl User -# Manual for more details. -SSLRandomSeed startup file:/dev/urandom 256 -SSLRandomSeed connect builtin -#SSLRandomSeed startup file:/dev/random 512 -#SSLRandomSeed connect file:/dev/random 512 -#SSLRandomSeed connect file:/dev/urandom 512 - -# -# Use "SSLCryptoDevice" to enable any supported hardware -# accelerators. Use "openssl engine -v" to list supported -# engine names. NOTE: If you enable an accelerator and the -# server does not start, consult the error logs and ensure -# your accelerator is functioning properly. -# -SSLCryptoDevice builtin -#SSLCryptoDevice ubsec - -## -## SSL Virtual Host Context -## - -### <VirtualHost {{ ansible_fqdn }}:443> -<VirtualHost {{ ansible_nodename }}.{{ ansible_domain }}:443> - -# General setup for the virtual host, inherited from global configuration -#DocumentRoot "/var/www/html" -ServerName {{ ansible_nodename }}.{{ ansible_domain }}:443 - -# Use separate log files for the SSL virtual host; note that LogLevel -# is not inherited from httpd.conf. -ErrorLog logs/ssl_error_log -TransferLog logs/ssl_access_log -LogLevel warn - -# SSL Engine Switch: -# Enable/Disable SSL for this virtual host. -SSLEngine on - -# SSL Protocol support: -# List the enable protocol levels with which clients will be able to -# connect. Disable SSLv2 access by default: -SSLProtocol all -SSLv2 -SSLv3 - -# SSL Cipher Suite: -# List the ciphers that the client is permitted to negotiate. -# See the mod_ssl documentation for a complete list. -SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA - -# Server Certificate: -# Point SSLCertificateFile at a PEM encoded certificate. If -# the certificate is encrypted, then you will be prompted for a -# pass phrase. Note that a kill -HUP will prompt again. A new -# certificate can be generated using the genkey(1) command. -SSLCertificateFile {{ x509_cert_file }} - -# Server Private Key: -# If the key is not combined with the certificate, use this -# directive to point at the key file. Keep in mind that if -# you've both a RSA and a DSA private key you can configure -# both in parallel (to also allow the use of DSA ciphers, etc.) -SSLCertificateKeyFile {{ x509_key_file }} - -# Server Certificate Chain: -# Point SSLCertificateChainFile at a file containing the -# concatenation of PEM encoded CA certificates which form the -# certificate chain for the server certificate. Alternatively -# the referenced file can be the same as SSLCertificateFile -# when the CA certificates are directly appended to the server -# certificate for convinience. -#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt - -# Certificate Authority (CA): -# Set the CA certificate verification path where to find CA -# certificates for client authentication or alternatively one -# huge file containing all of them (file must be PEM encoded) -SSLCACertificateFile {{ x509_cacert_file }} - -# Client Authentication (Type): -# Client certificate verification type and depth. Types are -# none, optional, require and optional_no_ca. Depth is a -# number which specifies how deeply to verify the certificate -# issuer chain before deciding the certificate is not valid. -#SSLVerifyClient require -#SSLVerifyDepth 10 - -# Access Control: -# With SSLRequire you can do per-directory access control based -# on arbitrary complex boolean expressions containing server -# variable checks and other lookup directives. The syntax is a -# mixture between C and Perl. See the mod_ssl documentation -# for more details. -#<Location /> -#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \ -# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ -# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \ -# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \ -# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \ -# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/ -#</Location> - -# SSL Engine Options: -# Set various options for the SSL engine. -# o FakeBasicAuth: -# Translate the client X.509 into a Basic Authorisation. This means that -# the standard Auth/DBMAuth methods can be used for access control. The -# user name is the `one line' version of the client's X.509 certificate. -# Note that no password is obtained from the user. Every entry in the user -# file needs this password: `xxj31ZMTZzkVA'. -# o ExportCertData: -# This exports two additional environment variables: SSL_CLIENT_CERT and -# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the -# server (always existing) and the client (only existing when client -# authentication is used). This can be used to import the certificates -# into CGI scripts. -# o StdEnvVars: -# This exports the standard SSL/TLS related `SSL_*' environment variables. -# Per default this exportation is switched off for performance reasons, -# because the extraction step is an expensive operation and is usually -# useless for serving static content. So one usually enables the -# exportation for CGI and SSI requests only. -# o StrictRequire: -# This denies access when "SSLRequireSSL" or "SSLRequire" applied even -# under a "Satisfy any" situation, i.e. when it applies access is denied -# and no other module can change it. -# o OptRenegotiate: -# This enables optimized SSL connection renegotiation handling when SSL -# directives are used in per-directory context. -#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire -<Files ~ "\.(cgi|shtml|phtml|php3?)$"> - SSLOptions +StdEnvVars -</Files> -<Directory "/var/www/cgi-bin"> - SSLOptions +StdEnvVars -</Directory> - -# SSL Protocol Adjustments: -# The safe and default but still SSL/TLS standard compliant shutdown -# approach is that mod_ssl sends the close notify alert but doesn't wait for -# the close notify alert from client. When you need a different shutdown -# approach you can use one of the following variables: -# o ssl-unclean-shutdown: -# This forces an unclean shutdown when the connection is closed, i.e. no -# SSL close notify alert is send or allowed to received. This violates -# the SSL/TLS standard but is needed for some brain-dead browsers. Use -# this when you receive I/O errors because of the standard approach where -# mod_ssl sends the close notify alert. -# o ssl-accurate-shutdown: -# This forces an accurate shutdown when the connection is closed, i.e. a -# SSL close notify alert is send and mod_ssl waits for the close notify -# alert of the client. This is 100% SSL/TLS standard compliant, but in -# practice often causes hanging connections with brain-dead browsers. Use -# this only for browsers where you know that their SSL implementation -# works correctly. -# Notice: Most problems of broken clients are also related to the HTTP -# keep-alive facility, so you usually additionally want to disable -# keep-alive for those clients, too. Use variable "nokeepalive" for this. -# Similarly, one has to force some clients to use HTTP/1.0 to workaround -# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and -# "force-response-1.0" for this. -SetEnvIf User-Agent ".*MSIE.*" \ - nokeepalive ssl-unclean-shutdown \ - downgrade-1.0 force-response-1.0 - -# Per-Server Logging: -# The home of a custom SSL log file. Use this when you want a -# compact non-error SSL logfile on a virtual host basis. -CustomLog logs/ssl_request_log \ - "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" - -</VirtualHost> diff --git a/roles/karaage3.1.17/vars/main.yml b/roles/karaage3.1.17/vars/main.yml index eb18be12737723fe5638423409d64b3166d5acbb..ecb19b1dc536303cbeca4468bf219cf296780b28 100644 --- a/roles/karaage3.1.17/vars/main.yml +++ b/roles/karaage3.1.17/vars/main.yml @@ -1,3 +1,2 @@ --- - apache_user: "{% if ansible_os_family == 'RedHat' %}apache{% else %}www-data{% endif %}" karaageSecretKey: "imkaraage"