
Security News
Astral Launches pyx: A Python-Native Package Registry
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Cloudster is a Ruby gem that was born to cut the learning curve involved in writing your own CloudFormation templates. If you don't know what a CloudFormation template is, but know about the AWS Cloud, you can still use cloudster to provision your stack like a boss. Checkout the Usage section.
##Installation
gem install cloudster
Create AWS resources :
app_server = Cloudster::Ec2.new(:name => 'AppServer',
:key_name => 'mykey',
:image_id => 'ami_image_id',
:instance_type => 't1.micro',
:security_groups => ["DevSecurityGroup"]
)
#Well I wanted to add chef clients to my app servers , so ..
chef_client = Cloudster::ChefClient.new(
:validation_key => 'asd3e33880889098asdnmnnasd8900890a8sdmasdjna9s880808asdnmnasd90-a',
:server_url => 'http://10.50.60.70:4000',
:node_name => 'project.environment.appserver_1',
:interval => 1800
)
chef_client.add_to(app_server)
elastic_ip = Cloudster::ElasticIp.new(:name => 'AppServerElasticIp')
elastic_ip.add_to(app_server)
app_server_2 = Cloudster::Ec2.new(:name => 'AppServer2',
:key_name => 'mykey',
:image_id => 'ami_image_id'
)
#Add your app servers to the ElasticLoadBalancer
load_balancer = Cloudster::Elb.new(:name => 'LoadBalancer',
:instance_names => ['AppServer', 'AppServer2'],
:listeners => [{:port => 80, :instance_port => 8080, :protocol => 'HTTP'}]
)
database = Cloudster::Rds.new(
:name => 'MySqlDB',
:instance_class => 'db.t1.micro',
:storage_class => '100',
:username => 'admin',
:password => 'admin123',
:engine => 'MySQL',
:multi_az => true
)
storage = Cloudster::S3.new(
:name => 'MyBucket'
)
cloud_front = Cloudster::CloudFront.new(:name => 'CloudFrontResource')
cloud_front.add_to storage
elasticache = Cloudster::ElastiCache.new(
:name => 'CacheResource',
:node_type => 'cache.t1.micro',
:cache_security_group_names => ['default'],
:engine => 'memcached',
:node_count => 3
)
Create an instance for your cloud :
cloud = Cloudster::Cloud.new(:access_key_id => 'accesskeyid', :secret_access_key => 'topsecretaccesskey', :region => 'us-west-1')
Provision the stack :
cloud.provision(:resources => [app_server, app_server_2, load_balancer, database], :stack_name => 'TestStack', :description => 'Description of the stack')
Get the CloudFormation template for the stack :
cloud.template(:resources => [app_server, app_server_2, load_balancer, database, storage, elasticache], :description => 'Description of the stack')
Get the CloudFormation template for a resource as a Ruby Hash :
app_server.template
Cloudster can also interact with the provisioned AWS Cloud :
cloud.update(:resources => [app_server, app_server_2], :stack_name => 'TestStack', :description => 'Description of the stack')
cloud.delete(:stack_name => 'TestStack')
cloud.outputs(:stack_name => 'TestStack')
cloud.events(:stack_name => 'TestStack')
cloud.describe(:stack_name => 'TestStack')
cloud.resources(:stack_name => 'TestStack')
cloud.status(:stack_name => 'TestStack')
cloud.get_database_endpoints(:stack_name => 'TestStack')
cloud.get_ec2_details(:stack_name => 'TestStack')
cloud.get_rds_details(:stack_name => 'TestStack')
cloud.get_elb_details(:stack_name => 'TestStack')
cloud.get_key_pairs
cloud.get_security_groups
I'm trying to add every AWS resource to cloudster, one by one. If you don't find what you need, let me know and I'll try to get the feature included ASAP, or you can submit a pull request with the feature - that would be awesome!
Got some love for Cloudster? Sweet!
Log the bug in the issue tracker. Be sure to include all relevant information, like the versions of Cloudster and Ruby you're using. A gist of the code that caused the issue as well as any error messages are also very helpful.
You can use the Issues page to ask a new question for now. This is how you do it:
Bugs and feature requests that include patches are much more likely to get attention. Here are some guidelines that will help ensure your patch can be applied as quickly as possible:
Use Git and GitHub: The easiest way to get setup is to fork the cloudster repo.
Write unit tests: If you add or modify functionality, it must include unit tests. I use RSpec to test cloudster. If you are not an RSpec expert, if you let me know, I can help you write the specs.
Update the README
: If the patch adds or modifies a major feature,
modify the README.md
file to reflect that. Again if you're not an
expert with Markdown syntax, it's really easy to learn. Check out Prose.io to
try it out.
Push it: Once you're ready, push your changes to a topic branch and add a note to the ticket with the URL to your branch. Or, say something like, "you can find the patch on johndoe/foobranch". I also gladly accept Github pull requests.
NOTE: I will take in whatever I can get. If you prefer to attach diffs in comments on issues, that's fine; but do know that someone will need to take the diff through the process described above and this can hold things up considerably.
##License
MIT
Free Software, Forever . YEAH !
To Fog for making AWS APIs simple
To Sinatra README for having a nice 'Contribute' section which I'm using(with minor changes) for Cloudster.
FAQs
Unknown package
We found that cloudster demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.
Security News
The latest Opengrep releases add Apex scanning, precision rule tuning, and performance gains for open source static code analysis.