Switch branches/tags
rel/jclouds-2.1.1 rel/jclouds-2.1.1-rc1 rel/jclouds-2.1.0 rel/jclouds-2.1.0-rc3 rel/jclouds-2.1.0-rc2 rel/jclouds-2.1.0-rc1 rel/jclouds-2.0.3 rel/jclouds-2.0.3-rc1 rel/jclouds-2.0.2 rel/jclouds-2.0.2-rc1 rel/jclouds-2.0.1 rel/jclouds-2.0.1-rc2 rel/jclouds-2.0.1-rc1 rel/jclouds-2.0.0 rel/jclouds-2.0.0-rc3 rel/jclouds-2.0.0-rc1 rel/jclouds-1.9.3 rel/jclouds-1.9.3-rc1 rel/jclouds-1.9.2 rel/jclouds-1.9.2-rc1 jclouds-1.9.1 jclouds-1.9.1-rc1 jclouds-1.9.0 jclouds-1.9.0-rc2 jclouds-1.9.0-rc1 jclouds-1.8.1 jclouds-1.8.1-rc1 jclouds-1.8.0 jclouds-1.8.0-rc1 jclouds-1.7.3 jclouds-1.7.3-rc1 jclouds-1.7.2 jclouds-1.7.2-rc2 jclouds-1.7.2-rc1 jclouds-1.7.1 jclouds-1.7.1-rc1 jclouds-1.7.0 jclouds-1.7.0-rc2 jclouds-1.7.0-rc1 jclouds-1.6.3 jclouds-1.6.3-rc2 jclouds-1.6.3-rc1 jclouds-1.6.2-incubating jclouds-1.6.2-incubating-rc2 jclouds-1.6.2-incubating-rc1 jclouds-1.6.2-incubating-rc0 jclouds-1.6.1-incubating jclouds-1.6.1-incubating-rc3 jclouds-1.6.1-incubating-rc2 jclouds-1.6.1-incubating-rc1 jclouds-1.6.1-incubating-rc0 jclouds-1.6.0 jclouds-1.6.0-rc.5 jclouds-1.6.0-rc.4 jclouds-1.6.0-rc.3 jclouds-1.6.0-rc.2 jclouds-1.6.0-rc.1 jclouds-1.6.0-alpha.4 jclouds-1.6.0-alpha.3 jclouds-1.6.0-alpha.2 jclouds-1.6.0-alpha.1 jclouds-1.5.10 jclouds-1.5.9 jclouds-1.5.8 jclouds-1.5.7 jclouds-1.5.6 jclouds-1.5.5 jclouds-1.5.4 jclouds-1.5.3 jclouds-1.5.2 jclouds-1.5.1 jclouds-1.5.0 jclouds-1.5.0-rc.1 jclouds-1.5.0-beta.11 jclouds-1.5.0-beta.10 jclouds-1.5.0-beta.9 jclouds-1.5.0-beta.8 jclouds-1.5.0-beta.7 jclouds-1.5.0-beta.6 jclouds-1.5.0-beta.5 jclouds-1.5.0-beta.4 jclouds-1.5.0-beta.3 jclouds-1.5.0-beta.2 jclouds-1.5.0-beta.1 jclouds-1.5.0-alpha.6 jclouds-1.5.0-alpha.5 jclouds-1.5.0-alpha.4 jclouds-1.5.0-alpha.3 jclouds-1.5.0-alpha.2 jclouds-1.5.0-alpha.1 jclouds-1.4.2 jclouds-1.4.1 jclouds-1.4.0 jclouds-1.4.0-rc.3 jclouds-1.4.0-rc.2 jclouds-1.4.0-rc.1 jclouds-1.3.2 jclouds-1.3.1 jclouds-1.3.0 jclouds-1.3.0-rc-2
Nothing to show
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


= Bring Your Own Nodes to the jclouds ComputeService =
The bring your own node provider (byon) allows you to specify a source which jclouds will read
nodes from.  Using this, you can have jclouds control your standalone machines, or even cloud
hosts that are sitting idle.

== Constraints ==
The byon provider only supports the following functions of ComputeService:
  * listNodes
  * listNodesDetailsMatching
  * getNodeMetadata
  * runScriptOnNodesMatching

== How to use the byon provider == 
The byon provider requires you supply a list of nodes using a property.  Here are 
the valid properties you can use:
  * byon.endpoint - url to access the list, can be http://, file://, classpath://
  * byon.nodes    - inline defined yaml in string form.


The identity and credential fields of the ComputeServiceContextFactory are ignored.

=== Java example ===

Properties props = new Properties();

// if you built the yaml string by hand
props.setProperty("byon.nodes", stringLiteral);

// or you can specify an external reference
props.setProperty("byon.endpoint", "file://path/to/byon.yaml");

// or you can specify a file in your classpath
props.setProperty("byon.endpoint", "classpath:///byon.yaml");

context = new ComputeServiceContextFactory().createContext("byon", "foo", "bar", 
               ImmutableSet.<Module> of(new JschSshClientModule()), props);

== File format == 
You must define your nodes in yaml, and they must be in a collection called nodes.

Here are the properties:

  * id             - opaque unique id
  * name           - optional; user specified name
  * description    - optional; long description of this node 
                               * note this is not yet in jclouds NodeMetadata
  * hostname       - name or ip address to contact the node on
  * location_id    - optional; correlates to a ZONE-scoped Location
                               * note that if present for one node, must be present for all
  * os_arch        - ex. x86 
  * os_family      - must conform to org.jclouds.compute.domain.OsFamily in lower-hyphen format
                     ex. rhel, ubuntu, centos, debian, amzn-linux
  * os_description - long description of the os ex. Ubuntu with lamp stack 
  * os_version     - normalized to numbers when possible. ex. for centos: 5.3, ubuntu: 10.10 
  * login_port     - optional; alternate port for ssh access
  * group          - primary group of the machine. ex. hadoop 
  * tags           - optional; list of arbitrary tags. 
                               * note this list is not yet in jclouds NodeMetadata 
  * username       - primary login user. ex. ubuntu, toor, root 
  * sudo_password  - optional; when a script is run with the "runAsRoot" option true, yet the
                               username is not root, a sudo command is invoked. If sudo_password
                               is set, the contents will be passed to sudo -S.  
                               Ex. echo 'foobar'| sudo -S init 5
  one of:
    * credential     - RSA private key or password 
    * credential_url - location of plain-text RSA private key or password.
                       ex. file:///home/me/.ssh/id_rsa

Note that username and credentials are optional if a CredentialStoreModule is configured in 

=== Example File ===

    - id: i-sdfkjh7
      name: cluster-1
      description: accounting analytics cluster
      hostname: cluster-1.mydomain.com
      location_id: virginia
      os_arch: x86
      os_family: rhel
      os_description: redhat with CDH
      os_version: 5.3
      group: hadoop
          - vanilla
      username: myUser
      credential: |
                  -----BEGIN RSA PRIVATE KEY-----
                  -----END RSA PRIVATE KEY-----
      sudo_password: go panthers!