diff --git a/modules/misc/deployment.nix b/modules/misc/deployment.nix index 91a0e9040dd1..3a95e89ea5e6 100644 --- a/modules/misc/deployment.nix +++ b/modules/misc/deployment.nix @@ -4,12 +4,92 @@ with pkgs.lib; { options = { + + deployment.targetEnv = mkOption { + default = "none"; + example = "ec2"; + description = '' + This option specifies the type of the environment in which the + machine is to be deployed by + nixos-deploy-network. Currently, it can + have the following values. "none" means + deploying to a pre-existing physical or virtual NixOS machine, + reachable via SSH under the hostname or IP address specified + in . + "ec2" means that a virtual machine should be + instantiated in an Amazon EC2-compatible cloud environment + (see ). + "adhoc-cloud" means that a virtual machine + should be instantiated by executing certain commands via SSH + on a cloud controller machine (see + ). This is primarily + useful for debugging nixos-deploy-network. + ''; + }; + deployment.targetHost = mkOption { default = config.networking.hostName; description = '' - This option specifies a hostname or IP address which can be used by nixos-deploy-network - to execute remote deployment operations. + This option specifies a hostname or IP address which can be + used by nixos-deploy-network to execute + remote deployment operations. ''; }; + + # EC2/Nova/Eucalyptus-specific options. + + deployment.ec2.url = mkOption { + example = "https://ec2.eu-west-1.amazonaws.com:443/"; + description = '' + URL of an Amazon EC2-compatible web service, used to create virtual machines. + ''; + }; + + deployment.ec2.ami = mkOption { + example = "ami-ecb49e98"; + description = '' + EC2 identifier of the AMI disk image used in the virtual + machine. This must be a NixOS image providing SSH access. + ''; + }; + + deployment.ec2.instanceType = mkOption { + default = "m1.small"; + example = "m1.large"; + description = '' + EC2 instance type. See for a + list of valid Amazon EC2 instance types. + ''; + }; + + # Ad hoc cloud options. + + deployment.adhoc.controller = mkOption { + example = "https://ec2.eu-west-1.amazonaws.com:443/"; + description = '' + Hostname or IP addres of the machine to which + nixos-deploy-network should connect (via + SSH) to execute commands to start VMs or query their status. + ''; + }; + + deployment.adhoc.startVMCommand = mkOption { + default = "create-vm"; + description = '' + Remote command to create a NixOS virtual machine. It should + print an identifier denoting the VM on standard output. + ''; + }; + + deployment.adhoc.queryVMCommand = mkOption { + default = "query-vm"; + description = '' + Remote command to query information about a previously created + NixOS virtual machine. It should print the IPv6 address of + the VM on standard output. + ''; + }; + }; }