Skip to content
Jacob Hartman edited this page Feb 28, 2020 · 4 revisions

Welcome to the dropship wiki!

Commander VM

Dropship needs to be able to access the other VMs it configures on the same network, thus it needs to be in its own VM. This VM is called the commander VM. Dropship is tested on an instance of Alpine Linux with a Python 3 venv.

Commander Requirements

  • Needs to have ip_forward enabled.
  • Needs to have IP masquerading (NAT) setup for external access. The commander VM acts as a internet-connected router during portions of the build-out.
  • Needs to have sudo installed with the following rules (replace <DROPSHIP_USER> with the user that will run Dropship):
<DROPSHIP_USER> ALL=(ALL) NOPASSWD: /usr/sbin/dnsmasq
<DROPSHIP_USER> ALL=(ALL) NOPASSWD: /sbin/ip
  • Needs to have dnsmasq installed.
  • Needs to have Python 3 installed with venv support. Run pip with pip3 install -r requirements to install the Python dependencies.

General Design

Provider

The Provider is the class that interacts with a hypervisor system, such as Proxmox. Keeping interactions generic allows for other hypervisors (Such as VMware) to be added the future much more easily.

Modules

Modules consist of a Python class, Ansible task files, and templates.

All Ansible files are expected to be a list of importable tasks using include_tasks

Images

Each module references an Image in their __IMAGE__ field. Images in Dropship are generic references to a template, which are mapped to real VMs in the config.json file vm_map key.

    "vm_map": {
        "linux.vyos": 129
        ...

Dropship will tell the provider to clone the real VM when a module utilizes it.

This template should be accessible Ansible through the provided credentials in config.json file credentials key.

    "credentials": {
        "networking.vyos": "<USERNAME>:<PASSWORD>",
        ...

Inherently, a Dropship image holds no limitations on the template and there are no pre-built images for a given Image, unless provided by somebody else. This means you that if you provide a module to somebody else, you should indicate how they should build their template for the module. Dropship does not do that part for you. If you have a very unique template, make a unique Image name.

Guidelines for generic templates may be provided in the future.

Clone this wiki locally