You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/bin/bash
set -eux # -x for verbose logging to juju debug-log
apt-get update apt-get -y install bash-completion wget bzip2 git-core less language-pack-en python-software-properties tmux mosh sudo git
## 0k git remote path GIT_0K_BASE=${GIT_0K_BASE:-"git.0k.io:/var/git"}
## 0k git remote options GIT_0K_CLONE_OPTIONS=${GIT_0K_CLONE_OPTIONS:-""}
## ## etckeeper ##
apt-get install etckeeper
sed -i 's/#VCS="git"/VCS="git"/g' /etc/etckeeper/etckeeper.conf sed -i 's/VCS="bzr"/#VCS="bzr"/g' /etc/etckeeper/etckeeper.conf
etckeeper init
## ## Git utilities ##
echo "[alias] co = checkout com = commit st = status ci = commit
[color] branch = auto diff = auto interactive = auto status = auto
" >> /etc/gitconfig
## ## kal-scripts ##
cat <<EOF >> /etc/apt/sources.list
## vlab's shell libraries deb http://deb.kalysto.org no-dist kal-alpha kal-beta kal-main
EOF
## ## More shell configurations (prompt, functions) ##
mkdir -p /etc/prompt
cat <<EOF > /etc/prompt/prompt.1.rc PROMPT_COMMAND="" parse_git_branch() { ref=\$(git symbolic-ref HEAD 2> /dev/null) || return echo -en ' (\033[0;32m'\${ref#refs/heads/}'\033[0m)' } export PS1="\[\033[0;37m\][\[\033[1;30m\]\u\[\033[0;37m\]@\[\033[1;30m\]\h\[\033[0;37m\]]-[\[\033[1;34m\]\w\[\033[0;37m\]]\\\$(parse_git_branch)\n\[\033[1;37m\]\\$ \[\033[0;37m\]" EOF
cat <<EOF >> /root/.bashrc
## History management
export HISTCONTROL=ignoredups export HISTSIZE=50000 shopt -s histappend PROMPT_COMMAND='history -a'
## Prompt easy management
prompt() { prompt_name="prompt.\$1.rc"
for i in /etc/prompt ~/.prompt; do [ -f "\$i/\$prompt_name" ] && . "\$i/\$prompt_name" done }
## Git log command
function glog() { git log --graph --pretty=tformat:%C\(yellow\ normal\)%h%Creset\ %C\(blue\ normal\)%an%Creset\ %s\ %Cgreen%d%Creset -n 20 "\$@" }
prompt 1
EOF
apt-get install -y kal-scripts python-pip pip install shyaml
## ## btrfs install ##
apt-get install btrfs-tools
root=/mnt/btrfs-root
#mkdir /mnt/btrfs-root -p #mount /mnt/btrfs-root
btrfs subvolume create $root/var mkdir $root/var/{lib,cache,backups} -p for d in $root/var/{lib,cache,backups}; do btrfs subvolume create $d/lxc done
for d in $root/srv/{,lxc-datastore{,/config,/data}}; do btrfs subvolume create $d done
mkdir srv/lxc
cat <<EOF >> /etc/fstab
## binds
/mnt/btrfs-root/var/lib/lxc /var/lib/lxc none bind,defaults,auto 0 0 /mnt/btrfs-root/var/cache/lxc /var/cache/lxc none bind,defaults,auto 0 0 /mnt/btrfs-root/var/backups/lxc /var/backups/lxc none bind,defaults,auto 0 0 /mnt/btrfs-root/srv/lxc-datastore /srv/lxc-datastore none bind,defaults,auto 0 0
EOF
mkdir -p /var/backups/lxc /srv/lxc-datastore
## ## lxc tools ##
apt-get install lxc
## mount all
mkdir -p /opt/apps
## ## Install 0k-manage for the handy oe command ##
( if ! [ -d "/opt/apps/0k-manage" ]; then cd /opt/apps && git clone $GIT_0K_CLONE_OPTIONS "$GIT_0K_BASE/0k/0k-manage.git" && cd /opt/apps/0k-manage && git checkout 0k/dev/master fi )
## ## Install 0k-charms ##
( if ! [ -d "/opt/apps/0k-charms" ]; then cd /opt/apps && git clone $GIT_0K_CLONE_OPTIONS "$GIT_0K_BASE/0k/0k-charms.git" && cd /opt/apps/0k-manage && git checkout 0k/dev/master fi )
## ## Install lxc-scripts ##
( if ! [ -d "/opt/apps/lxc-scripts" ]; then cd /opt/apps && git clone $GIT_0K_CLONE_OPTIONS "$GIT_0K_BASE/0k/lxc-scripts.git" && cd /opt/apps/0k-manage && git checkout master && ln -sf /opt/apps/lxc-scripts/bin/lxc-* /usr/local/sbin/ && ln -sf /opt/apps/lxc-scripts/usr/lib/lxc/templates/lxc-0k-ubuntu-cloud /usr/lib/lxc/templates/ fi )
## ## Patch some files ##
( cd /etc && cat /opt/apps/lxc-scripts/precise-12.04.patch | patch -p1
)
## ## Install dns waterfall ##
apt-get install -y bind9 dnsmasq
# edit /etc/dnsmaq.conf echo " server=$(. /etc/default/lxc && echo "$LXC_ADDR") interface=lo no-negcache log-queries log-facility=/var/log/dnsmasq.log " >> /etc/dnsmasq.conf
( cd /etc && cat src/bind9.patch | patch -p1 && sed -ri s/%%EXTERNAL_IP%%/$(. /etc/default/lxc && ifip "$HOST_EXTERNAL_DEVICE") ) mkdir /var/log/named -p && chown bind:bind /var/log/named
|