1000+ DevOps Bash Scripts - AWS, GCP, Kubernetes, Docker, CI/CD, APIs, SQL, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure DevOps, TeamCity, Spotify, MP3, LDAP, Code/Build Linting, pkg mgmt for Linux, Mac, Python, Perl, Ruby, NodeJS, Golang, Advanced dotfiles: .bashrc, .vimrc, .gitconfig, .screenrc, tmux..
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Hari Sekhon 25450e539d updated check_git_commit_authors.sh 5 years ago
.bash.d updated kubernetes.sh 5 years ago
.config added .config/pycodestyle 5 years ago
.git-templates/git-secrets/hooks added .git-templates 5 years ago
.github updated .github/ISSUE_TEMPLATE.md 5 years ago
.sdkman/etc added .sdkman/etc/config 5 years ago
Library/Containers/net.sourceforge.cruisecontrol.CCMenu/Data/Library/Preferences reordered 5 years ago
kafka_wrappers updated kafka_consumer_groups.sh 5 years ago
lib updated utils.sh 5 years ago
setup updated brew_fix_python_openssl.sh 5 years ago
yamllint added yamllint/config 5 years ago
.Xdefaults added .Xdefaults 5 years ago
.Xmodmap added .Xmodmap 5 years ago
.ansible.cfg updated .ansible.cfg 5 years ago
.bash_profile updated .bash_profile 5 years ago
.bashrc updated .bashrc 5 years ago
.customize_environment updated .customize_environment 5 years ago
.editorconfig merged older editconfig in 5 years ago
.gitconfig updated .gitconfig 5 years ago
.gitignore updated .gitignore 5 years ago
.inputrc updated .inputrc 5 years ago
.mdlrc updated .mdlrc 5 years ago
.my.cnf added .my.cnf 5 years ago
.perlcritic_forbidden_modules added .perlcritic_forbidden_modules 5 years ago
.perlcriticrc updated .perlcriticrc 5 years ago
.pylintrc added .pylintrc 5 years ago
.screenrc updated .screenrc 5 years ago
.tmux.conf added .tmux.conf 5 years ago
.toprc updated .toprc 5 years ago
.travis.yml updated .travis.yml 5 years ago
.vimrc updated .vimrc 5 years ago
LICENSE updated LICENSE 8 years ago
Makefile updated Makefile 5 years ago
Makefile.in updated Makefile.in 5 years ago
README.md updated README.md 5 years ago
apk_install_packages.sh moved apk-install-packages.sh to apk_install_packages.sh 5 years ago
apk_remove_packages.sh moved apk-remove-packages.sh to apk_remove_packages.sh 5 years ago
apt_install_packages.sh moved apt-install-packages.sh to apt_install_packages.sh 5 years ago
apt_remove_packages.sh moved apt-remove-packages.sh to apt_remove_packages.sh 5 years ago
aws_spot_when_preempted.sh updated aws_spot_when_preempted.sh 5 years ago
brew_install_packages.sh updated brew_install_packages.sh 5 years ago
center.sh updated center.sh 5 years ago
check_all.sh updated check_all.sh 5 years ago
check_ansible_playbooks.sh added check_ansible_playbooks.sh 5 years ago
check_aws_no_git_credentials.sh updated check_aws_no_git_credentials.sh 5 years ago
check_bash_arrays.sh updated check_bash_arrays.sh 5 years ago
check_bash_duplicate_defs.sh updated check_bash_duplicate_defs.sh 5 years ago
check_bash_syntax.sh renamed check_shell_syntax.sh to check_bash_syntax.sh 5 years ago
check_cson.sh added check_cson.sh 5 years ago
check_docker_clean.sh updated check_docker_clean.sh 5 years ago
check_dockerfiles.sh updated check_dockerfiles.sh 5 years ago
check_duplicate_requirements.sh updated check_duplicate_requirements.sh 5 years ago
check_git_commit_authors.sh updated check_git_commit_authors.sh 5 years ago
check_gradle_build.sh replaced which with type -P 5 years ago
check_json.sh added check_json.sh 5 years ago
check_makefile.sh updated check_makefile.sh 5 years ago
check_maven_pom.sh replaced which with type -P 5 years ago
check_no_tabs.sh updated check_no_tabs.sh 5 years ago
check_non_executable_scripts.sh updated check_non_executable_scripts.sh 5 years ago
check_perl_syntax.sh updated check_perl_syntax.sh 5 years ago
check_python3_compat.sh renamed python3.sh -> check_python3_compat.sh 7 years ago
check_python_asserts.sh updated check_python_asserts.sh 5 years ago
check_python_exception_pass.sh updated check_python_exception_pass.sh 5 years ago
check_python_find_quit.sh updated check_python_find_quit.sh 5 years ago
check_python_pep8.sh replaced which with type -P 5 years ago
check_python_pylint.sh replaced which with type -P 5 years ago
check_pytools.sh updated check_pytools.sh 5 years ago
check_ruby_syntax.sh replaced which with type -P 5 years ago
check_sbt_build.sh replaced which with type -P 5 years ago
check_ssh_keys_encrypted.sh updated check_ssh_keys_encrypted.sh 5 years ago
check_tests_run_qualified.sh updated check_tests_run_qualified.sh 5 years ago
check_tld_chars.sh updated check_tld_chars.sh 5 years ago
check_travis_yml.sh replaced which with type -P 5 years ago
check_whitespace.sh updated check_whitespace.sh 5 years ago
check_yaml.sh added XDG_CONFIG_HOME to use default yamllint/config 5 years ago
curl_auth.sh updated curl_auth.sh 5 years ago
curl_gce_meta.sh updated curl_gce_meta.sh 5 years ago
curl_k8s.sh updated curl_k8s.sh 5 years ago
decomment.sh added decomment.sh 5 years ago
docker_clean.sh updated docker_clean.sh 5 years ago
docker_mount_build_exec.sh updated docker_mount_build_exec.sh 5 years ago
exec_interactive.sh moved exec-interactive.sh to exec_interactive.sh 5 years ago
find_duplicate_cpan_requirements.sh updated find_duplicate_cpan_requirements.sh 5 years ago
find_duplicate_lines.sh updated find_duplicate_lines.sh 5 years ago
find_duplicate_pip_requirements.sh updated find_duplicate_pip_requirements.sh 5 years ago
find_hanging_mount_point.sh updated find_hanging_mount_point.sh 5 years ago
find_unused_cpan_modules.sh updated find_unused_cpan_modules.sh 5 years ago
find_unused_pip_modules.sh updated find_unused_pip_modules.sh 5 years ago
gce_is_preempted.sh updated gce_is_preempted.sh 5 years ago
gce_when_preempted.sh updated gce_is_preempted.sh 5 years ago
git_clean_repos.sh updated git_clean_repos.sh git_pull_make_repos.sh git_update_repos.sh 5 years ago
git_for_each_branch.sh updated git_for_each_branch.sh 5 years ago
git_merge_all.sh updated git_merge_all.sh 5 years ago
git_merge_master.sh updated git_merge_master.sh 5 years ago
git_merge_master_pull.sh updated git_merge_master_pull.sh 5 years ago
git_pull_make_repos.sh updated git_pull_make_repos.sh 5 years ago
git_update_repos.sh updated git_update_repos.sh 5 years ago
git_update_repos_submodules.sh updated git_update_repos_submodules.sh 5 years ago
github_get_user_ssh_public_key.sh updated github_get_user_ssh_public_key.sh 5 years ago
github_get_user_ssh_public_key_api.sh renamed github_get_user_ssh_public_key2.sh to github_get_user_ssh_public_key_api.sh 5 years ago
golang_get_install.sh updated golang_get_install.sh 5 years ago
golang_get_install_if_absent.sh updated golang_get_install_if_absent.sh 5 years ago
hadolint.yaml added hadolint.yaml 5 years ago
ldap_group_recurse.sh updated ldap_group_recurse.sh 5 years ago
ldap_user_recurse.sh updated ldap_user_recurse.sh 5 years ago
ldapsearch.sh updated ldapsearch.sh 5 years ago
nodejs_npm_install.sh added nodejs_npm_install.sh 5 years ago
nodejs_npm_install_if_absent.sh added nodejs_npm_install_if_absent.sh 5 years ago
perl_cpanm_install.sh updated perl_cpanm_install.sh 5 years ago
perl_cpanm_install_if_absent.sh updated perl_cpanm_install.sh perl_cpanm_install_if_absent.sh 5 years ago
perl_find_library_path.sh renamed perl_find_library.sh to perl_find_library_path.sh 5 years ago
perl_generate_fatpacks.sh updated perl_generate_fatpacks.sh 5 years ago
perlpath.sh added perlpath.sh 5 years ago
pygmentize.sh updated pygmentize.sh 5 years ago
python_compile.sh updated python_compile.sh 5 years ago
python_find_library_executable.sh updated python_find_library_executable.sh 5 years ago
python_find_library_path.sh updated python_find_library_path.sh 5 years ago
python_module_to_import_name.sh updated python_module_to_import_name.sh 5 years ago
python_pip_install.sh updated python_pip_install.sh 5 years ago
python_pip_install_if_absent.sh updated python_pip_install.sh python_pip_install_if_absent.sh 5 years ago
python_pyinstaller.sh updated python_pyinstaller.sh 5 years ago
pythonpath.sh added pythonpath.sh 5 years ago
random_select.sh updated random_select.sh 5 years ago
ruby_gem_install.sh fixed --user-install 5 years ago
ruby_gem_install_if_absent.sh updated ruby_gem_install_if_absent.sh 5 years ago
run_latest_tests.sh added run_latest_tests.sh 7 years ago
run_tests.sh updated run_tests.sh 5 years ago
scalastyle_config.xml added scalastyle_config.xml 5 years ago
scan_duplicate_macs.sh updated scan_duplicate_macs.sh 5 years ago
split.sh updated split.sh 5 years ago
ssl_get_cert.sh updated ssl_get_cert.sh 5 years ago
update_gitignore.io.sh updated update_gitignore.io.sh 5 years ago
vault_pass.sh updated vault_pass.sh 5 years ago
yum_install_packages.sh moved yum-install-packages.sh to yum_install_packages.sh 5 years ago
yum_remove_packages.sh moved yum-remove-packages.sh to yum_remove_packages.sh 5 years ago

