creating automated wireguard mesh
This commit is contained in:
		
							parent
							
								
									ae3999d4f7
								
							
						
					
					
						commit
						54b4f5467e
					
				
							
								
								
									
										1
									
								
								surreal/README.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								surreal/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| # WIP | ||||
							
								
								
									
										23
									
								
								surreal/create_vms.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										23
									
								
								surreal/create_vms.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,23 @@ | ||||
| #!/bin/bash | ||||
| script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) | ||||
| cd $script_dir | ||||
| set -e | ||||
| export FORMAT=YAML | ||||
| mkdir -p tmp/vms | ||||
| 
 | ||||
| for vm_config in vm_configs/*; do | ||||
|   vm_name=$(echo $vm_config | cut -d '/' -f2 | cut -d '.' -f1) | ||||
|   echo $vm_name | ||||
|   detee-cli vm deploy --from-yaml $vm_config > tmp/vms/${vm_name}_install.yaml && | ||||
|     echo "The VM $vm_name got created." & | ||||
| done | ||||
| 
 | ||||
| wait | ||||
| 
 | ||||
| for vm_config in $(grep -r uuid: tmp/vms/ | awk '{ print $2}'); do | ||||
|   vm_id=$(echo $vm_config | cut -d '/' -f2 | cut -d '.' -f1) | ||||
|   detee-cli vm inspect $vm_id > tmp/vms/${vm_id}_inspect.yaml | ||||
|   vm_name=$(grep 'hostname: ' tmp/vms/${vm_id}_inspect.yaml | | ||||
|     awk '{ print $2 }') | ||||
|   mv tmp/vms/${vm_id}_inspect.yaml tmp/vms/${vm_name}_inspect.yaml | ||||
| done | ||||
							
								
								
									
										42
									
								
								surreal/deploy.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										42
									
								
								surreal/deploy.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,42 @@ | ||||
| #!/bin/bash | ||||
| script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) | ||||
| cd $script_dir | ||||
| set -e | ||||
| export FORMAT=YAML | ||||
| 
 | ||||
| vms=() | ||||
| 
 | ||||
| vm_count=0 | ||||
| new_vm() { | ||||
|   local vm_name="$1" | ||||
|   local vm_id="vm$vm_count" | ||||
|   (( vm_count++ )) || true | ||||
| 
 | ||||
|   local vm_install_data="tmp/vms/${vm_name}_install.yaml" | ||||
|   local vm_inspect_data="tmp/vms/${vm_name}_inspect.yaml" | ||||
| 
 | ||||
|   vm_node_ip=$(grep 'ip: ' $vm_install_data | awk '{ print $2 }') | ||||
|   vm_port=$(grep 'port: ' $vm_install_data | cut -d "'" -f2) | ||||
| 
 | ||||
|   declare -gA "$vm_id" | ||||
|   eval "$vm_id[id]=$1" | ||||
|   eval "$vm_id[name]=$vm_name" | ||||
|   eval "$vm_id[port]=$vm_port" | ||||
|   eval "$vm_id[node_ip]=$vm_node_ip" | ||||
|   eval "$vm_id[private_ip]=10.254.254.$1" | ||||
| 
 | ||||
|   vms+=("$vm_id") | ||||
| } | ||||
| 
 | ||||
| for vm_install_file in tmp/vms/*_install.yaml; do | ||||
|   vm_name=$(echo $vm_install_file | cut -d '/' -f3 | cut -d '_' -f1) | ||||
|   new_vm $vm_name | ||||
| done | ||||
| 
 | ||||
| for vm_object in "${vms[@]}"; do | ||||
|   declare -n vm_ref="$vm_object" | ||||
|   printf 'id=%s name=%s port=%s node_ip=%s private_ip=%s\n' \ | ||||
|     "${vm_ref[id]}" "${vm_ref[name]}" "${vm_ref[port]}" \ | ||||
|     "${vm_ref[node_ip]}" "${vm_ref[private_ip]}"  | ||||
| done | ||||
| 
 | ||||
							
								
								
									
										10
									
								
								surreal/vm_configs/brain-1.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								surreal/vm_configs/brain-1.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| hostname: brain-1 | ||||
| hours: 700 | ||||
| price: 20000 | ||||
| location: | ||||
|   Country: "France" | ||||
| ipv4: !PublishPorts [ 1337 ] | ||||
| public_ipv6: false | ||||
| vcpus: 4 | ||||
| memory_mb: 8000 | ||||
| disk_size_gb: 60 | ||||
							
								
								
									
										10
									
								
								surreal/vm_configs/brain-2.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								surreal/vm_configs/brain-2.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| hostname: brain-2 | ||||
| hours: 700 | ||||
| price: 20000 | ||||
| location: | ||||
|   Country: "GB" | ||||
| ipv4: !PublishPorts [ 1337 ] | ||||
| public_ipv6: false | ||||
| vcpus: 4 | ||||
| memory_mb: 8000 | ||||
| disk_size_gb: 60 | ||||
							
								
								
									
										10
									
								
								surreal/vm_configs/brain-3.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								surreal/vm_configs/brain-3.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| hostname: brain-3 | ||||
| hours: 700 | ||||
| price: 20000 | ||||
| location: | ||||
|   Country: "US" | ||||
| ipv4: !PublishPorts [ 1337 ] | ||||
| public_ipv6: false | ||||
| vcpus: 4 | ||||
| memory_mb: 8000 | ||||
| disk_size_gb: 60 | ||||
							
								
								
									
										10
									
								
								surreal/vm_configs/brain-bastion.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								surreal/vm_configs/brain-bastion.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| hostname: brain-bastion | ||||
| hours: 700 | ||||
| price: 20000 | ||||
| location: | ||||
|   Country: "France" | ||||
| ipv4: !PublishPorts [ 1337 ] | ||||
| public_ipv6: false | ||||
| vcpus: 4 | ||||
| memory_mb: 8000 | ||||
| disk_size_gb: 60 | ||||
							
								
								
									
										10
									
								
								surreal/vm_configs/brain-mon.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								surreal/vm_configs/brain-mon.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| hostname: brain-mon | ||||
| hours: 700 | ||||
| price: 20000 | ||||
| location: | ||||
|   Country: "US" | ||||
| ipv4: !PublishPorts [ 1337 ] | ||||
| public_ipv6: false | ||||
| vcpus: 4 | ||||
| memory_mb: 8000 | ||||
| disk_size_gb: 60 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user