Coder Social home page Coder Social logo

subhranildey / fucking_shell_scripts Goto Github PK

View Code? Open in Web Editor NEW

This project forked from brandonhilkert/fucking_shell_scripts

0.0 1.0 0.0 324 KB

The easiest, most common sense configuration management tool... because you just use fucking shell scripts.

License: MIT License

Ruby 100.00%

fucking_shell_scripts's Introduction

Fucking Shell Scripts

The easiest, most common sense server configuration management tool...because you just use fucking shell scripts.

Completely confused by Chef? Blowing your brains out over Ansible? Lost control of your Puppets? Wanna just use fucking shell scripts to configure a server? Read on!

Activity

While this project served a very specific purpose, ongoing development has stopped. Pull requests will be accepted, but it is currently not being actively developed.

Features

  • Wraps up the fog gem, so it can be used on any cloud service, including AWS, rackspace, etc.
  • We've intentionally designed this tool to be insanely easy to use

Step 0: Install the gem

gem install fucking_shell_scripts

Step 1: Create a project directory

mkdir config_management

Folder structure:

  • /servers (required) - yaml server definitions (see example below)

  • /scripts (required) - the shell scripts that will configure your servers (see example below)

  • /files (optional) - files to be transferred to servers (nginx.conf, ssh keys, database.yml, etc.)

An example folder structure:

./config_management
├── files
│   ├── keys
│   │   └── deploy_key
│   └── rails_config
│       └── database.yml
├── scripts
│   ├── apt.sh
│   ├── deploy_key.sh
│   ├── git.sh
│   ├── redis.sh
│   ├── ruby2.sh
│   ├── rubygems.sh
│   ├── search_service_code.sh
│   └── search_service_env.sh
└── servers
    ├── defaults.yml
    └── search-server.yml

Step 2: Create a server definition file

The server definition file defines how to build a type of server. Server definitions override settings in defaults.yml.

# servers/search-server.yml
##################################################
# This file defines how to build our search server
##################################################

name: search-server
size: c1.xlarge
availability_zone: us-east-1d
image: ami-90374bf9
key_name: pd-app-server
private_key_path: /Users/yourname/.ssh/pd-app-server
security_groups: search-service  # override the security_groups defined in defaults.yml

############################################
# Files necessary to build the search server
############################################

files:
  - files/keys/deploy_key

###########################################
# Scripts needed to build the search server
###########################################

scripts:
  - scripts/apt.sh
  - scripts/search_service_env.sh
  - scripts/git.sh
  - scripts/ruby2.sh
  - scripts/rubygems.sh
  - scripts/redis.sh
  - scripts/deploy_key.sh

servers/defaults.ymlhas the same structure and keys a server definition file, except, you cannot define scripts or files.

# servers/defaults.yml
################################
# This file defines our defaults
################################

security_groups: simple-group
size: c1.medium
image: ami-e76ac58e
availability_zone: us-east-1d
key_name: global-key
cloud:
  provider: AWS
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
  region: us-east-1

Cloud options

Anything passed in the 'cloud' key will be directly passed to Fog::Compute.new. See the fog website for more info.

FSS will consider any values that look like "ENV[VAR_NAME]" to be environment variables, and will attempt to look up that environment variable. If FSS does not find that variable, an exception will be raised.

Step 3: Add shell scripts that configure the server

Seriously...just write shell scripts.

Want to install Ruby 2? Here's an example:

#!/bin/sh
#
# scripts/ruby2.sh
#
sudo apt-get -y install build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev
cd /tmp
wget http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
tar -xzf ruby-2.0.0-p247.tar.gz
cd ruby-2.0.0-p247
./configure --prefix=/usr/local
make
sudo make install
rm -rf /tmp/ruby*

Step 4: Build/configure your server

fss search-server

This command does 2 things:

  1. Builds the new server
  2. Runs the scripts configuration

To build only:

fss --build search-server

To configure only:

fss --instance-id i-9ad6d7af --configure search-server

Note: --instance-id is required when using the --configure option

Step 5: Remove your chef repo and all its contents.

rm -rf ~/old_config_management/chef

HOLY SHIT! THAT WAS EASY.

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

fucking_shell_scripts's People

Contributors

artnez avatar binaryphile avatar brandonhilkert avatar dannguyen avatar kwpolska avatar mactynow avatar techthumb avatar

Watchers

 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.