GithubHelp home page GithubHelp logo

isabella232 / cloudconfig Goto Github PK

View Code? Open in Web Editor NEW

This project forked from klarna/cloudconfig

0.0 0.0 0.0 558 KB

Cloudconfig is an application that manages configurations for resources in Cloudstack.

License: Other

Ruby 100.00%

cloudconfig's Introduction

Cloudconfig

Build Status Gem Version

Cloudconfig is an application that manages configurations for resources in Cloudstack.

Installation

Add this line to your application's Gemfile:

gem 'cloudconfig'

And then execute:

$ bundle

Or install it yourself as:

$ gem install cloudconfig

Usage

Cloudconfig will configure resources in Cloudstack.

To use the application:

cloudconfig --help

Create config:

cloudconfig config URL API_KEY SECRET_KEY RESOURCE_DIRECTORY

Dryrun can be performed to view potential changes:

cloudconfig update hosts --dryrun

Configuration of resources

Cloudconfig will configure resources in Cloudstack according to resources in yaml files in specified directory.

Resources that currently are handled by cloudconfig:

  • Compute offerings (create, update, delete)
  • Disk offerings (create, update, delete)
  • System offerings (create, update, delete)
  • Host tags (create, delete)
  • Storage tags (create, delete)

Resource files are expected to be structured in following manner in configured resource directory:

.
├── diskofferings.yaml
├── hosts.yaml
├── serviceofferings.yaml
├── storages.yaml 
└── systemofferings.yaml

diskofferings.yaml:

DiskOfferings:
  20gb:   { tags: "SSD",
            displaytext: "20GB SSD Drive",
            iscustomized: false,
            disksize: 200 }

  50GB:   { tags: "SSD",
            displaytext: "50GB SSD Drive",
	iscustomized: false,
            disksize: 50 }

  Custom: { tags: "",
            displaytext: "Customized disk offering size",
            iscustomized: true,
	disksize: 0 }

hosts.yaml:

Hosts:
  host1.example.com: { hosttags: "small,medium",
                       zonename: "example" }

  host2.example.com: { hosttags: "small,medium,large",
                       zonename: "example" }

serviceofferings.yaml:

ServiceOfferings:
  small: { displaytext: "1vCPU, 1GHz, 1GB RAM",
           storagetype: "shared",
           cpunumber: 1,
           cpuspeed: 1000,
           memory: 1024,
           tags: "disk",
           hosttags: "small" }

storage.yaml:

Storages:
  ssd: { tags: "ssd",
         zonename: "example" }

  ssd: { tags: "ssd",
         zonename: "example" }

systemofferings.yaml:

SystemOfferings:
  console-proxy: { displaytext: "1vCPU, 500MHz, 1GB RAM",
                   cpunumber: 1,
                   cpuspeed: 500,
                   memory: 1024,
                   storagetype: "shared",
                   issystem: true,
                   systemvmtype: "consoleproxy" }
  domain-router: { displaytext: "1vCPU, 500MHz, 256MB RAM",
                   cpunumber: 1,
                   cpuspeed: 500,
                   memory: 256,
                   storagetype: "shared",
                   issystem: true,
                   systemvmtype: "domainrouter" }

Testing

Currently only unit testing:

bundle install
rake

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

cloudconfig's People

Contributors

katrinsahlen avatar loa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.