Code Monkey home page Code Monkey logo

saltstack / salt Goto Github PK

View Code? Open in Web Editor NEW
13.9K 535.0 5.4K 520.85 MB

Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:

Home Page: https://repo.saltproject.io/

License: Apache License 2.0

Shell 2.05% Python 96.52% C 0.01% HTML 0.03% NSIS 0.28% Makefile 0.01% Batchfile 0.05% SaltStack 0.11% Scheme 0.01% PowerShell 0.56% Roff 0.01% Dockerfile 0.01% Rich Text Format 0.01% Scilab 0.01% Jinja 0.15% Cython 0.01% C# 0.18% XSLT 0.01%
python configuration-management remote-execution infrastructure-management zeromq event-stream event-management cloud-providers cloud-management cloud-provisioning

salt's People

Contributors

akm0d avatar basepi avatar cbosdo avatar ch3ll avatar cro avatar cvrebert avatar dwoz avatar garethgreenaway avatar gtmanfred avatar jacksontj avatar jacobhammons avatar jfindlay avatar kiorky avatar meaksh avatar mgwilliams avatar mirceaulinic avatar mkleb avatar nicholasmhughes avatar nmadhok avatar s0undt3ch avatar sejeff avatar sjorge avatar smithsamuelm avatar techhat avatar terminalmage avatar thatch45 avatar twangboy avatar utahdave avatar waynew avatar whiteinge 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  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

salt's Issues

list jobs option

Generate a report of what jobs have run and what the results are

salt-ftp

Salt needs to be able to do basic ftp

Facter identifications

the minion can be "id"-ed with the hostname value right now. But I want to be able to access minions based on Facter data, this means that the facter data needs to be moved into the config.py module and included as part of the opts variable.
This also means that other forms of data should be accesible from config in the futue.

Network persistence

Make sure that when a master is restarted the minions still work without requiring a restart

Add a list of module dirs

Make it so that a list of module directories can be loaded into the minion. This will allow third party module devs to add modules without adding them to the python site-packages.

Compound command execution

This may be pie in the sky, but I want to be able to execute multiple commands on the minions without having to execute multiple publishes

Make threading configurable for the minion

Right now in the minion when a publication is matched the execution happens in a thread. This should be configurable to execute in a multiprocess, so we need to add the option to the config, import multiprocessing in a try block and fall back to threading is multiprocessing is not available

Test module

Create a test module for pings and like operations

[PATCH] make config switch select the config dir

