# docker-machine-driver-xcp This is the XCP-ng driver plugin for Docker Machine. It allows the orchestration of machines on XCP-ng (all versions) and probably compatible with Citrix XenServer 6.5SP1 or later. This work is derived from https://github.com/xenserver/docker-machine-driver-xenserver. # Installation from binary The installation steps are: 1. If not done already - download the Docker Machine binary for your OS and architecture 2. If not done already - move the binary to your PATH. 3. Download the driver archive for your OS and architecture. 4. Extract the archive 5. Move the driver binary to your PATH, so it can be found by docker-machine. # Requirements To use a generic configdrive, mkisofs is required to create the ISO drive. To install it: MacOS: ``` brew install cdrtools ``` Linux (Ubuntu): ``` apt-get install genisoimage ``` # Installation from source Following the installation of Golang and Docker Machine, you can install the docker-machine-xcp-driver: ```bash go get github.com/interlegis/docker-machine-driver-xcp ``` # Usage The usual Docker Machine commands apply: ```bash docker-machine create -d xcp --xcp-server myip --xcp-username myusername --xcp-password mypassword mynewmmachine docker-machine env mynewmmachine ``` # CLI Options: - `--xcp-vcpu-count`: vCPU number for docker VM. - `--xcp-memory-size`: Size of memory for Docker VM (in MB). - `--xcp-boot2docker-url`: URL for boot2docker ISO image. - `--xcp-server`: **required for create** XenServer hostname/IP for docker VM. - `--xcp-disk-size`: Size of disk for Docker VM (in MB). - `--xcp-username`: **required** XenServer Username. - `--xcp-password`: **required** XenServer Password. - `--xcp-network-label`: Network label where the docker VM will be attached - `--xcp-sr-label`: SR label where the docker VM will be attached. - `--xcp-host-label`: Host label where the docker VM will be run. - `--xcp-upload-timeout`: Timeout uploading VDI. - `--xcp-wait-timeout`: Timeout wating for VM start. - `--xcp-os-template`: XCP template name for the new VM. - `--xcp-os-username`: Username used by docker-machine to SSH to the new VM. - `--xcp-coreos-configdrive`: Whether to use a CoreOS ConfigDrive or (default) a generic one. # Environment variables and default values: | CLI option | Environment variable | Default | |-----------------------------|--------------------------|------------------------------| | `--xcp-vcpu-count` | `XCP_VCPU_COUNT` | `1` | | `--xcp-memory-size` | `XCP_MEMORY_SIZE` | `2048` | | `--xcp-disk-size` | `XCP_DISK_SIZE` | `5120` | | `--xcp-boot2docker-url` | `XCP_BOOT2DOCKER_URL` | *boot2docker URL* | | `--xcp-server` | `XCP_SERVER` | - | | `--xcp-host-label` | `XCP_HOST_LABEL` | - | | **`--xcp-username`** | `XCP_USERNAME` | - | | **`--xcp-password`** | `XCP_PASSWORD` | - | | `--xcp-network-label` | `XCP_NETWORK_LABEL` | - | | `--xcp-sr-label` | `XCP_SR_LABEL` | - | | `--xcp-upload-timeout` | `XCP_UPLOAD_TIMEOUT` | `300` | | `--xcp-wait-timeout` | `XCP_WAIT_TIMEOUT` | `1800` | | `--xcp-os-template` | `XCP_OS_TEMPLATE` | `Other install media` | | `--xcp-os-username` | `XCP_OS_USERNAME` | `docker` | | `--xcp-coreos-configdrive` | `XCP_COREOS_CONFIGDRIVE` | `false` |