Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Rex::Commands::Cloud(3User Contributed Perl DocumentatiRex::Commands::Cloud(3)

NAME
       Rex::Commands::Cloud - Cloud Management Commands

DESCRIPTION
       With this Module	you can	manage different Cloud services. Currently it
       supports	Amazon EC2, Jiffybox and OpenStack.

       Version <= 1.0: All these functions will	not be reported.

SYNOPSIS
	use Rex::Commands::Cloud;

	cloud_service "Amazon";
	cloud_auth "your-access-key", "your-private-access-key";
	cloud_region "ec2.eu-west-1.amazonaws.com";

	task "list", sub {
	  print	Dumper cloud_instance_list;
	  print	Dumper cloud_volume_list;
	};

	task "create", sub {
	  my $vol_id = cloud_volume create => {	size =>	1, zone	=> "eu-west-1a", };

	  cloud_instance create	=> {
	      image_id => "ami-xxxxxxx",
	      name    => "test01",
	      key    =>	"my-key",
	      volume  => $vol_id,
	      zone    => "eu-west-1a",
	    };
	};

	task "destroy",	sub {
	  cloud_volume detach => "vol-xxxxxxx";
	  cloud_volume delete => "vol-xxxxxxx";

	  cloud_instance terminate => "i-xxxxxxx";
	};

EXPORTED FUNCTIONS
   cloud_service($cloud_service)
       Define which cloud service to use.

       Services
	   Amazon
	   Jiffybox
	   OpenStack

   cloud_auth($param1, $param2,	...)
       Set the authentication for the cloudservice.

       For example for Amazon it is:

	cloud_auth($access_key,	$secret_access_key);

       For JiffyBox:

	cloud_auth($auth_key);

       For OpenStack:

	cloud_auth(
	 tenant_name =>	'tenant',
	 username    =>	'user',
	 password    =>	'password',
	);

   cloud_region($region)
       Set the cloud region.

   cloud_instance_list
       Get all instances of a cloud service.

	task "list", sub {
	  for my $instance (cloud_instance_list()) {
	    say	"Arch  : " . $instance->{"architecture"};
	    say	"IP   :	" . $instance->{"ip"};
	    say	"ID   :	" . $instance->{"id"};
	    say	"State : " . $instance->{"state"};
	  }
	};

       There are some parameters for this function that	can change the
       gathering of ip addresses for some cloud	providers (like	OpenStack).

	task "list", sub {
	  my @instances	= cloud_instance_list
			     private_network =>	'private',
			     public_network  =>	'public',
			     public_ip_type  =>	'floating',
			     private_ip_type =>	'fixed';
	};

   cloud_volume_list
       Get all volumes of a cloud service.

	task "list-volumes", sub {
	  for my $volume (cloud_volume_list()) {
	    say	"ID	: " . $volume->{"id"};
	    say	"Zone	 : " . $volume->{"zone"};
	    say	"State	 : " . $volume->{"state"};
	    say	"Attached : " .	$volume->{"attached_to"};
	  }
	};

   cloud_network_list
       Get all networks	of a cloud service.

	task "network-list", sub {
	  for my $network (cloud_network_list()) {
	    say	"network  : " .	$network->{network};
	    say	"name	 : " . $network->{name};
	    say	"id	: " . $network->{id};
	  }
	};

   cloud_image_list
       Get a list of all available cloud images.

   cloud_upload_key
       Upload public SSH key to	cloud provider

	private_key '~/.ssh/mykey
	public_key  '~/.ssh/mykey.pub';

	task "cloudprovider", sub {
	  cloud_upload_key;

	  cloud_instance create	=> {
	    ...
	  };
	};

   get_cloud_instances_as_group
       Get a list of all running instances of a	cloud service. This can	be
       used for	a group	definition.

	group fe  => "fe01", "fe02", "fe03";
	group ec2 => get_cloud_instances_as_group();

   cloud_instance($action, $data)
       This function controls all aspects of a cloud instance.

   create
       Create a	new instance.

	cloud_instance create => {
	    image_id =>	"ami-xxxxxx",
	    key	   => "ssh-key",
	    name    => "fe-ec2-01",  # name is not necessary
	    volume  => "vol-yyyyy",  # volume is not necessary
	    zone    => "eu-west-1a",  #	zone is	not necessary
	    floating_ip	 => "89.39.38.160" # floating_ip is not	necessary
	  };

   start
       Start an	existing instance

	cloud_instance start =>	"instance-id";

   stop
       Stop an existing	instance

	cloud_instance stop => "instance-id";

   terminate
       Terminate an instance. This will	destroy	all data and remove the
       instance.

	cloud_instance terminate => "i-zzzzzzz";

   get_cloud_regions
       Returns all regions as an array.

   cloud_volume($action	, $data)
       This function controlls all aspects of a	cloud volume.

   create
       Create a	new volume. Size is in Gigabytes.

	task "create-vol", sub {
	  my $vol_id = cloud_volume create => {	size =>	1, zone	=> "eu-west-1a", };
	};

   attach
       Attach a	volume to an instance.

	task "attach-vol", sub {
	  cloud_volume attach => "vol-xxxxxx", to => "server-id";
	};

   detach
       Detach a	volume from an instance.

	task "detach-vol", sub {
	  cloud_volume detach => "vol-xxxxxx", from => "server-id";
	};

   delete
       Delete a	volume.	This will destroy all data.

	task "delete-vol", sub {
	  cloud_volume delete => "vol-xxxxxx";
	};

   get_cloud_floating_ip
       Returns first available floating	IP

	task "get_floating_ip",	sub {

	  my $ip = get_cloud_floating_ip;

	  my $instance = cloud_instance	create => {
	     image_id => 'edffd57d-82bf-4ffe-b9e8-af22563741bf',
	     name => 'instance1',
	     plan_id =>	17,
	     floating_ip => $ip
	   };
	};

   cloud_network
   create
       Create a	new network.

	task "create-net", sub {
	  my $net_id = cloud_network create => { cidr => '192.168.0.0/24', name	=> "mynetwork",	};
	};

   delete
       Delete a	network.

	task "delete-net", sub {
	  cloud_network	delete => '18a4ccf8-f14a-a10d-1af4-4ac7fee08a81';
	};

   get_cloud_availability_zones
       Returns all availability	zones of a cloud services. If available.

	task "get-zones", sub {
	  print	Dumper get_cloud_availability_zones;
	};

   get_cloud_plans
       Retrieve	information of the available cloud plans. If supported.

   get_cloud_operating_systems
       Retrieve	information of the available cloud plans. If supported.

   cloud_object
       Returns the cloud object	itself.

perl v5.24.1			  2016-07-16	       Rex::Commands::Cloud(3)

NAME | DESCRIPTION | SYNOPSIS | EXPORTED FUNCTIONS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Rex::Commands::Cloud&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help