Cloudsoft / Cloudsoft AMP / Apache Jclouds Capabilities
The following is a full list of the supported capability properties in the cloudsoft
capability
on tosca.nodes.Compute
. Note that these mainly apply only when using a jclouds-supported location:
- Setting up a specific cloud target:
provider
(java.lang.String
): the cloud provider, e.g. within jcloudsaws-ec2
identity
(java.lang.String
): the identity for accessing the cloud providercredential
(java.lang.String
): the credential for accessing the cloud providerregion
(java.lang.String
): the region of the cloud provider to useendpoint
(java.lang.String
): a custom endpoint to use when connecting to the cloud provider (typically only for private clouds)availabilityZone
(java.lang.String
): the availability zone within the cloudoauth.endpoint
(java.lang.String
): an oauth endpoint if required by the cloud provider
- Selecting an image
imageId
(java.lang.String
): A system-specific identifier for the VM image to be used when creating a VMimageNameRegex
(java.lang.String
): A regular expression to be compared against the ‘name’ when selecting the VM image to be used when creating a VMdefaultImageId
(java.lang.String
): A system-specific identifier for the VM image to be used by default when creating a VM (if no other VM image selection criteria are supplied)imageDescriptionRegex
(java.lang.String
): A regular expression to be compared against the ‘description’ when selecting the VM image to be used when creating a VMimageChooser
(com.google.common.base.Function<java.lang.Iterable<? extends org.jclouds.compute.domain.Image>, org.jclouds.compute.domain.Image>
): An image chooser function to control which images are preferredosFamily
(org.jclouds.compute.domain.OsFamily
): OS family, e.g. CentOS, Debian, RHEL, UbuntuosFamilyOverride
(org.jclouds.compute.domain.OsFamily
): OS family of VMs (ignores VM metadata from jclouds, and assumes this value)osVersionRegex
(java.lang.String
): Regular expression for the OS version to load
- Selecting the hardware type
minCores
(java.lang.Integer
): Minimum number of cores, for use in selecting the machine/hardware profileminDisk
(java.lang.Object
): Minimum size of disk, either as string (100gb) or number of GB (100), for use in selecting the machine/hardware profileminRam
(java.lang.Object
): Minimum amount of RAM, either as string (4gb) or number of MB (4096), for use in selecting the machine/hardware profileos64Bit
(java.lang.Boolean
): Whether to require 64-bit OS images (true), 32-bit images (false), or either (null)hardwareId
(java.lang.String
): A system-specific identifier for the hardware profile or machine type to be used when creating a VMoverrideRam
(java.lang.Integer
): Custom ram value
- Configuring the user to create/use post-login
user
(java.lang.String
): user account for normal access to the remote machine, defaulting to local userpassword
(java.lang.String
): password to use for ssh; note some images do not allow password-based ssh accessprivateKeyData
(java.lang.String
): ssh private key string to use (takes precedence over privateKeyFile)privateKeyFile
(java.lang.String
): a ‘:’ separated list of ssh private key files; uses first in list that can be readprivateKeyPassphrase
(java.lang.String
): nullpublicKeyData
(java.lang.String
): ssh public key string to use (takes precedence over publicKeyFile)publicKeyFile
(java.lang.String
): ssh public key file to use; if blank will infer from privateKeyFile by appending “.pub”jclouds.openstack-nova.auto-generate-keypairs
(java.lang.Boolean
): Whether to generate keypairs automatically (OpenStack Nova)disableRootAndPasswordSsh
(java.lang.Boolean
): Whether to disable direct SSH access for root and disable password-based SSH, if creating a user with a key-based login; defaults to true (set false to leave root users alone)dontCreateUser
(java.lang.Boolean
): Whether to skip creation of ‘user’ when provisioning machines (default false). Note that setting this will prevent jclouds from overwriting /etc/sudoers which might be configured incorrectly by default. See ‘dontRequireTtyForSudo’ for details.grantUserSudo
(java.lang.Boolean
): Whether to grant the created user sudo privileges. Irrelevant if dontCreateUser is true. Default: true.dontRequireTtyForSudo
(java.lang.Boolean
): Whether to explicitly set /etc/sudoers, so don’t need tty (will leave unchanged if ‘false’); some machines require a tty for sudo; AMP by default does not use a tty (so that it can get separate error+stdout streams); you can enable a tty as an option to every ssh command, or you can do it once and modify the machine so that a tty is not subsequently required. Usually used in conjunction with ‘dontCreateUser’ since it will prevent jclouds from overwriting /etc/sudoers and overriding the system default. When not explicitly set will be applied if ‘dontCreateUser’ is set.extraSshPublicKeyData
(java.lang.String
): Additional public key data to add to authorized_keys (multi-line string supported, with one key per line)extraSshPublicKeyUrls
(java.util.List<java.lang.String>
): Additional public keys (files or URLs, in SSH2/RFC4716/id_rsa.pub format) to add to authorized_keys
- Configuring the user who should initially log in the the machine
loginUser
(java.lang.String
): Override the user who logs in initially to perform setup (otherwise it is detected from the cloud or known defaults in cloud or VM OS)loginUser.password
(java.lang.String
): Custom password for the user who logs in initiallyloginUser.privateKeyData
(java.lang.String
): Custom private key for the user who logs in initiallyloginUser.privateKeyFile
(java.lang.String
): Custom private key for the user who logs in initiallykeyPair
(java.lang.String
): Custom keypair (name) known at the cloud to be installed on machines for initial login (selected clouds only); you may also need to set loginUser.privateKeyFilecustomCredentials
(org.jclouds.domain.LoginCredentials
): Custom jclouds LoginCredentials object to be used to connect to the VMrunAsRoot
(java.lang.Boolean
): Whether to run initial setup as root (default true)
- Configuring ports and network on the machine:
required.ports
(java.lang.Object
): Required additional ports to be applied when creating a VM, on supported clouds (either a single port as an Integer, or an Iterableor Integer[]) inboundPorts
(java.lang.Object
): Inbound ports to be applied when creating a VM, on supported clouds (either a single port as a String, or an Iterableor Integer[]); this defaults to `22` so that should be included if extending, or (preferred) set `required.ports` domainName
(java.lang.String
): DNS domain where the host should be created, e.g. yourdomain.com (selected clouds only)autoAssignFloatingIp
(java.lang.Boolean
): Whether to generate floating ips (in Nova paralance), or elastic IPs (in CloudStack parlance)securityGroups
(java.lang.Object
): Security groups to be applied when creating a VM, on supported clouds (either a single group identifier as a String, or an Iterableor String[]) networkName
(java.lang.String
): Network name or ID where the instance should be created (e.g. the subnet ID in AWSuseMachinePublicAddressAsPrivateAddress
(java.lang.Boolean
): When true we will use the public IP/Hostname of a JClouds Location as the private IP/HostnameopenIptables
(java.lang.Boolean
): [DEPRECATED - use openIptables on SoftwareProcess entity] Whether to open the INBOUND_PORTS via iptables rules; if true then ssh in to run iptables commands, as part of machine provisioningstopIptables
(java.lang.Boolean
): [DEPRECATED - use stopIptables on SoftwareProcess entity] Whether to stop iptables entirely; if true then ssh in to stop the iptables service, as part of machine provisioning
- Configuring tags and user metadata on the created machine (varies from cloud to cloud):
tags
(java.lang.Object
): Tags to be applied when creating a VM, on supported clouds (either a single tag as a String, or an Iterableor String[]; note this is not key-value pairs (e.g. what AWS calls 'tags'), for that see userMetadata) userMetadata
(java.lang.Object
): Arbitrary user metadata, as a map (or String of comma-separated key=value pairs), on supported clouds; note often values cannot be nulluserMetadataString
(java.lang.String
): Arbitrary user data, as a single string, on supported clouds (AWS)
- Specifying a custom script to be run as part of initial machine setup:
setup.script
(java.lang.String
): Custom script to customize a nodesetup.scripts
(java.util.List<java.lang.String>
): A list of scripts to customize a nodesetup.script.vars
(java.lang.String
): vars to customize a setup.script i.e.: key1:value1,key2:value2customTemplateOptionsScriptContents
(java.lang.String
): A custom script to pass to jclouds as part of template options, run after AdminAccess, for use primarily where a command which must run as root on first login before switching to the admin user, e.g. to customize sudoers; may start in an odd location (e.g. /tmp/bootstrap); NB: most commands should be run by entities, or if VM-specific but sudo is okay, then via setup.script, not via this
- Debugging options, e.g. if connection is not possible due to private cloud contraints:
waitForSshable
(java.lang.String
): Whether and how long to wait for a newly provisioned VM to be accessible via ssh; if ‘false’, won’t check; if ‘true’ uses default duration; otherwise accepts a time string e.g. ‘5m’ (the default) or a number of millisecondswaitForWinRmAvailable
(java.lang.String
): Whether and how long to wait for a newly provisioned VM to be accessible via WinRm; if ‘false’, won’t check; if ‘true’ uses default duration; otherwise accepts a time string e.g. ‘30m’ (the default) or a number of millisecondsuseJcloudsSshInit
(java.lang.Boolean
): Whether to use jclouds for initial ssh-based setup (i.e. as part of the ‘TemplateOptions’); if false will use core AMP ssh utilities. This config is beta; its default could be changed and/or the option removed in an upcoming release.localTempDir
(java.lang.String
): The directory on the local machine (i.e. running brooklyn) for writing temp filesmachineCreateAttempts
(java.lang.Integer
): Number of times to retry if jclouds fails to create a VMmachineCreationSemaphore
(java.util.concurrent.Semaphore
): Semaphore for controlling concurrent machine creationmachineDeletionSemaphore
(java.util.concurrent.Semaphore
): Semaphore for controlling concurrent machine deletioninstallDevUrandom
(java.lang.Boolean
): Map /dev/random to /dev/urandom to prevent halting on insufficient entropymaxConcurrentMachineCreations
(java.lang.Integer
): Maximum number of concurrent machine-creationsmaxConcurrentMachineDeletions
(java.lang.Integer
): Maximum number of concurrent machine-deletionsdestroyOnFailure
(java.lang.Boolean
): Whether to destroy the VM if provisioningLocation.obtain() failsextensions
(java.util.Map<java.lang.String, java.lang.String>
): Location extensionsincludeAMPUserMetadata
(java.lang.Boolean
): Whether to set metadata about the context of a machine, e.g. brooklyn-entity-id, brooklyn-app-name (default true)groupId
(java.lang.String
): The Jclouds group provisioned machines should be members of. Users of this config key are also responsible for configuring security groups.pollForFirstReachableAddress
(java.lang.String
): Whether and how long to wait for reaching the VM’s ip:port to be accessible over SSH or WinRM; if ‘false’, the location will will choose a public or private IP as appropriate; if ‘true’ uses default duration; otherwise accepts a time string e.g. ‘5m’ (the default) or a number of milliseconds
- Low-level configuration:
vmNameAllowedChars
(java.lang.String
): The characters allowed in a VM namevmNameMaxLength
(java.lang.Integer
): Maximum length of VM namevmNameSaltLength
(java.lang.Integer
): Number of characters to use for a random identifier inserted in hostname to uniquely identify machinescustomizers
(java.util.Collection<org.apache.brooklyn.location.jclouds.JcloudsLocationCustomizer>
): Optional location customizersmachineCustomizers
(java.util.Collection<org.apache.brooklyn.api.location.MachineLocationCustomizer>
): Optional machine customizersportforwarding.enabled
(java.lang.Boolean
): Whether to setup port-forwarding to subsequently access the VM (over the ssh port)portforwarding.forwarder
(org.apache.brooklyn.location.jclouds.networking.JcloudsPortForwarderExtension
): The port-forwarder to usebrooklyn.portforwarding.manager
(org.apache.brooklyn.core.location.access.PortForwardManager
): A port-forwarding manager to use at an entity or a location, where supported; note this should normally be a serializable client instance to prevent the creation of multiple disconnected instances via config duplicationgenerate.hostname
(java.lang.Boolean
): Use the nodename generated by jcloudslookupAwsHostname
(java.lang.Boolean
): Whether to lookup the AWS hostname (via a command on the VM), or to just use the IP.connectivityResolver
(org.apache.brooklyn.location.jclouds.ConnectivityResolver
): Optional instance of a ConnectivityResolver that the location will use in favour of DefaultConnectivityResolverjclouds.endpoint
(java.lang.String
): Equivalent to ‘endpoint’; provided for jclouds compatibilityuserName
(java.lang.String
): Equivalent to ‘user’; provided for jclouds compatibilitytemplateOptions
(java.util.Map<java.lang.String, java.lang.Object>
): Additional jclouds template optionstemplateBuilder
(org.jclouds.compute.domain.TemplateBuilder
): A TemplateBuilder instance provided programmatically, to be used when creating a VMtemplateSpec
(java.lang.String
): A jclouds ‘spec’ string consisting of properties and values to be used when creating a VM (in most cases the properties can, and should, be specified individually using other AMP location config keys)jclouds.computeServiceModules
(java.lang.Iterable<? extends com.google.inject.Module>
): Optional Guice modules for a jclouds Compute Service Contextjclouds.computeServiceRegistry
(org.apache.brooklyn.location.jclouds.ComputeServiceRegistry
): Registry/Factory for creating jclouds ComputeService; default is almost always fine, except where tests want to customize behaviourjclouds.linkContext
(org.apache.brooklyn.location.jclouds.domain.JcloudsContext
): Optional link context for jclouds Compute Service Context