README.md

Hari Sekhon - DevOps Bash Tools

Build Status Codacy Badge Platform DockerHub

80+ Shell Scripts, Advanced Bashrc & Utility Code Library used by all my other GitHub repos.

For more advanced Systems Administration scripts in other languages, see the repos listed at the bottom of the page.

These scripts can be used straight from the git clone, but see setup benefits of make install next.

Quick Setup

make install
  • Adds sourcing to .bashrc/.bash_profile to automatically inherit all .bash.d/*.sh environment enhancements for all technologies (see Inventory Overview below)
  • Symlinks all .* config files to $HOME for git, vim, top, htop, screen, tmux, editorconfig, ansible etc.
  • Installs OS package dependencies for all scripts (detects the OS and installs the right RPMs, Debs, Apk or Mac HomeBrew packages)
  • Installs Python packages including AWS CLI

make install effectively does make system-packages bash python aws, but if you want to pick and choose from different sections, see Individual Setup Parts below.

Inventory Overview

  • Scripts - Linux systems administration scripts:

    • installation scripts for various OS packages (RPM, Deb, Apk) for various Linux distros (Redhat RHEL / CentOS / Fedora, Debian / Ubuntu, Alpine)
    • install if absent scripts for Python, Perl, Ruby, NodeJS and Golang packages - good for minimizing the number of source code installs by first running the OS install scripts and then only building modules which aren't already detected as installed (provided by system packages), speeding up builds and reducing the likelihood of compile failures
    • install scripts for Jython and build tools like Gradle and SBT for when Linux distros don't provide packaged versions or where the packaged versions are too old
    • Git branch management
    • utility scripts used from other scripts
  • .* - dot conf files for lots of common software eg. advanced .vimrc, .gitconfig, massive .gitignore, .editorconfig, .screenrc, .tmux.conf etc.

    • .vimrc - contains many awesome vim tweaks, plus hotkeys for linting lots of different file types in place, including Python, Perl, Bash / Shell, Dockerfiles, JSON, YAML, XML, CSV, INI / Properties files, LDAP LDIF etc without leaving the editor!
    • .gitconfig and extensive .gitignore - the bashrc profile also auto-uses diff-so-fancy for nicer diffs if found in $PATH
  • .bashrc - shell tuning and sourcing of .bash.d/*.sh

  • .bash.d/*.sh - thousands of lines of advanced bashrc code, aliases, functions and environment variables for:

    • Linux & Mac
    • SCM - Git, Mercurial, Svn
    • AWS
    • Docker
    • Kubernetes
    • Kafka
    • Vagrant
    • automatic GPG and SSH agent handling for handling encrypted private keys without re-entering passwords, and lazy evaluation to only prompt key load the first time SSH is called
    • and lots more - see .bash.d/README for a more detailed list
    • run make bash to link .bashrc/.bash_profile and the .* dot config files to your $HOME directory to auto-inherit everything
  • lib/*.sh - Bash utility libraries full of functions for Docker, environment, CI detection (Travis CI, Jenkins), port and HTTP url availability content checks etc. Sourced from all my other GitHub repos to make setting up Dockerized tests easier.

  • setup/install_*.sh - various simple to use installation scripts for common technologies like Ansible, Terraform, MiniKube and MiniShift (Kubernetes / Redhat OpenShift/OKD dev VMs), Maven, Gradle, SBT, EPEL, RPMforge, Homebrew, Travis CI, Parquet Tools etc.

  • kafka_wrappers/*.sh - scripts to make Kafka CLI usage easier including auto-setting Kerberos to source TGT from environment and auto-populating broker and zookeeper addresses. These are auto-added to the $PATH when .bashrc is sourced. For something similar for Solr, see solr_cli.pl in the DevOps Perl Tools repo.

  • Programming language linting:

    • Python (syntax, pep8, pre-byte-compiling)
    • Perl
    • Java
    • Scala
    • Ruby
    • Bash / Shell
    • Misc (whitespace, custom enforced checks like not calling quit() in Python programs etc.)
  • Build System & CI linting:

  • Data format validation using programs from my DevOps Python Tools repo:

    • CSV
    • JSON
    • Avro
    • Parquet
    • INI / Properties files (Java)
    • LDAP LDIF
    • XML
    • YAML

Currently utilized in the following GitHub repos:

  • DevOps Python Tools - 75+ DevOps CLI tools for Hadoop, HBase, Spark, Log Anonymizer, Ambari Blueprints, AWS CloudFormation, Linux, Docker, Spark Data Converters & Validators (Avro / Parquet / JSON / CSV / INI / XML / YAML), Elasticsearch, Solr, Travis CI, Pig, IPython

  • DevOps Perl Tools - 25+ DevOps CLI tools for Hadoop, HDFS, Hive, Solr/SolrCloud CLI, Log Anonymizer, Nginx stats & HTTP(S) URL watchers for load balanced web farms, Dockerfiles & SQL ReCaser (Hive, Impala, MySQL, PostgreSQL, Cassandra CQL, Apache Drill, Couchbase N1QL, Microsoft SQL Server, Oracle, Pig Latin, Neo4j, InfluxDB), Ambari FreeIPA Kerberos, Datameer, Linux...

  • The Advanced Nagios Plugins Collection - 450+ programs for Hadoop, Docker, Kafka, Elasticsearch, RabbitMQ, Redis, HBase, Solr, Cassandra, ZooKeeper, HDFS, Yarn, Hive, Presto, Drill, Impala, Consul, Spark, Jenkins, Travis CI, Git, MySQL, Linux, DNS, Whois, SSL Certs, Yum Security Updates, Kubernetes, Mesos, Riak, MongoDB, Memcached, Couchbase, CouchDB, Neo4j, Ambari, Cloudera, Hortonworks, MapR etc.

  • HAProxy-configs - 80+ HAProxy Configs for Hadoop, Big Data, NoSQL, Docker, Elasticsearch, SolrCloud, HBase, Cloudera, Hortonworks, MapR, MySQL, PostgreSQL, Apache Drill, Hive, Presto, Impala, ZooKeeper, OpenTSDB, InfluxDB, Prometheus, Kibana, Graphite, SSH, RabbitMQ, Redis, Riak, Rancher etc.

  • Dockerfiles - 50+ DockerHub public images for Docker & Kubernetes - Hadoop, Kafka, ZooKeeper, HBase, Cassandra, Solr, SolrCloud, Presto, Apache Drill, Nifi, Spark, Mesos, Consul, Riak, OpenTSDB, Jython, Advanced Nagios Plugins & DevOps Tools repos on Alpine, CentOS, Debian, Fedora, Ubuntu, Superset, H2O, Serf, Alluxio / Tachyon, FakeS3

  • Perl Lib - Perl utility library

  • PyLib - Python utility library

  • Lib-Java - Java utility library

  • Nagios Plugin Kafka - Kafka Nagios Plugin written in Scala with Kerberos support

Pre-built Docker images are available for those repos (which include this one as a submodule) and the "docker available" icon above links to an uber image which contains all my github repos pre-built. There are Centos, Alpine, Debian and Ubuntu versions of this uber Docker image containing all repos.

Individual Setup Parts

Optional, only if you don't do the full make install.

Install only OS system package dependencies and AWS CLI via Python Pip (doesn't symlink anything to $HOME):

make

Adds sourcing to .bashrc and .bash_profile and symlinks dot config files to $HOME (doesn't install OS system package dependencies):

make link

undo via

make unlink

Install only OS system package dependencies (doesn't include AWS CLI or Python packages):

make system-packages

Install AWS CLI:

make aws

Install generically useful Python CLI tools and modules (includes AWS CLI, autopep8 etc):

make python

Stargazers over time

Stargazers over time