Coder Social home page Coder Social logo

bang's People

Contributors

fr33jc avatar sjmc7 avatar trogluddite avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bang's Issues

Handle rate limiting of cloud provider API requests

As below type of situation. When spinning up lots of instances, and facing rate-limiting, bang should gracefully acknowledge the rate-limiting, and slow down or pause, then resume.

Process ServerDeployer:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(_self._args, *_self._kwargs)
File "/usr/local/lib/python2.7/dist-packages/bang/deployers/deployer.py", line 66, in run
self.deploy()
File "/usr/local/lib/python2.7/dist-packages/bang/deployers/deployer.py", line 40, in deploy
action()
File "/usr/local/lib/python2.7/dist-packages/bang/deployers/cloud.py", line 112, in create
security_groups=self.security_groups,
File "/usr/local/lib/python2.7/dist-packages/bang/providers/hpcloud/init.py", line 74, in create_server
s = super(HPNova, self).create_server(_args, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/bang/providers/openstack/init.py", line 210, in create_server
*_kwargs
File "/usr/local/lib/python2.7/dist-packages/novaclient/v1_1/servers.py", line 590, in create
*_boot_kwargs)
File "/usr/local/lib/python2.7/dist-packages/novaclient/v1_1/base.py", line 162, in _boot
return_raw=return_raw, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/novaclient/base.py", line 145, in _create
_resp, body = self.api.client.post(url, body=body)
File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 230, in post
return self._cs_request(url, 'POST', *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 214, in _cs_request
*_kwargs)
File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 196, in _time_request
resp, body = self.request(url, method, *_kwargs)
File "/usr/local/lib/python2.7/dist-packages/novaclient/client.py", line 190, in request
raise exceptions.from_response(resp, body, url, method)
OverLimit: This request was rate-limited

Plans to support Neutron?

I realize Neutron is huge.

The idea of fully supporting provisioning of networks, routers, subnets etc would be pretty huge, but I see at least two subsets of neutron that need attention from my perspective.

  1. security groups. support for all SG activity has moved out of nova and into neutron. There is currently pull-though from nova, but I have occasionally seen problems with it, and it is likely to go away, leaving no ability to manage SG
  2. load balancers. Libra is going away, and the new LBaaS, at least in HPC, is going to be Neutron based.

Thanks!

bang compatability with newer ansible

Seems like anything newer than Ansible 1.2 breaks bang. Current release is Ansible 1.4.4. Are there plans to bring bang up to date to work with the latest Ansible?

IAM Role support in bang for aws?

I've been having trouble figuring out how to add IAM roles to AWS server definition files. I see an example in a rightscale server definition file that does something like:

rightscale:
  cloud_specific_attributes:
      iam_instance_profile: <instance profile name>

But I can't seem to be able to do the same thing for aws.

Has this been implemented yet, or is this still a todo for bang?

Aliasing config_scopes in local scope

It'd be useful to be able to rename a global config in the local scope. This would allow multiple server roles to share a local config_scope without copy and pasting; a mixture of reusing globally defined config sections with the flexibility of local config_scopes.

For example:

- name: logging_servers
  # Inside a server role definition:
  config_scopes:
      # Could put 'elasticsearch' here but would need to copy
      # it for each role that requires it
      - ....
  config_aliases:
      # Playbook can refer to {{elasticsearch.something}}
      - elasticsearch: elasticsearch_logging

- name: monitoring
  config_aliases:
      - elasticsearch: elasticsearch_logging

# Global scope
elasticsearch_logging:
    cluster_name: logging

# Second set of elasticsearch config options
elasticsearch_documents:
    cluster_name: documents

log tracebacks to a separate log

The console output should obey the user-configurable logging settings. Unknown exceptions should have a reasonable summary logged as ERROR. All tracebacks should go into a detailed error log.

Note that the traceback log should always be active to obviate the need for "reproducing" production errors just to get a traceback.

bang explosion when adding new server type

when adding new server type, if you run --list with server type in the stack config, bang explodes.

running bang to deploy the server works fine, but if you're doing a --list to check the status of the stack before altering it and everything goes explodey, its a bit of a slowdown to figure out what the problem is.

Could bang return sorted lists

When bang inventory is returning a list of hosts or IP addresses, I would like to see it return sorted lists. Reason is, currently it returns seemingly random list each time; when these lists are then used by ansible, say as vars in a jinja template for a config file, they might be in a different order each time, so that even if the actual list hasn't changed, ansible will rewrite the config file simply because the inventory list bang gave it is in a different order. If all inventory lists were returned sorted, that problem should be eliminated, except in cases of actual differences in the list. I can't see this would cause any other issues ....

Plans to support cinder?

Are there plans to support cinder, with the goal of being able to build persistent volumes, attach them to instances and manage the connection (eg metadata notations). Thanks!

Bang doesn't allow multi-az deployment

It would be nice if bang was able to run across availability zones (and regions, though that likely involves other infrastructure work). As a suggestion, it could be given a list of availability zones and attempt, where possible, to balance servers evenly among them when new servers are required.

From a quick look, it would make sense if the availability zones and region(s) could be specified for the stack (instead of per host group). Bang could then figure out which servers and where.

There shouldn't be any networking issues for bang to deal with, since it deals with external IPs only.

Support for serialized hostnames

Is there any current method, or future plan to provide any kind of serialized naming as an option.

currently I might get:
project-mydb-o0txfxszvzxl6
project-mydb-ps7b3pgy3zywr
project-mydb-a7bbzmxncth0e

But what if I'd really like to have
project-mydb-01
project-mydb-02
project-mydb-03

or even
project-mydb-01-o0txfxszvzxl6
project-mydb-02-ps7b3pgy3zywr
project-mydb-03-a7bbzmxncth0e

Thanks!

public vs private IP

In my environment - HP Cloud - I get only public IP (15.x.x.x in this case) IP's returned for bang --list.
Is there a way to get the private (10.x.x.x)? They are certainly both available from nova (both the python client and from the server apis) ....

I do recognize that I'm normally using an older release due to dependencies, but is this available in a later release? I'm was looking a little at the code hoping to find a simple way to add a command-line switch for this, but I'm not much of a python hacker frankly :)

Add Docker provider

It would be nice if bang could instantiate and configure a local Docker container.

Also, support for instantiating and configuring docker instances up in the cloud would be nice.

EC2 'name' isn't populated

Bang should populate 'name' for ec2 instances with a server's stack/role. Currently they're left blank.

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.