first draft of cisoassistant manifest
This commit is contained in:
parent
efc1c46fc0
commit
6b03e058d3
10 changed files with 172 additions and 22 deletions
|
@ -1,11 +0,0 @@
|
||||||
sunet::nftables::allow::rules:
|
|
||||||
allow_access_to_cisoassistant:
|
|
||||||
from: 'any'
|
|
||||||
port: 8443
|
|
||||||
to: 'any'
|
|
||||||
proto: 'tcp'
|
|
||||||
allow_access_to_cisoassistant_api:
|
|
||||||
from: 'any'
|
|
||||||
port: 9443
|
|
||||||
to: 'any'
|
|
||||||
proto: 'tcp'
|
|
|
@ -146,7 +146,7 @@ nifrontend-sto1-prod-1.sunet.se:
|
||||||
port: '443'
|
port: '443'
|
||||||
|
|
||||||
cisoas-sto4-prod-1.sunet.se:
|
cisoas-sto4-prod-1.sunet.se:
|
||||||
net::nftables:
|
net::cisoassistant:
|
||||||
sunet::dehydrated::client:
|
sunet::dehydrated::client:
|
||||||
domain: cisoas-sto4-prod-1.sunet.se
|
domain: cisoas-sto4-prod-1.sunet.se
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
cisoas.sunet.se:8443 {
|
||||||
|
reverse_proxy frontend:3000
|
||||||
|
tls /certs/cert.pem /certs/key.pem
|
||||||
|
}
|
||||||
|
cisoas-api.sunet.se:9443 {
|
||||||
|
reverse_proxy backend:8000
|
||||||
|
tls /certs/cert.pem /certs/key.pem
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"iptables": false
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
container_name: backend
|
||||||
|
image: ghcr.io/intuitem/ciso-assistant-enterprise-backend:latest
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- ALLOWED_HOSTS=backend,cisoas.sunet.se
|
||||||
|
- CISO_ASSISTANT_URL=https://cisoas.sunet.se:8443
|
||||||
|
- DJANGO_DEBUG=True
|
||||||
|
- AUTH_TOKEN_TTL=7200
|
||||||
|
volumes:
|
||||||
|
- ./db:/code/db
|
||||||
|
- /etc/dehydrated/certs/cisoas-sto4-prod-1.sunet.se:/certs
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
container_name: frontend
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- PUBLIC_BACKEND_API_URL=http://backend:8000/api
|
||||||
|
- PROTOCOL_HEADER=x-forwarded-proto
|
||||||
|
- HOST_HEADER=x-forwarded-host
|
||||||
|
|
||||||
|
image: ghcr.io/intuitem/ciso-assistant-enterprise-frontend:latest
|
||||||
|
depends_on:
|
||||||
|
- backend
|
||||||
|
volumes:
|
||||||
|
- /etc/dehydrated/certs/cisoas-sto4-prod-1.sunet.se:/certs
|
||||||
|
|
||||||
|
caddy:
|
||||||
|
container_name: caddy
|
||||||
|
image: caddy:2.8.4
|
||||||
|
depends_on:
|
||||||
|
- frontend
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 8443:8443
|
||||||
|
- 9443:9443
|
||||||
|
volumes:
|
||||||
|
- ./caddy_data:/data
|
||||||
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
||||||
|
- /etc/dehydrated/certs/cisoas-sto4-prod-1.sunet.se:/certs
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd /etc/dehydrated/certs/cisoas-sto4-prod-1.sunet.se
|
||||||
|
|
||||||
|
latest_csr=$(ls -t cert-*.csr | head -n 1)
|
||||||
|
latest_cert=$(ls -t cert-*.pem | head -n 1)
|
||||||
|
latest_key=$(ls -t privkey-*.pem | head -n 1)
|
||||||
|
|
||||||
|
ln -sf "$latest_csr" cert.csr
|
||||||
|
ln -sf "$latest_cert" cert.pem
|
||||||
|
ln -sf "$latest_key" key.pem
|
|
@ -0,0 +1,18 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Jenkins CI application
|
||||||
|
After=docker.service
|
||||||
|
BindsTo=docker.service
|
||||||
|
Conflicts=shutdown.target reboot.target halt.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
TimeoutStartSec=0
|
||||||
|
TimeoutStopSec=30
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
SyslogIdentifier=sunet-jenkins
|
||||||
|
WorkingDirectory=/opt/cisoas/ciso-assistant-community/enterprise
|
||||||
|
ExecStart=/usr/local/bin/docker-compose up -d
|
||||||
|
ExecStop=/usr/local/bin/docker-compose stop
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,5 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
cd /opt/cisoas/ciso-assistant-community/enterprise
|
||||||
|
pushd ..
|
||||||
|
./update-ciso-assistant.sh enterprise
|
||||||
|
popd
|
|
@ -0,0 +1,85 @@
|
||||||
|
class net::cisoassistant {
|
||||||
|
$nftables_rules = {
|
||||||
|
'allow_access_to_cisoassistant' => {
|
||||||
|
from => 'any',
|
||||||
|
port => 8443,
|
||||||
|
to => 'any',
|
||||||
|
proto => 'tcp',
|
||||||
|
},
|
||||||
|
'allow_access_to_cisoassistant_api' => {
|
||||||
|
from => 'any',
|
||||||
|
port => 9443,
|
||||||
|
to => 'any',
|
||||||
|
proto => 'tcp',
|
||||||
|
},
|
||||||
|
'allow_access_to_always_https_acme_c' => {
|
||||||
|
from => 'any',
|
||||||
|
port => 9443,
|
||||||
|
to => 'any',
|
||||||
|
proto => 'tcp',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
$nftables_rules.each |$name, $params| {
|
||||||
|
sunet::nftables::allow { $name:
|
||||||
|
* => $params,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sunet::docker_compose { 'always-https':
|
||||||
|
image => 'docker.sunet.se/always-https',
|
||||||
|
ports => ['80:80'],
|
||||||
|
env => ['ACME_URL=http://acme-c.sunet.se/'],
|
||||||
|
}
|
||||||
|
file { '/etc/docker/daemon.json':
|
||||||
|
mode => '0744',
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
content => file('cisoassistant/daemon.json'),
|
||||||
|
}
|
||||||
|
file { '/opt/cisoas/ciso-assistant-community/enterprise/docker-compose.yml':
|
||||||
|
mode => '0744',
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
content => file('cisoassistant/docker-compose.yml'),
|
||||||
|
}
|
||||||
|
file { '/opt/cisoas/ciso-assistant-community/enterprise/update-cisoas-enterprise.sh':
|
||||||
|
mode => '0744',
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
content => file('cisoassistant/update-cisoas-enterprise.sh'),
|
||||||
|
}
|
||||||
|
sunet::scriptherder::cronjob { 'Upgrade cisoassistant images':
|
||||||
|
cmd => '/opt/cisoas/ciso-assistant-community/enterprise/update-cisoas-enterprise.sh',
|
||||||
|
weekday => 'Saturday',
|
||||||
|
ok_criteria => ['exit_status=0', 'max_age=10d'],
|
||||||
|
}
|
||||||
|
file { '/opt/cisoas/ciso-assistant-community/enterprise/rotate-certs.sh':
|
||||||
|
mode => '0744',
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
content => file('cisoassistant/rotate-certs.sh'),
|
||||||
|
}
|
||||||
|
sunet::scriptherder::cronjob { 'Rotate le certificates':
|
||||||
|
cmd => '/opt/cisoas/ciso-assistant-community/enterprise/rotate-certs.sh',
|
||||||
|
hour => '1',
|
||||||
|
ok_criteria => ['exit_status=0', 'max_age=48h'],
|
||||||
|
}
|
||||||
|
file { '/opt/cisoas/ciso-assistant-community/enterprise/Caddyfile':
|
||||||
|
mode => '0744',
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
content => file('cisoassistant/Caddyfile'),
|
||||||
|
}
|
||||||
|
file { "/etc/systemd/system/sunet-cisoas.service":
|
||||||
|
mode => '0644',
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
content => file('cisoassistant/sunet-cisoas.service'),
|
||||||
|
notify => [Class['sunet::systemd_reload']],
|
||||||
|
}
|
||||||
|
service { 'sunet-cisoas' :
|
||||||
|
ensure => 'running',
|
||||||
|
enable => true,
|
||||||
|
require => File['/etc/systemd/system/sunet-cisoas.service'],
|
||||||
|
provider => 'systemd',
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,10 +0,0 @@
|
||||||
class net::nftables {
|
|
||||||
$nftables_rules = lookup('sunet::nftables::allow::rules', Hash, 'deep', {})
|
|
||||||
|
|
||||||
$nftables_rules.each |$name, $params| {
|
|
||||||
sunet::nftables::allow { $name:
|
|
||||||
* => $params,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue