Giter VIP home page Giter VIP logo

henchman's People

Contributors

asf-jenkins avatar baskaran-md avatar jlin21 avatar sergeycherepanov avatar sudharsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

henchman's Issues

Transport config should be used by machines

We're passing it as one of the parameters to inventoryLoader interface. This is wrong as this assumes that the transport is going to be same for all the machines. This may not be the case and they may have different configurations. Different transport among different machines is a possibility too.

Investigate the idea of modules that are not files

Complex modules can be a folder that has all the dependencies as part of the module directory. The entry point of such module should be an 'exec' script. Can bundle dependencies of the module as part of its directory.

Requires changes in the executor to figure out if the module being executed is a file or a directory.

shell module fails when the command has = in it.

Example:

    shell: cmd="sed -i 's,conf_security_ldap.user.store.enable=true,conf_security_ldap.user.store.enable=false,g' {{ vars.edge_mgmt_token_file }}"

Error:

2015/10/16 17:52:50 Module shell: Module args are invalid

Build script to produce artefacts from the CI

Come up with a build script that produces tarballs for distribution for multiple archs. It would have the modules directory as part of the tarball as well and should be self-contained.

Create a better testing suite

  • Also make tests for invalid cases
  • Check test coverage to see test cases we may have missed
  • Check out table driven tests

Allow variables at inventory level

  1. Allow variables to be defined at group level
  2. Allow individual host level overrides
  3. Allow overrides of 'henchman' specific variables starting with 'henchman_< > ' ( henchman_user for example)

Figure out how different execution steps for modules can be added

Currently task run does an 'exec', 'put', 'exec'. This sequence is not valid for all kinds of modules. We need to define a way of doing it
Eg. modules like 'copy' that copy stuff from one location to another on the box or by default copy from the henchman machine to the remote machine just do a put and exec ( when permissions are changed)

Throw Error for duplicate keys in YAML file

Currently the YAML unmarshaller (including the custom ones) cannot handle multiple include cases:

name: "Sample plan"
vars:
  hello: world
  foo: scar
  include:
    - test/vars/vars.yaml
  include:
    - test/vars/vars2.yaml
  spam: eggs
tasks:
  - name: Sample task that does nothing
    action: cmd="ls"
  - name: Second task
    action: cmd="echo"
    ignore_errors: true

This won't throw a "multiple includes error" it will just take any value from any include field (depends on which value was added last) as long as the include value follows the right format.

Throw Error for invalid Inventory types.

Inventories should follow a...


---
groups (required):
  group_name (required):
    hosts (required):
      - "192.168.1.1"
      - "192.168.1.2"
    vars (optional):
      ulimit: 300
      henchman_keyfile: "~/.ssh/ssh_key"
  app:
    hosts:
      - "1.1.1.1"
      - "1.1.1.4"
hostvars (optional):
  "192.168.1.1":
     keyfile: "~/.ssh/another_key"
     henchman_user: "root"
     ulimit: 240
     files: 240
  "1.1.1.1":
     ulimit: 240
     files: 240

curl module

Using only std python libs (httplib, urllib, urllib2).
httplib - is a parsing nightmare
urllib/urllib2 can only handle GET and POST

OR

Find a way to use without stdlibs that won't cause dependency probs.
Checkout issue #44

For now have it use basic RESTful calls.

result["output"] = {'status': status_code, 'headers': headers, 'body': body}

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.