├── README.md ├── .gitignore ├── bin ├── run.sh ├── build_and_push.sh ├── test.sh └── build.sh ├── context └── requirements.txt ├── configs ├── build.cnf └── push.cnf ├── dev_tools.py └── Dockerfile /README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *pyc 2 | -------------------------------------------------------------------------------- /bin/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Example for running 3 | docker run -t -i dev_tools /bin/bash 4 | -------------------------------------------------------------------------------- /bin/build_and_push.sh: -------------------------------------------------------------------------------- 1 | export SHUTIT_OPTIONS="$SHUTIT_OPTIONS --config configs/push.cnf -s repository push yes" 2 | ./build.sh "$@" 3 | -------------------------------------------------------------------------------- /bin/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Test the building of this module 3 | if [ $0 != test.sh ] && [ $0 != ./test.sh ] 4 | then 5 | echo 6 | echo "Called as: $0" 7 | echo "Must be run as test.sh or ./test.sh" 8 | exit 9 | fi 10 | ./build.sh "$@" 11 | -------------------------------------------------------------------------------- /bin/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | [[ -z "$SHUTIT" ]] && SHUTIT="$1/shutit" 3 | [[ ! -a "$SHUTIT" ]] || [[ -z "$SHUTIT" ]] && SHUTIT="$(which shutit)" 4 | if [[ ! -a "$SHUTIT" ]] 5 | then 6 | echo "Must have shutit on path, eg export PATH=$PATH:/path/to/shutit_dir" 7 | exit 1 8 | fi 9 | pushd .. 10 | $SHUTIT build --shutit_module_path $(dirname $SHUTIT)/library "$@" 11 | if [[ $? != 0 ]] 12 | then 13 | popd 14 | exit 1 15 | fi 16 | popd 17 | -------------------------------------------------------------------------------- /context/requirements.txt: -------------------------------------------------------------------------------- 1 | backports.ssl-match-hostname 2 | bottle 3 | charade 4 | colorama 5 | configobj 6 | coverage 7 | decorator 8 | di 9 | dnspython 10 | docutils 11 | epydoc 12 | html5lib 13 | httplib2 14 | iniparse 15 | iotop 16 | IPy 17 | Jinja2 18 | jira 19 | JPype1 20 | kitchen 21 | lockfile 22 | logilab-common 23 | lxml 24 | manhole 25 | MarkupSafe 26 | netaddr 27 | oauthlib 28 | PAM 29 | pbr 30 | pexpect 31 | Pillow 32 | piston-mini-client 33 | psutil 34 | pycrypto 35 | pydot 36 | Pygments 37 | pygpgme 38 | pyinotify 39 | pyliblzma 40 | pylint 41 | pynsca 42 | pyOpenSSL 43 | pyparsing 44 | pyserial 45 | pysmbc 46 | python-augeas 47 | python-dateutil 48 | python-ldap 49 | pytz 50 | pyudev 51 | pyxattr 52 | pyxdg 53 | reportlab 54 | requests 55 | requests-oauthlib 56 | rtslib-fb 57 | six 58 | slip 59 | Sphinx 60 | SQLAlchemy 61 | sqlalchemy-migrate 62 | ssh-import-id 63 | Tempita 64 | texttable 65 | tlslite 66 | urllib3 67 | urwid 68 | virtualenv 69 | wsgiref 70 | 71 | -------------------------------------------------------------------------------- /configs/build.cnf: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # PLEASE NOTE: This file should be changed only by the maintainer. 3 | # PLEASE NOTE: This file is only sourced if the "shutit build" command is run 4 | # and this file is in the relative path: configs/build.cnf 5 | # This is to ensure it is only sourced if _this_ module is the 6 | # target. 7 | ############################################################################### 8 | # When this module is the one being built, which modules should be built along with it by default? 9 | # This feeds into automated testing of each module. 10 | [ianmiell.github.com.dev_tools.dev_tools] 11 | shutit.core.module.build:yes 12 | # Allowed images as a regexp, eg ["ubuntu:12.*"], or [".*"], or ["centos"]. 13 | # It's recommended this is locked down as far as possible. 14 | shutit.core.module.allowed_images:["debian:jessie"] 15 | 16 | # Aspects of build process 17 | [build] 18 | base_image:debian:jessie 19 | -------------------------------------------------------------------------------- /configs/push.cnf: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # PLEASE NOTE: This file should be changed only by the maintainer. 3 | # PLEASE NOTE: IF YOU WANT TO CHANGE THE CONFIG, PASS IN 4 | # --config configfilename 5 | # OR ADD DETAILS TO YOUR 6 | # ~/.shutit/config 7 | # FILE 8 | ############################################################################### 9 | [target] 10 | rm:false 11 | 12 | [repository] 13 | name:dev_tools 14 | # COPY THESE TO YOUR ~/.shutit/config FILE AND FILL OUT ITEMS IN CAPS 15 | #user:YOUR_USERNAME 16 | ## Fill these out in server- and username-specific config (also in this directory) 17 | #password:YOUR_REGISTRY_PASSWORD_OR_BLANK 18 | ## Fill these out in server- and username-specific config (also in this directory) 19 | #email:YOUR_REGISTRY_EMAIL_OR_BLANK 20 | #tag:no 21 | #push:yes 22 | #save:no 23 | #export:no 24 | ##server:REMOVE_ME_FOR_DOCKER_INDEX 25 | ## tag suffix, defaults to "latest", eg registry/username/repository:latest. 26 | ## empty is also "latest" 27 | #tag_name:latest 28 | #suffix_date:no 29 | #suffix_format:%s 30 | -------------------------------------------------------------------------------- /dev_tools.py: -------------------------------------------------------------------------------- 1 | """ShutIt module. See http://shutit.tk 2 | """ 3 | 4 | from shutit_module import ShutItModule 5 | import string 6 | 7 | 8 | class dev_tools(ShutItModule): 9 | 10 | def build(self, shutit): 11 | # git 12 | shutit.install('git') 13 | shutit.send('groupadd -g 1000 imiell') 14 | shutit.send('useradd -d /home/imiell -s /bin/bash -m imiell -u 1000 -g 1000') 15 | shutit.login(user='imiell') 16 | shutit.send('git clone https://github.com/ianmiell/dotfiles.git ~/.dotfiles') 17 | shutit.send('cd ~/.dotfiles') 18 | # TODO other git repos 19 | shutit.multisend('script/bootstrap',{'What is your github author name':'Ian Miell','What is your github author email':'ian.miell@gmail.com'}) 20 | shutit.logout() 21 | # CPAN 22 | shutit.multisend('cpan',{'Would you like to configure as much as possible automatically':'','What approach do you want':'','Would you like me to automatically choose some CPAN mirror':'','Would you like me to append that to /home/imiell/.bashrc now':'','cpan.1.>':'exit'}) 23 | # CPAN requires a re-login 24 | shutit.login(command='su -') 25 | shutit.send('cpan install Graph::Easy') # Allows rendering of graphs as text files: http://search.cpan.org/~tels/Graph-Easy/bin/graph-easy 26 | shutit.logout() 27 | # pips 28 | shutit.send_host_file('/tmp/requirements.txt','context/requirements.txt') 29 | shutit.send('pip install -r /tmp/requirements.txt') 30 | shutit.send('rm -f /tmp/requirements.txt') 31 | return True 32 | 33 | def get_config(self, shutit): 34 | shutit.get_config(self.module_id,'type','monolith') 35 | return True 36 | 37 | def finalize(self, shutit): 38 | shutit.install('manpages man-db') 39 | shutit.send('updatedb') 40 | shutit.send('apt-file update') 41 | shutit.send('apt-get clean') 42 | return True 43 | 44 | def module(): 45 | return dev_tools( 46 | 'ianmiell.github.com.dev_tools.dev_tools', 81940468.001, 47 | description='imiell dev tools image', 48 | maintainer='', 49 | depends=['shutit.tk.setup'] 50 | ) 51 | 52 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | RUN apt-get update 4 | RUN apt-get install -y -qq curl git python-pip 5 | WORKDIR /opt 6 | RUN git clone https://github.com/ianmiell/shutit.git 7 | WORKDIR shutit 8 | RUN pip install -r requirements.txt 9 | 10 | # Editors 11 | RUN apt-get install -y vim vim-common vim-doc vim-pathogen 12 | # Network tools 13 | RUN apt-get install -y curl net-tools nmap socat wget whois socat openssh-client openssh-server openssl 14 | # Source control 15 | RUN apt-get install -y git git-man subversion cvs 16 | # Package management 17 | RUN apt-get install -y apt-file alien apt-utils 18 | # System debugging 19 | RUN apt-get install -y iotop strace tcpdump iproute ltrace lsof inotify-tools sysstat ddd 20 | # Finding 21 | RUN apt-get install -y mlocate 22 | # Languages 23 | RUN apt-get install -y tcl erlang python-pip python-dev 24 | # General utility/productivity/dev tools 25 | RUN apt-get install -y tmux xmlstarlet xclip jq telnet athena-jot xterm eatmydata util-linux moreutils sshfs tree screen xdotool xmlto expect expect-dev coreutils 26 | # Compiling 27 | RUN apt-get install -y build-essential 28 | # Unpacking 29 | RUN apt-get install -y zip unzip 30 | # Server applications 31 | RUN apt-get install -y haproxy 32 | # Config management 33 | RUN apt-get install -y ansible 34 | 35 | #ssl-capable http proxy 36 | RUN apt-get install -y mitmproxy 37 | #required for pip requirements 38 | RUN apt-get install -y libldap2-dev libgpgme11-dev liblzma-dev libsmbclient-dev libsasl2-dev libattr1-dev #required for pip requirements 39 | # TO Classify 40 | RUN apt-get install -y ant ascii asciidoc virtualenv golang rsync docker.io at cron expect-dev patch perl perl-base perl-doc perl-modules sed anacron mssh daemon fslint gocr netpipe-tcp netsed netsniff-ng pkg-config procps sudo tcpd time tree tofrodos sec rhino postgresql-client maven lsb-base lsb-release readline-common rlwrap software-properties-common ncurses-base ncurses-bin tcpflow graphviz 41 | # docs 42 | RUN apt-get install -y linux-doc libcorelinux-doc user-mode-linux-doc perl-doc vim-doc 43 | 44 | 45 | 46 | WORKDIR /space/git 47 | RUN git clone https://github.com/ianmiell/docker-dev-tools-image.git 48 | WORKDIR /space/git/docker-dev-tools-image 49 | RUN /opt/shutit/shutit build --shutit_module_path /opt/shutit/library --delivery bash 50 | 51 | USER imiell 52 | 53 | CMD ["/bin/bash"] 54 | --------------------------------------------------------------------------------