Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Trust and Identity Incubator
mdx-saas-config
Commits
6c628d6a
Commit
6c628d6a
authored
May 06, 2022
by
Martin van Es
Browse files
Merge branch 'martin' into 'main'
Martin See merge request
!1
parents
e7e45e84
1f80f68e
Changes
14
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
6c628d6a
files/*.crt
files/*.key
inventory/group_vars/all.yml
inventory/group_vars/geodns.yml
inventory/group_vars/mdsigner.yml
.ssh/id_*
files/GeoLite2-Country.mmdb
deleted
100644 → 0
View file @
e7e45e84
File deleted
files/README
View file @
6c628d6a
Download GeoLite2 DB's from https://dev.maxmind.com/geoip/geolite2-free-geolocation-data
This directory should contain:
* GeoDNS config in yaml format
* mdsigner signing certificates (key_spec/cert_spec)
inventory/group_vars/all.yml
→
inventory/group_vars/all.yml
.example
View file @
6c628d6a
...
...
@@ -2,37 +2,27 @@
tld: srv.mdx.incubator.geant.org
host
s
:
proxie
s:
et2:
hostname: srv1
altname
:
'
server-md2.et2.com'
mdsigner
:
test
:
signer
:
hsm_signer
metadir
:
metadata/test
alias: 'server-md2.et2.com'
mdproxy:
test:
signer: 'http://localhost:5001'
altname
:
'
test-md.et2.com'
realm_alias
: 'test-md.et2.com'
edugain:
signer: 'http://srv2-signer.srv.mdx.incubator.geant.org'
altname
:
'
edugain-md.et2.com'
realm_alias
: 'edugain-md.et2.com'
mdxcdn:
hostname: srv2
altname
:
'
server-md2.et2.com'
mdsigner
:
edugain
:
signer
:
hsm_signer
metadir
:
metadata/edugain
alias: 'server-md2.et2.com'
mdproxy:
test:
signer: 'http://srv1-signer.srv.mdx.incubator.geant.org'
altname
:
'
test-md.foobar.com'
realm_alias
: 'test-md.foobar.com'
edugain:
signer: 'http://localhost:5001'
...
...
@@ -42,20 +32,15 @@ hosts:
mdproxy:
test:
signer: 'http://srv1-signer.srv.mdx.incubator.geant.org'
altname
:
'
test-md.barfoo.com'
realm_alias
: 'test-md.barfoo.com'
edugain:
signer: 'http://srv2-signer.srv.mdx.incubator.geant.org'
alternative-mdx:
hostname: srv4
altname
:
'
server-md.example.com'
mdsigner
:
foobar
:
signer
:
normal_signer
metadir
:
metadata/test
alias: 'server-md.example.com'
mdproxy:
edugain:
signer: 'http://srv2-signer.srv.mdx.incubator.geant.org'
altname
:
'
edugain-md.blabla.com'
realm_alias
: 'edugain-md.blabla.com'
inventory/group_vars/geodns.yml.example
0 → 100644
View file @
6c628d6a
geodns_licence: *************
inventory/group_vars/mdsigner.yml.example
0 → 100644
View file @
6c628d6a
---
signers_tld: srv.mdx.incubator.geant.org
signers:
et2:
hostname: srv1
alias: mdx.et2.hu
mdsigner:
test:
name: hsm_signer
key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
mdxcdn:
hostname: srv2
alias: mdx.cdn.nl
mdsigner:
edugain:
name: hsm_signer
key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
alternative-mdx:
hostname: srv3
alias: mdx.alternative.nl
mdsigner:
test:
name: normal_signer
key_spec: "test.key"
cert_spec: "test.crt"
foobar:
name: hsm_signer
key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
inventory/inventory
→
inventory/inventory
.example
View file @
6c628d6a
File moved
roles/apache/templates/md.conf.j2
View file @
6c628d6a
{% if hosts[inventory_hostname].get('mdsigner') %}
{% if signers is defined and signers[inventory_hostname].get('mdsigner') %}
# Signer configuration
<VirtualHost *:80>
ServerName {{
host
s[inventory_hostname]['hostname'] }}-signer.{{ tld }}
{% if
host
s[inventory_hostname].get('al
tname
') %}
ServerAlias {{
host
s[inventory_hostname]['al
tname
'] }}
ServerName {{
signer
s[inventory_hostname]['hostname'] }}-signer.{{
signers_
tld }}
{% if
signer
s[inventory_hostname].get('al
ias
') %}
ServerAlias {{
signer
s[inventory_hostname]['al
ias
'] }}
{% endif %}
DocumentRoot /var/www/html
AllowEncodedSlashes NoDecode
ProxyPass "/" "http://127.0.0.1:5001/" nocanon
ProxyPassReverse "/" "http://127.0.0.1:5001/"
</VirtualHost>
{% endif %}
{% if hosts[inventory_hostname].get('mdproxy') %}
{% endif %}
{% if proxies is defined and proxies[inventory_hostname].get('mdproxy') %}
# Global proxy configuration
<VirtualHost *:80>
ServerName {{ hosts[inventory_hostname]['hostname'] }}-proxy.{{ tld }}
ServerName {{ proxies[inventory_hostname]['hostname'] }}-proxy.{{ tld }}
{% if proxies[inventory_hostname].get('alias') %}
ServerAlias {{ proxies[inventory_hostname]['alias'] }}
{% endif %}
DocumentRoot /var/www/html
AllowEncodedSlashes NoDecode
ProxyPass "/" "http://127.0.0.1:5002/" nocanon
ProxyPassReverse "/" "http://127.0.0.1:5002/"
</VirtualHost>
{% set mdproxy = hosts[inventory_hostname]['mdproxy'] %}
{% set mdproxy = proxies[inventory_hostname]['mdproxy'] %}
# Realm specific proxy configuration
{% for realm, values in mdproxy.items() %}
<VirtualHost *:80>
ServerName proxy-{{ realm }}.{{ tld }}
{% if values.get('
altname
') %}
ServerAlias {{ values['
altname
'] }}
{% if values.get('
realm_alias
') %}
ServerAlias {{ values['
realm_alias
'] }}
{% endif %}
DocumentRoot /var/www/html
AllowEncodedSlashes NoDecode
...
...
@@ -34,3 +40,4 @@
</VirtualHost>
{% endfor %}
{% endif %}
roles/geodns/tasks/main.yml
View file @
6c628d6a
...
...
@@ -4,6 +4,7 @@
state
:
present
name
:
-
netcat-openbsd
-
ansible
-
name
:
Check if go binary exists
stat
:
...
...
roles/local/tasks/main.yml
View file @
6c628d6a
---
-
name
:
Install packages
apt
:
state
:
present
name
:
-
ansible
-
name
:
Clone MDX-SAAS-config repository
ansible.builtin.git
:
...
...
roles/mdproxy/templates/mdproxy.yaml.j2
View file @
6c628d6a
---
{{ hosts[inventory_hostname]['mdproxy'] | tojson }}
{% set mdproxies = proxies[inventory_hostname]['mdproxy'] %}
{% for realm, values in mdproxies.items() %}
{{ realm }}:
signer: {{ values['signer'] }}
{% endfor %}
roles/mdsigner/tasks/certificates.yml
0 → 100644
View file @
6c628d6a
-
name
:
check wheter we can copy certificates
ansible.builtin.stat
:
path
:
"
{{
playbook_dir
}}/files/{{
item.value.key_spec
}}"
delegate_to
:
localhost
become
:
no
register
:
key_spec
-
name
:
Copy certificates when key_spec exists
block
:
-
name
:
Copy Key spec
ansible.builtin.copy
:
src
:
"
{{
item.value.key_spec
}}"
dest
:
"
{{
altmdx_dir
}}/{{
item.value.key_spec
}}"
-
name
:
Copy Cert spec
ansible.builtin.copy
:
src
:
"
{{
item.value.cert_spec
}}"
dest
:
"
{{
altmdx_dir
}}/{{
item.value.cert_spec
}}"
when
:
key_spec.stat.exists
roles/mdsigner/tasks/main.yml
View file @
6c628d6a
...
...
@@ -22,22 +22,11 @@
path
:
"
{{
altmdx_metadir
}}/{{
item.key
}}"
state
:
directory
mode
:
'
0755'
with_dict
:
"
{{
host
s[inventory_hostname]['mdsigner']
}}"
with_dict
:
"
{{
signer
s[inventory_hostname]['mdsigner']
}}"
-
name
:
Check existence of metadata signing cert
stat
:
path
:
"
{{
altmdx_metadir
}}/meta.crt"
register
:
mdcert
-
name
:
create self-signed Metadata Signing SSL certs
shell
:
>
openssl genrsa -out "{{ altmdx_dir }}/meta.key" 2048;
openssl req -new -nodes -x509 -subj "/C=NL/CN=metadata"
-days 3650 -key "{{ altmdx_dir }}/meta.key"
-out "{{ altmdx_dir }}/meta.crt" -extensions v3_ca
args
:
creates
:
"
{{
altmdx_dir
}}/meta.crt"
when
:
not mdcert.stat.exists
-
name
:
Copy certificates
include_tasks
:
certificates.yml
loop
:
"
{{
signers[inventory_hostname]['mdsigner']
|
dict2items
}}"
-
name
:
Copy mdsigner service files
ansible.builtin.template
:
...
...
roles/mdsigner/templates/mdsigner.yaml.j2
View file @
6c628d6a
---
{{ hosts[inventory_hostname]['mdsigner'] | to_yaml }}
{% set mdsigners = signers[inventory_hostname]['mdsigner'] %}
{% for realm, values in mdsigners.items() %}
{{ realm }}:
signer:
name: {{ values['name'] }}
key_spec: {{ values.key_spec }}
cert_spec: {{ values.get('cert_spec') }}
metadir: metadata/{{ realm }}
{% endfor %}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment