Fetching contributors…
Cannot retrieve contributors at this time
141 lines (94 sloc) 4.08 KB

Danube Cloud :: Factory

This repository is used for building various components of Erigones Danube Cloud, as well as the final Danube Cloud USB key image.


All build results are stored in following folders in build_base_dir:

  • appliances: Danube Cloud appliances (VM images), which then become part of the Danube Cloud USB image

    • base-64-es
    • esdc-mon
    • esdc-mgmt
    • esdc-cfgdb
    • esdc-dns
    • esdc-img
  • isos: ISO images, which are downloaded from external sources and become part of the Danube Cloud USB image.

  • archives: Tarballs, which become part of the Danube Cloud USB image (/opt)

    • local
    • monitoring
    • opt-custom
    • esdc-node
  • platform: Tarballs, which contain the hypervisor platform - SmartOS raw kernel and boot_archive.

  • images: This is just a directory, which holds symlinks to all appliances in an IMGAPI-like folder structure.

  • usb: Danube Cloud USB images.


Two network-connected Linux/Unix machines are required:

  • buildnode remote host:
    • A SmartOS/ErigonOS machine that is capable of running KVM and OS virtual machines.
    • Required software:
      • Python 2.7
  • builder local host:
    • The machine (can be a VM), which has this repository checked out.

    • Required software:
      • git
      • Ansible >= 2.0
      • GNU make
      • sshpass
      • OpenSSH client
      • a working ssh-agent with loaded build_ssh_key (for running git clone on remote host)
      • a running web server (build_base_url)
    • Must have a web root directory ready (build_base_dir) and the directory structure must be browsable (autoindex in nginx), e.g.:

      server {
          listen       80;
          server_name  _;
          root /var/www/html;  # build_base_url
          autoindex on;
          location /images {
              index manifest;
              default_type application/json;
          location ~ /images/(.*)/(file|.*.zfs.gz)$ {
              default_type application/octet-stream;
    • NOTE: Building the usb-image target currently requires an ErigonOS/SmartOS machine or a zone with fs_allowed property set to "ufs,pcfs,tmpfs".


Edit etc/hosts.cfg and etc/config.yml.

  • etc/hosts.cfg:
    • Adjust the builder and buildnode IP addresses and python interpreter.
  • etc/config.yml:
    • build_base_url
    • build_base_dir
    • build_ssh_key - the buildnode must be accessible from the builder machine via SSH.
    • build_nic_tag, build_gateway, build_netmask and build_ips - modify according to your network settings.


$ make help



Copyright 2016-2018 Erigones, s. r. o.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this project except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.