A next generation of https://gitlab.ics.muni.cz/KYPO-content/KYPO-Creator
generate.py is a python program that generates a vagrant source file from a definition in yaml.
generate.py is a python program that generates a vagrant source file from a definition in yaml. This yaml file contains definitions of devices (hosts and routers) and networks. Its structure is described below.
### Usage:
1. Clone the project.
...
...
@@ -11,34 +11,32 @@ generate.py is a python program that generates a vagrant source file from a defi
3. Type `$ python generate.py yaml_file.yaml`. There is a test yaml file in the repository called test.yaml.
4. Run `$ vagrant up`
### Implemented attribute types:
- all simple vagrant attributes
- flavors, memory, cpus
- a simple network (assigning ip and netmask to a device)
### Input yaml file structure
### Not implemented yet:
- VirtualBox and OpenStack attributes
- other network configuration
### Working yaml attributes
- hosts
- all string, integer and boolean [vagrant attributes](https://www.vagrantup.com/docs/vagrantfile/machine_settings.html)(mappings of vagrant attribute names to yaml attributes are in name_mapping/mapping.yml)
- flavor
- memory
- cpus
- networks
- name
- cidr
- net_mappings
- host
- network
- ip
- routers
- name
- router_mappings
- router
- network
- ip
-`hosts`: a list of host devices. All attributes of these virtual machines are defined here. Every host must have a unique `name` and a `base_box`.
-`name`: unique name of the device (required)
-`base_box`: an OS image that will be installed on the machine (required)
-`cpus`: number of CPU units
-`memory`: required memory size in MB
-`flavors`: a quick definition of memory and cpus (details below)
- other simple [vagrant attributes](https://www.vagrantup.com/docs/vagrantfile/machine_settings.html)
-`routers`: a list of routers. Routers need only a unique name. All other attributes are preset (Debian 10 with 256MB memory and 2 CPUs).
-`name`: a unique router name (required)
-`networks`: list of networks
-`name`: unique name of the network (required)
-`cidr`: ip address of the network in cidr notation
-`net_mappings`: mappings of host machines to a network. This list defines the ip addresses of host in certain networks
-`host`: name of an existing host
-`network`: name of an existing network
-`ip`: ip address of the host in the network
-`router_mappings`: similar to net_mappings. It defines the addresses of routers inside networks.
-`router`: name of an existing router
-`network`: name of an existing network
-`ip`: ip address of the router in the network
#### Flavors
...
...
@@ -58,6 +56,16 @@ Flavors provide a quick way to choose hardware specs (like number of cpus and me
| csirtmu.jumbo16x32 | 16 | 32768 |
| csirtmu.jumbo16x64 | 16 | 65536 |
### Implemented attribute types:
- all simple vagrant attributes
- flavors, memory, cpus
- a simple network (assigning ip and netmask to a device)
- simple routing (one router between networks)
### Not implemented yet:
- other VirtualBox attributes
- more complex routing
### Known [issues](https://gitlab.ics.muni.cz/cs4eu/sandbox-creator/issues):
- after running on Windows the output may contain invalid multibyte chars