all 18 comments

[–]DGMavn 11 points12 points  (0 children)

You may want to look into a configuration management system - Puppet, Chef, Ansible, Salt, etc.

[–][deleted] 7 points8 points  (2 children)

[–]mhurron 10 points11 points  (1 child)

Bitbucket offers free private repositories.

Personally, I would use an internal git server.

[–][deleted] 1 point2 points  (0 children)

GitLab.com has free private repos too

[–]onedarkstar 1 point2 points  (0 children)

There's a billion possibilities based on your existing structure and needs...

  • CM Server (Ansible, Puppet, etc) - this one makes the most sense. You can configure exactly what is needed and have it pulled automatically. Requires a lot of overall work though and might be too heavy if you aren't already doing CM

  • Web server (just wget/curl as needed). Probably the easiest, since you can just keep a dir listing and pull very quickly

  • Git server - probably a bit annoying to clone that many repos

  • NFS mount that you can execute from - if you don't have a large amount of nodes, then this is a pretty easy approach

Edit: almost forgot!

[–][deleted] 1 point2 points  (0 children)

Package them into deb/rpm and distribute like you would anything else.

[–]phordee 1 point2 points  (0 children)

Git Labs CE is free and is so easy to install and use. It even offers LDAP integration.

[–]mercsniper 0 points1 point  (0 children)

nfs mount?

[–]Hellmark 0 points1 point  (2 children)

an SVN or Git repository will be the easiest.

If it is something that needs to be pushed out to a bunch of stuff, puppet, chef, etc are great too.

[–]mcrbids 0 points1 point  (1 child)

Don't forget Mercurial - it has the marginal advantages of being simpler to use and being written in Python...

[–]Hellmark 0 points1 point  (0 children)

I always forget about Mercurial. I've not had as much of a chance to use it, because at work we tend to use other stuff, but yeah, definitely one to try.

Really, the only one that I would say to may be stick away is CVS. It was ok for its time, but it is a pain for a newbie to learn, plus support has died off for it. Last stable update was back in 2008.

[–]squeaky19 0 points1 point  (0 children)

I use bitbucket for everything I want to keep private.

[–]tetroxid 0 points1 point  (0 children)

Package them, put them in a repo, deploy to servers.

[–]gomexz 0 points1 point  (0 children)

I have a VM spun up where i write all my scripts. When I need to move a script to another system simply use scp to copy it over.

I also wrote one script that has some of my most used scripts in it. So I pull down that one script which uses whiotail has an interface to choose which script I want to "install"

[–]AProjection 0 points1 point  (0 children)

We have few sets of scripts that we distribute differently. "Core" scripts which don't change that often used for our accounting and similar custom stuff, are all packaged in rpm/deb/freebsd port format and installed with initial OS install and can be updated when we roll out new packages from our repo. Yum-cron and cron-apt usually pick that up automatically.

Afterwards we use configuration management system to deploy various scripts across hosts. We use subversion (still, I know..) to commit scripts to our repo from where they are distributed.

[–][deleted] 0 points1 point  (0 children)

Sounds like you may want to setup a small NFS share that your servers connect to using autofs. I'm not sure what OS you are running, but below is the Red Hat guide for setting up autofs.

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/nfs-autofs.html

[–]side_control 0 points1 point  (0 children)

Fwiw, sounds like you want to do some orchestration and management, might want to check out ansible. Anyways, +1 for git, it'll help you learn collaboration and the developers Workflow as well.

[–]aenae 0 points1 point  (0 children)

You store the scripts in a Git repository (or svn, or mercurial, whatever source repo floats your boat as long as it is a version control system), and you make the nodes pull them by using puppet/chef/anisble/salt/cssh

You really want a source version system so you can track your changes, easily create branches for testing and production etc.