2020-03-16 10:44:22 +01:00
#!/usr/bin/env bash
2020-08-12 08:24:10 +02:00
# Configuration
# -> base (cadoles' servermodel)
# |-> cluster (servermodel)
# | '-> node1.cadoles.com (server)
# |
# |-> aca (servermodel) + unbound (AS) + openssh (AS)
# | '-> etab1 (servermodel) -------------------,
# | |
# '-> fedora-32 (cadoles' servermodel) |
# '-> unbound (servermodel) + unbound (AS) --|
# '-> unbound_etab1 (servermodel)
# '-> dns.cadoles.com (server)
# Site and zone
# + = = = = = = = = = = = = = = = = = = = = = = = +
# " SITE cluster "
# " "
# " +-------------------+ "
# " | node1.cadoles.com | "-----------+
# " | | " |
# " +-------------------+ " |
# " " +~~~~~~~~+
# + = = = = = = = = = = = = = = = = = = = = = = = + ! ZONE !
# ! pedago !
# + = = = = = = = = = = = = = = = = = = = = = = = + +~~~~~~~~+
# " SITE etab1 " |
# " +-----------------+ " |
# " | dns.cadoles.com | "-----------+
# " | | "
# " +-----------------+ "
# " "
# + = = = = = = = = = = = = = = = = = = = = = = = +
2020-03-23 08:53:12 +01:00
#
2020-08-12 08:24:10 +02:00
# Cluster description:
# +-----------------------------+
# + cluster.cadoles.com +
# + +
# + +--------------------+ +
# + + node1.cadoles.com + +
# + + + +
# + + + +
# + +--------------------+ +
# + +
# +-----------------------------+
# Cluster execution:
# +-----------------------------+
# + cluster.cadoles.com +
# + +
# + +--------------------+ +
# + + dns.cadoles.com + +
# + + + +
# + + + +
# + +--------------------+ +
# + +
# +-----------------------------+
2020-03-16 10:44:22 +01:00
set -xe
verif( ) {
i = 0
argv = ( " $@ " )
2020-08-12 08:24:10 +02:00
for V in configuration.reseau.unbound_route_address configuration.reseau.unbound_domain_name configuration.serveur_dns.unbound_local_zones configuration.reseau.unbound_ip_address_cidr; do
2020-03-16 10:44:22 +01:00
i = $(( i+1))
2020-08-12 08:24:10 +02:00
R = $( cucchiaiata-cli " setting.session. $1 .get " -s " $S " -n " $V " | jq -Mcr .content[ ] )
2020-04-09 08:12:40 +02:00
[ " $R " = " ${ argv [i] } " ]
2020-03-16 10:44:22 +01:00
done
}
2020-08-12 08:24:10 +02:00
# Import Cadoles seed
cucchiaiata-cli setting.source.create -o cadoles -d /srv/risotto/seed/cadoles
2020-03-16 10:44:22 +01:00
2020-08-12 08:24:10 +02:00
# Create a new user and set role 'server_rw' for the server dns.cadoles.com
2020-04-08 15:53:39 +02:00
cucchiaiata-cli user.user.create -u gnunux -n gnunux -s gnunux
cucchiaiata-cli user.role.create -u gnunux -o 'server_rw' -a 'Server.ServerName' -v dns.cadoles.com
2020-03-16 10:44:22 +01:00
# Heritage
## ACA
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.servermodel.create -m aca -d Aca -p base -o cadoles -e last
cucchiaiata-cli setting.servermodel.dependency.add -m aca -a unbound -o cadoles -e last
2020-08-12 08:24:10 +02:00
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.servermodel.start -m aca -e last| jq -r .session_id)
2020-03-16 10:44:22 +01:00
verif servermodel null null [ ] null
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --configuration.reseau.unbound_route_address 192.168.1.2
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --configuration.serveur_dns.unbound_allowed_client_cidr 192.168.1.0/24
2020-03-16 10:44:22 +01:00
verif servermodel 192.168.1.2 null [ ] null
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.stop -s " $S " -a
2020-03-16 10:44:22 +01:00
## etab1
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.servermodel.create -m etab1 -d "Etab 1" -p aca -o internal -e last
2020-08-12 08:24:10 +02:00
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.servermodel.start -m etab1 -e last| jq -r .session_id)
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --configuration.reseau.unbound_domain_name dns.cadoles.com
2020-03-23 08:53:12 +01:00
verif servermodel 192.168.1.2 dns.cadoles.com [ ] null
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.stop -s " $S " -a
2020-03-16 10:44:22 +01:00
## unbound
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.servermodel.create -m unbound -d "generic unbound configuration" -p fedora-32 -o cadoles -e last
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.servermodel.dependency.add -m unbound -a unbound -o cadoles -e last
2020-08-12 08:24:10 +02:00
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.servermodel.start -m unbound -e last| jq -r .session_id)
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --configuration.serveur_dns.unbound_local_zones cadoles.com
cucchiaiata-cli setting.session.servermodel.filter -s " $S " -n unbound
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --unbound.unbound_zone_cadoles_com.hostname_cadoles_com.hostname_cadoles_com toto titi
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --unbound.unbound_zone_cadoles_com.hostname_cadoles_com.ip_cadoles_com 0 192.168.1.25
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --unbound.unbound_zone_cadoles_com.hostname_cadoles_com.type_cadoles_com 1 CNAME
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --unbound.unbound_zone_cadoles_com.hostname_cadoles_com.cname_cadoles_com 1 toto.cadoles.com
cucchiaiata-cli setting.session.servermodel.filter -s " $S " -n configuration
2020-03-16 10:44:22 +01:00
verif servermodel null null '["cadoles.com"]' null
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.stop -s " $S " -a
2020-03-16 10:44:22 +01:00
## unbound_etab1
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.servermodel.create -m unbound_etab1 -d "unbound configuration for etab1" -p etab1 unbound -o internal -e last
2020-08-12 08:24:10 +02:00
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.servermodel.start -m unbound_etab1 -e last | jq -r .session_id)
2020-03-23 08:53:12 +01:00
verif servermodel 192.168.1.2 dns.cadoles.com '["cadoles.com"]' null
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.stop -s " $S " -a
2020-03-16 10:44:22 +01:00
2020-08-12 08:24:10 +02:00
# Create sites and zone
2020-04-08 15:53:39 +02:00
cucchiaiata-cli infra.site.create -i cluster -d "Cluster"
2020-08-12 08:24:10 +02:00
cucchiaiata-cli infra.site.create -i etab1 -d "Etab 1"
2020-04-08 15:53:39 +02:00
cucchiaiata-cli infra.zone.create -z pedago -d "Pedago" -s etab1 cluster -n "192.168.1.0/24" -t "192.168.1.10" -e "192.168.1.100" -q 192.168.1.1 -g 192.168.1.254
2020-03-16 10:44:22 +01:00
2020-08-12 08:24:10 +02:00
# Create a servermodel for node in cluster and a server "node1"
cucchiaiata-cli setting.servermodel.create -m cluster -d "Node in the cluster" -p base -o cadoles -e last
2020-04-08 15:53:39 +02:00
cucchiaiata-cli infra.server.create -s node1.cadoles.com -d node1 -m cluster -e last -i cluster -z pedago
2020-08-12 08:24:10 +02:00
# Create a new server "dns"
2020-04-08 15:53:39 +02:00
cucchiaiata-cli infra.server.create -s dns.cadoles.com -d description -m unbound_etab1 -e last -i etab1 -z pedago
2020-03-18 14:14:10 +01:00
2020-03-20 16:36:14 +01:00
# Create a cluster with one node and one VM
2020-04-08 15:53:39 +02:00
cucchiaiata-cli provider.factory.cluster.create -c cluster.cadoles.com -d toto -v 192.168.1.1 -z pedago
cucchiaiata-cli provider.factory.cluster.join -c cluster.cadoles.com -n node1.cadoles.com
cucchiaiata-cli provider.factory.server.add -s dns.cadoles.com -c cluster.cadoles.com -p 0.2 -v 2 -m 2
2020-03-16 10:44:22 +01:00
# Configure server
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.server.start -s dns.cadoles.com | jq -r .session_id)
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.server.configure -s " $S " --configuration.reseau.unbound_ip_address_cidr 192.168.1.1/24
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.session.server.validate -s $S
2020-03-23 08:53:12 +01:00
verif server 192.168.1.2 dns.cadoles.com '["cadoles.com"]' 192.168.1.1/24
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.server.stop -s " $S " -a
2020-03-16 10:44:22 +01:00
# Generate configuration
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.config.configuration.server.deploy -s dns.cadoles.com
cucchiaiata-cli setting.template.generate -s dns.cadoles.com
2020-03-16 10:44:22 +01:00
# Add OpenSSH dependency
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.servermodel.dependency.add -m aca -a openssh -o cadoles -e last
2020-08-12 08:24:10 +02:00
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.server.start -s dns.cadoles.com | jq -r .session_id)
2020-08-12 08:24:10 +02:00
R = $( cucchiaiata-cli setting.session.server.get -s " $S " -n configuration.serveur_ssh.ssh_allow_networks | jq -Mcr .content[ ] )
2020-04-09 08:12:40 +02:00
[ " $R " = "[]" ]
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.server.stop -s " $S "
2020-03-16 10:44:22 +01:00
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.servermodel.start -m aca -e last| jq -r .session_id)
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.servermodel.configure -s " $S " --configuration.serveur_ssh.ssh_allow_networks admin.cadoles.com
cucchiaiata-cli setting.session.servermodel.stop -s " $S " -a
2020-03-16 10:44:22 +01:00
2020-04-08 15:53:39 +02:00
S = $( cucchiaiata-cli setting.session.server.start -s dns.cadoles.com | jq -r .session_id)
2020-08-12 08:24:10 +02:00
R = $( cucchiaiata-cli setting.session.server.get -s " $S " -n configuration.serveur_ssh.ssh_allow_networks | jq -Mcr .content[ ] )
2020-04-09 08:12:40 +02:00
[ " $R " = '["admin.cadoles.com"]' ]
2020-08-12 08:24:10 +02:00
cucchiaiata-cli setting.session.server.stop -s " $S "
2020-03-16 10:44:22 +01:00
# Regenerate configuration
2020-04-08 15:53:39 +02:00
cucchiaiata-cli setting.config.configuration.server.deploy -s dns.cadoles.com
cucchiaiata-cli setting.template.generate -s dns.cadoles.com
2020-03-23 08:53:12 +01:00
# Generate cluster's configurtion
2020-04-08 15:53:39 +02:00
cucchiaiata-cli provider.factory.configure -c cluster.cadoles.com
2020-03-16 10:44:22 +01:00
echo "fin"