If I have correctly read the code salt-master not only reads the master config file but also the minion configuration. With the "config" option you can only choose another master configuration file. The following is just an idea and not very well tested.

 The patch changes the behavior of the "config" option. It points now
 to the config dir and assumes, that the config files are named "master"
 and "minion".

 Signed-off-by: Matthias Teege <[email protected]>
 ---
  salt/__init__.py |    8 ++++----
  salt/master.py   |    2 +-
  2 files changed, 5 insertions(+), 5 deletions(-)

 diff --git a/salt/__init__.py b/salt/__init__.py
 index 7572fc8..3ac2202 100644
 --- a/salt/__init__.py
 +++ b/salt/__init__.py
 @@ -25,7 +25,7 @@ class Master(object):
      '''
      def __init__(self):
          self.cli = self.__parse_cli()
 -        self.opts = salt.config.master_config(self.cli['config'])
 +        self.opts = salt.config.master_config(self.cli['config'] + '/master')

      def __parse_cli(self):
          '''
 @@ -41,7 +41,7 @@ class Master(object):
          parser.add_option('-c',
                  '--config',
                  dest='config',
 -                default='/etc/salt/master',
 +                default='/etc/salt',
                  help='Pass in an alternative configuration file')

          options, args = parser.parse_args()
 @@ -70,7 +70,7 @@ class Minion(object):
      '''
      def __init__(self):
          self.cli = self.__parse_cli()
 -        self.opts = salt.config.minion_config(self.cli['config'])
 +        self.opts = salt.config.minion_config(self.cli['config'] + '/minion')

      def __parse_cli(self):
          '''
 @@ -86,7 +86,7 @@ class Minion(object):
          parser.add_option('-c',
                  '--config',
                  dest='config',
 -                default='/etc/salt/minion',
 +                default='/etc/salt',
                  help='Pass in an alternative configuration file')

          options, args = parser.parse_args()
 diff --git a/salt/master.py b/salt/master.py
 index 01b4cc5..d6fe85e 100644
 --- a/salt/master.py
 +++ b/salt/master.py
 @@ -112,7 +112,7 @@ class ReqServer(threading.Thread):
          self.key = self.__prep_key()
          self.crypticle = salt.crypt.Crypticle(self.opts['aes'])
          # Make a client
 -        self.local = salt.client.LocalClient()
 +        self.local = salt.client.LocalClient(opts['conf_file'])

      def __prep_key(self):
          '''
 -- 
 1.7.3.4

cmd module

Fill out the cmd module for shell out operations

Remote Client

Right now only a local client can publish, I need to figure out how to create remote clients so that distributed applications can use salt as a command broker.

Bump required python version to 2.6

Right now I think the only requirement for python 2.7 is importlib, and you can do this with import
2.6 means we can at least get salt running on rhel6, I want rhel5 support, python 2.4

Or continue on with requiring python3....

Execution based matching

Add the capability to match hosts based on information gathered from and arbitrairy execution

Enable authentication modes

So, I want the system to be able to use "open" authentication if the user so wishes, this is for 2 reasons.

  1. My keys are all messed up! - Turn on open mode and everything just gets cleaned out
  2. I am in a secure environment, just approves everything! - with open mode the keys will just be accepted

[PATCH] fix some int casting and use of interface option

 fix some int casting and use of interface config option
 ---
  salt/client.py |    2 +-
  salt/config.py |    2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)

 diff --git a/salt/client.py b/salt/client.py
 index f10c1a1..7410a63 100644
 --- a/salt/client.py
 +++ b/salt/client.py
 @@ -227,7 +227,7 @@ class LocalClient(object):
          # Prep zmq
          context = zmq.Context()
          socket = context.socket(zmq.REQ)
 -        socket.connect('tcp://127.0.0.1:' + self.opts['ret_port'])
 +        socket.connect('tcp://' + self.opts['interface'] + ':' + str(self.opts['ret_port']))
          socket.send(package)
          payload = salt.payload.unpackage(socket.recv())
          return {'jid': payload['load']['jid'],
 diff --git a/salt/config.py b/salt/config.py
 index 969d5cd..84579f9 100644
 --- a/salt/config.py
 +++ b/salt/config.py
 @@ -34,7 +34,7 @@ def minion_config(path):
          except Exception:
              pass

 -    opts['master_uri'] = 'tcp://' + opts['master'] + ':' + opts['master_port']
 +    opts['master_uri'] = 'tcp://' + opts['master'] + ':' + str(opts['master_port'])

      # Enableing open mode requires that the value be set to True, and nothing
      # else!
 -- 

Service module

The service module needs to manage services for multiple operating systems

salt-cp needs a logic overhaul

Right now it is only a proof of concept, but it needs the copy logic to work, it needs to copy recursively correctly, and the copy logic needs to mimic cp EXACTLY.
salt-cp needs a lot of work, we might just have the basics done for 0.8.0

Salt modules should be "Facterized"

Modules like pacman should be done away with in favor of general modules, so that a simple "package" module can do package management across multiple distros. I am thinking that we just have a bunch of private methods in the modules and called function maps to the private functions based on facter info.

stats module

Create a stats module to gather globs of statistics on the systems

Fix autosign issue

Right now Salt does not ask the master to verify the minion's public keys on the master, the master should have manual signing for minion authentication.

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.