mirror of
https://github.com/puppetlabs/vmpooler-provider-ec2.git
synced 2026-01-26 02:28:40 -05:00
Added aws dependency and renamed directories
rename gce to aws rename gce to aws rename gce to aws create_vm method implimented create_vm method connected to ec2 setup tags properly, and retireve then in get_vm begin disk and snapshop, but we dont have perms add specs for get_vm and vms_in_pool add spec for create_vm add spec for destroy_vm update readme add a new class lib/vmpooler/aws_setup.rb to do the provisioning of nodes adding spec tests adding net:ssh lib for the provisioning of nodes adding option to provision vm once ready fix aws_setup setup of nodes once running
This commit is contained in:
parent
78946ca2b9
commit
c3c1a8e1e5
21 changed files with 2650 additions and 1 deletions
53
README.md
53
README.md
|
|
@ -1 +1,52 @@
|
|||
# vmpooler-provider-aws
|
||||
# vmpooler-provider-aws
|
||||
|
||||
This is a provider for [VMPooler](https://github.com/puppetlabs/vmpooler) allows using aws to create instances, disks,
|
||||
snapshots, or destroy instances for specific pools.
|
||||
|
||||
## Usage
|
||||
|
||||
Include this gem in the same Gemfile that you use to install VMPooler itself and then define one or more pools with the `provider` key set to `aws`. VMPooler will take care of the rest.
|
||||
See what configuration is needed for this provider in the [example file](https://github.com/puppetlabs/vmpooler-provider-aws/blob/main/vmpooler.yaml.example).
|
||||
|
||||
Examples of deploying VMPooler with extra providers can be found in the [puppetlabs/vmpooler-deployment](https://github.com/puppetlabs/vmpooler-deployment) repository.
|
||||
|
||||
aws authorization is handled via two required ENV vars
|
||||
|
||||
1. ABS_AWS_ACCESS_KEY
|
||||
2. ABS_AWS_SECRET_KEY
|
||||
|
||||
### Provisioning the new nodes
|
||||
|
||||
When you add the pool config `provision: true` to a pool, the new VMs will also get initialized with extra steps to setup the sshd config via NET:SSH
|
||||
These steps expect two environment vars
|
||||
1. ROOT_KEYS_SCRIPT: (optional) the URI location of a script (eg https in github) that will be run to setup keys. If not set, this will be skipped
|
||||
2. KEY_FILE_LOCATION: (required) the location on local disk where the ssh key resides for VMPooler to connect via SSH to the AWS node
|
||||
|
||||
### DNS
|
||||
AWS will setup a private ip and private dns hostname for the VM once running. Optionally we can setup a human readable DNS entry to resolve the VMPooler provider `spicy-proton` fqdn
|
||||
|
||||
DNS is integrated via Google's CloudDNS service. To enable, a CloudDNS zone name must be provided in the config (see the example yaml file dns_zone_resource_name)
|
||||
|
||||
An A record is then created in that zone upon instance creation with the VM's internal IP, and deleted when the instance is destroyed.
|
||||
|
||||
### Labels
|
||||
This provider adds tags to all resources that are managed
|
||||
|
||||
|resource|labels|note|
|
||||
|---|---|---|
|
||||
|instance|vm=$vm_name, pool=$pool_name|for example vm=foo-bar, pool=pool1|
|
||||
|disk|vm=$vm_name, pool=$pool_name|for example vm=foo-bar and pool=pool1|
|
||||
|snapshot|snapshot_name=$snapshot_name, vm=$vm_name, pool=$pool_name| for example snapshot_name=snap1, vm=foo-bar, pool=pool1|
|
||||
|
||||
Also see the usage of vmpooler's optional purge_unconfigured_resources, which is used to delete any resource found that
|
||||
do not have the pool label, and can be configured to allow a specific list of unconfigured pool names.
|
||||
|
||||
### Pre-requisite
|
||||
|
||||
- An IAM user must exist in the target AWS account with permissions to create, delete vms etc
|
||||
- if using DNS, a DNS zone needs to be created in CloudDNS, and configured in the provider's config section with the name of that zone (dns_zone_resource_name). When not specified, the DNS setup and teardown is skipped.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
vmpooler-provider-aws is distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). See the [LICENSE](LICENSE) file for more details.
|
||||
Loading…
Add table
Add a link
Reference in a new issue