diff --git a/build.sh b/build.sh index b54af08b..181a555d 100755 --- a/build.sh +++ b/build.sh @@ -8,3 +8,14 @@ export DOCKER_IMAGE=rancher-os-build ./scripts/ci "$@" mkdir -p dist docker run --rm -it -e CHOWN_ID=$(id -u) -v $(pwd)/dist:/source/target $DOCKER_IMAGE + +# Stupidest argparse ever +if echo "$@" | grep -q -- '--images'; then + ./scripts/build-extra-images + echo 'docker push rancher/ubuntuconsole' +fi + +# And again +if echo "$@" | grep -q -- '--push'; then + docker push rancher/ubuntuconsole +fi diff --git a/scripts/build-extra-images b/scripts/build-extra-images new file mode 100755 index 00000000..b2cadc99 --- /dev/null +++ b/scripts/build-extra-images @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +cd $(dirname $0)/.. + +source scripts/build-common + +>${BUILD}/tags +for i in scripts/extraimages/[0-9]*; do + tag=$(echo $i | cut -f2 -d-) + echo Building $tag + docker build -t rancher/$tag -f $i . + echo $tag >> ${BUILD}/tags +done diff --git a/scripts/dockerimages/00-base b/scripts/dockerimages/00-base index 9833fbed..273cfa91 100644 --- a/scripts/dockerimages/00-base +++ b/scripts/dockerimages/00-base @@ -3,7 +3,7 @@ ADD assets/rootfs.tar / # Cleanup Buildroot RUN rm /sbin/poweroff /sbin/reboot /sbin/halt && \ sed -i '/^root/s!/bin/sh!/bin/bash!' /etc/passwd && \ - echo -e 'RancherOS\n' > /etc/issue && \ + echo 'RancherOS \n \l' > /etc/issue && \ rm /run \ /linuxrc \ /etc/os-release \ @@ -21,6 +21,11 @@ RUN rm /sbin/poweroff /sbin/reboot /sbin/halt && \ /var/run \ /var/spool && \ passwd -l root && \ - addgroup docker && \ - addgroup sudo && \ + addgroup -g 1100 rancher && \ + addgroup -g 1101 docker && \ + addgroup -g 1103 sudo && \ + adduser -u 1100 -G rancher -D -h /home/rancher -s /bin/bash rancher && \ + sed -i 's/\(^docker.*\)/\1rancher/g' /etc/group && \ + sed -i 's/\(^sudo.*\)/\1rancher/g' /etc/group && \ echo '%sudo ALL=(ALL) ALL' >> /etc/sudoers +COPY scripts/dockerimages/scripts/inputrc /etc/inputrc diff --git a/scripts/dockerimages/06-console b/scripts/dockerimages/06-console index ef006668..8818815e 100644 --- a/scripts/dockerimages/06-console +++ b/scripts/dockerimages/06-console @@ -1,9 +1,6 @@ FROM base COPY scripts/dockerimages/scripts/console.sh /usr/sbin/ -RUN echo 'set bell-style none' > /etc/inputrc && \ - adduser -g rancher -G sudo -D -h /home/rancher -s /bin/bash rancher && \ - sed -i 's/\(docker.*\)/\1rancher/g' /etc/group && \ - sed -i 's/rancher.*/rancher:rixbL64o6zGmY:16486:0:99999:7:::/g' /etc/shadow && \ +RUN sed -i 's/rancher.*/rancher:rixbL64o6zGmY:16486:0:99999:7:::/g' /etc/shadow && \ echo '## allow password less for rancher user' >> /etc/sudoers && \ echo 'rancher ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers CMD ["/usr/sbin/console.sh"] diff --git a/scripts/dockerimages/09-syslog b/scripts/dockerimages/09-syslog index e0d41abb..ca3b12a5 100644 --- a/scripts/dockerimages/09-syslog +++ b/scripts/dockerimages/09-syslog @@ -1,3 +1,4 @@ FROM base COPY scripts/dockerimages/scripts/syslog.sh / +RUN sed -i 1,10d /etc/rsyslog.conf CMD ["/syslog.sh"] diff --git a/scripts/dockerimages/scripts/console.sh b/scripts/dockerimages/scripts/console.sh index c83ffaad..100f0582 100755 --- a/scripts/dockerimages/scripts/console.sh +++ b/scripts/dockerimages/scripts/console.sh @@ -24,6 +24,8 @@ setup_ssh() fi fi done + + mkdir -p /var/run/sshd } @@ -50,4 +52,12 @@ if [ ! -d ${RANCHER_HOME} ]; then chmod 2755 ${RANCHER_HOME} fi +if ! grep -q "$(hostname)" /etc/hosts; then + echo 127.0.1.1 $(hostname) >> /etc/hosts +fi + +if [ -x /opt/rancher/bin/start.sh ]; then + /opt/rancher/bin/start.sh +fi + exec respawn -f /etc/respawn.conf diff --git a/scripts/dockerimages/scripts/docker.sh b/scripts/dockerimages/scripts/docker.sh index 8d6fe69c..76914c0d 100755 --- a/scripts/dockerimages/scripts/docker.sh +++ b/scripts/dockerimages/scripts/docker.sh @@ -42,7 +42,9 @@ if [ "$USE_TLS" == "true" ]; then rancherctl config set -- userdocker.tls_server_cert "$TLS_SERVER_CERT" rancherctl config set -- userdocker.tls_server_key "$TLS_SERVER_KEY" + exec >/var/log/userdocker.log 2>&1 exec docker -d -s overlay --tlsverify --tlscacert=$TLS_PATH/ca.pem --tlscert=$TLS_PATH/server-cert.pem --tlskey=$TLS_PATH/server-key.pem -H=0.0.0.0:2376 -H=unix:///var/run/docker.sock -G docker else + exec >/var/log/userdocker.log 2>&1 exec docker -d -s overlay -G docker fi diff --git a/scripts/dockerimages/scripts/inputrc b/scripts/dockerimages/scripts/inputrc new file mode 100644 index 00000000..d3da9859 --- /dev/null +++ b/scripts/dockerimages/scripts/inputrc @@ -0,0 +1,67 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info rluserman' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on + +# To allow the use of 8bit-characters like the german umlauts, uncomment +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +# try to enable the application keypad when it is called. Some systems +# need this to enable the arrow keys. +# set enable-keypad on + +# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys + +# do not bell on tab-completion +# set bell-style none +# set bell-style visible + +# some defaults / modifications for the emacs mode +$if mode=emacs + +# allow the use of the Home/End keys +"\e[1~": beginning-of-line +"\e[4~": end-of-line + +# allow the use of the Delete/Insert keys +"\e[3~": delete-char +"\e[2~": quoted-insert + +# mappings for "page up" and "page down" to step to the beginning/end +# of the history +# "\e[5~": beginning-of-history +# "\e[6~": end-of-history + +# alternate mappings for "page up" and "page down" to search the history +# "\e[5~": history-search-backward +# "\e[6~": history-search-forward + +# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving +"\e[1;5C": forward-word +"\e[1;5D": backward-word +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +$if term=rxvt +"\e[7~": beginning-of-line +"\e[8~": end-of-line +"\eOc": forward-word +"\eOd": backward-word +$endif + +# for non RH/Debian xterm, can't hurt for RH/Debian xterm +# "\eOH": beginning-of-line +# "\eOF": end-of-line + +# for freebsd console +# "\e[H": beginning-of-line +# "\e[F": end-of-line + +$endif diff --git a/scripts/dockerimages/scripts/syslog.sh b/scripts/dockerimages/scripts/syslog.sh index 76a2aa3a..285ffefa 100755 --- a/scripts/dockerimages/scripts/syslog.sh +++ b/scripts/dockerimages/scripts/syslog.sh @@ -2,4 +2,4 @@ set -x -e -exec syslogd -n +exec rsyslogd -n diff --git a/scripts/download b/scripts/download index 515824d5..12e882f6 100755 --- a/scripts/download +++ b/scripts/download @@ -4,6 +4,6 @@ cd $(dirname $0)/.. source scripts/build-common -download beb869cd87396e536924e8668c39da56631a9d9d http://storage.googleapis.com/darren-dev/os-base-dev.tar.xz -mv ${ARTIFACTS}/os-base{-dev,}.tar.xz +download 5f4fdc1e17db658a3c3d7476ca19cc35960e0b53 http://storage.googleapis.com/darren-dev/os-base-dev3.tar.xz +mv ${ARTIFACTS}/os-base{-dev3,}.tar.xz download 1acbe869b32869bca5788373e8624a2957cbb380 https://github.com/ibuildthecloud/docker/releases/download/v1.5.0-rancher-2/docker-1.5.0 diff --git a/scripts/extraimages/00-ubuntuconsole b/scripts/extraimages/00-ubuntuconsole new file mode 100644 index 00000000..4d232244 --- /dev/null +++ b/scripts/extraimages/00-ubuntuconsole @@ -0,0 +1,15 @@ +FROM ubuntu:14.04.1 +RUN apt-get update && \ + apt-get upgrade --no-install-recommends -y && \ + apt-get install -y --no-install-recommends openssh-server +RUN rm -rf /etc/ssh/*key* +COPY scripts/dockerimages/scripts/console.sh /usr/sbin/ +RUN echo 'RancherOS \\n \l' > /etc/issue +RUN locale-gen en_US.UTF-8 +RUN addgroup --gid 1100 rancher && \ + addgroup --gid 1101 docker && \ + useradd -u 1100 -g rancher -G docker,sudo -m -s /bin/bash rancher && \ + sed -i 's/rancher.*/rancher:rixbL64o6zGmY:16486:0:99999:7:::/g' /etc/shadow && \ + echo '## allow password less for rancher user' >> /etc/sudoers && \ + echo 'rancher ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers +CMD ["/usr/sbin/console.sh"]