Skip to content

mclarkson/obdi-aws-p2ec2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

obdi-aws-p2ec2

Creates AWS EC2 Instances from Full System Backups.

Dependencies: obdi-aws-ec2lib

Known Users: obdi-rsyncbackup

Todo

Screenshot

What is it?

This plugin writes files to a volume mounted into AWS management instance ultimately creating a new AWS instance from those files.

No entry is made in the sidebar for this plugin since this plugin is accessed from other compatible plugins.

For example, when this plugin is installed, the obdi-rsyncbackup plugin will show a 'Create Amazon EC2 Instance' button in the file viewer when it thinks it has found a root filesystem. Pressing the button will take the user to this plugin and allow them to create an Amazon Virtual Machine.

Installation

Installing the plugin

Configuration

Set the AWS_ACCESS_KEY_ID_1 json object in the environment, using the Admin interface.

{
    "Aws_access_key_id":"ALIENX2KD6OINVA510NQ",
    "Aws_secret_access_key":"wHdlwoigU637fgnjAu+IRNVHfT-EXnIU5C2MbiQd",
    "Aws_obdi_worker_instance_id":"i-e29eg362",
    "Aws_obdi_worker_region":"us-east-1",
    "Aws_obdi_worker_url":"https://1.2.3.4:4443/",
    "Aws_obdi_worker_key":"secretkey",
    "Aws_filter":"key-name=groupkey",
    "Aws_keyname":"groupkey",
    "Aws_securitygroups":["groupkey"],

    "Aws_dnsserver_ip":"10.17.3.163",
    "Aws_dnsdomain":"karmalab.net",
    "Aws_gateway":"10.17.0.1",
    "Aws_obdi_worker_ip":"172.31.16.14",
    "Aws_shell_user_name":"centos",
    "Aws_shell_ssh_key_b64":"LS0tLSTXdURGxLU...1ySBQUklWQVRFIEtFWS0tLS0t"
}

The following variables are used up until OS modifications by the Javascript/HTML code.

Aws_access_key_id

AWS API access key ID

Aws_secret_access_key

AWS API password

Aws_obdi_worker_instance_id

The AWS instance that contains the Obdi worker. This AWS instance will be used to copy, mount and modify the backup image.

Aws_obdi_worker_region

The region the Obdi worker resides in.

Aws_obdi_worker_url

The URL used to access the Obdi worker.

Aws_obdi_worker_key

The password for the Obdi worker.

Aws_filter

The global filter to apply, if any. For example, you might want to filter all results by 'key-name=ourkeyname' or 'owner-id=25513944296'.

Aws_keyname

The key name used when creating a new EC2 Instance.

Aws_securitygroups

List of security group IDs (not names) that instances will belong to when creating a new EC2 Instance. This option should be called Aws_securitygroupids.

Aws_subnetid

A subnet ID of a subnet to put the new instance in.

The following variables are used by the Bash script when modifying the OS:

Aws_dnsserver_ip and Aws_dnsdomain

Should both be set to avoid an error message. Affects the final '/etc/resolv.conf'.

Aws_gateway

Affects the networking in '/etc/sysconfig/network-scripts/ifcfg-eth0'.

Aws_obdi_worker_ip

The IP address of the AWS instance, Aws_obdi_worker_instance_id. This is the address as seen from the Backup server.

Aws_shell_user_name

User name to use to connect to Aws_obdi_worker_ip using ssh.

Aws_shell_ssh_key_b64

The base64 encoded key file.

Dev

get-not-so-secret-data

Gets Json Object Capability data for AWS_ACCESS_KEY_ID_1 for an environment. This data will be stored in the Browser's DOM so Aws_secret_access_key and Aws_obdi_worker_key have obfuscated values.

# Log in

$ ipport="127.0.0.1:443"

$ guid=`curl -ks -d '{"Login":"nomen.nescio","Password":"password"}' \
  https://$ipport/api/login | grep -o "[a-z0-9][^\"]*"`

# Get [not-so-] secret AWS data from the Capability AWS_ACCESS_KEY_ID_1

$ curl -k "https://$ipport/api/nomen.nescio/$guid/aws-p2ec2/get-not-so-secret-data?env_id=1"

osedits-centos6

TODO: Document parameter options.

TODO: Document req params for capability object.

Edits Centos 6 OS.

# Log in

$ ipport="127.0.0.1:443"

$ guid=`curl -ks -d '{"Login":"nomen.nescio","Password":"password"}' \
  https://$ipport/api/login | grep -o "[a-z0-9][^\"]*"`

# Edit the OS

$ curl -ks -X POST "https://$ipport/api/nomen.nescio/$guid/aws-p2ec2/osedits-centos6?env_id=1&task_id=1&path=/nosnap/centosbox004&force=true&umountdir=true"