|
@ -2,196 +2,7 @@ |
|
|
|
|
|
|
|
|
set -eux # -x for verbose logging to juju debug-log |
|
|
set -eux # -x for verbose logging to juju debug-log |
|
|
|
|
|
|
|
|
DOCKER=${DOCKER:-} |
|
|
|
|
|
|
|
|
|
|
|
## 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:-""} |
|
|
|
|
|
|
|
|
|
|
|
apt-get -y install bash-completion wget bzip2 git-core less python-software-properties tmux sudo git |
|
|
|
|
|
|
|
|
|
|
|
apt-get -y install language-pack-en || true ## Protect debian against failure here |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## Allows to mount nfs shares |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
## XXXvlab: interracts really badly with current chroot mode. Leaving |
|
|
|
|
|
## daemonized process reparented to PID 1 that prevents umounting and |
|
|
|
|
|
## finally making the script failing, and then lxc-create launch a lxc-destroy |
|
|
|
|
|
## triggering a 'rm -rf' upon '/dev'... |
|
|
|
|
|
#test "$(lsb_release -c -s)" == "precise" && apt-get -y install nfs-common |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## etckeeper |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
if [ -z "$DOCKER" ]; then |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
git config --global user.email "default@$(hostname)" |
|
|
|
|
|
git config --global user.name "default" |
|
|
|
|
|
|
|
|
|
|
|
etckeeper init |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## Git utilities |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
cat <<EOF > /etc/gitconfig |
|
|
|
|
|
[alias] |
|
|
|
|
|
co = checkout |
|
|
|
|
|
com = commit |
|
|
|
|
|
st = status |
|
|
|
|
|
ci = commit |
|
|
|
|
|
|
|
|
|
|
|
[color] |
|
|
|
|
|
branch = auto |
|
|
|
|
|
diff = auto |
|
|
|
|
|
interactive = auto |
|
|
|
|
|
status = auto |
|
|
|
|
|
|
|
|
|
|
|
[core] |
|
|
|
|
|
whitespace = fix |
|
|
|
|
|
excludesfile = /etc/gitignore |
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
|
|
|
|
|
|
|
|
cat <<EOF > /etc/gitignore |
|
|
|
|
|
docs/build/* |
|
|
|
|
|
develop-eggs/* |
|
|
|
|
|
*.pyc |
|
|
|
|
|
*.o |
|
|
|
|
|
.installed.cfg |
|
|
|
|
|
eggs/* |
|
|
|
|
|
*.egg-info/* |
|
|
|
|
|
*.orig |
|
|
|
|
|
dist/* |
|
|
|
|
|
build/* |
|
|
|
|
|
buildout.dev.cfg |
|
|
|
|
|
*~ |
|
|
|
|
|
*# |
|
|
|
|
|
.#* |
|
|
|
|
|
*.swp |
|
|
|
|
|
*_flymake.* |
|
|
|
|
|
.svn |
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## ldap client |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
#? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## kal-scripts |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## kal-scripts |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
if ! [ -e /etc/apt/sources.list.d/kalysto.org.list ]; then |
|
|
|
|
|
cat <<EOF > /etc/apt/sources.list.d/kalysto.org.list |
|
|
|
|
|
|
|
|
|
|
|
## vlab's shell libraries |
|
|
|
|
|
deb http://deb.kalysto.org no-dist kal-alpha kal-beta kal-main |
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
|
|
|
|
|
|
|
|
## Update only this repo: |
|
|
|
|
|
apt-get update -o Dir::Etc::sourcelist="sources.list.d/kalysto.org.list" \ |
|
|
|
|
|
-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## 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" |
|
|
|
|
|
|
|
|
for script in hooks/install.d/*.sh; do |
|
|
|
|
|
[ -f "$script" -a -x "$script" ] || continue |
|
|
|
|
|
"$script" |
|
|
done |
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## ssh config |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cp src/etc/ssh/lxc_git_access_id_rsa /etc/ssh/lxc_git_access_id_rsa |
|
|
|
|
|
chmod 0600 /etc/ssh/lxc_git_access_id_rsa |
|
|
|
|
|
|
|
|
|
|
|
mkdir -p /root/.ssh |
|
|
|
|
|
|
|
|
|
|
|
cat <<EOF > /root/.ssh/config |
|
|
|
|
|
|
|
|
|
|
|
Host git.0k.io |
|
|
|
|
|
User lxc-user |
|
|
|
|
|
IdentityFile /etc/ssh/lxc_git_access_id_rsa |
|
|
|
|
|
UserKnownHostsFile /dev/null |
|
|
|
|
|
StrictHostKeyChecking no |
|
|
|
|
|
Port 10022 |
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
## install git sub |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( |
|
|
|
|
|
mkdir -p /opt/apps && |
|
|
|
|
|
cd /opt/apps && |
|
|
|
|
|
git clone $GIT_0K_CLONE_OPTIONS "$GIT_0K_BASE"/0k/git-sub && |
|
|
|
|
|
ln -sf /opt/apps/git-sub/bin/git-sub /usr/lib/git-core/ |
|
|
|
|
|
) |
|
|
|