1
0
mirror of https://github.com/rancher/os.git synced 2025-09-05 00:37:12 +00:00

machine support for rancherOS

This commit is contained in:
wlan0
2015-04-28 04:34:32 -07:00
parent 9c7663b0d3
commit 1626247f48
8 changed files with 93 additions and 8 deletions

View File

@@ -323,6 +323,21 @@ func NewConfig() *Config {
Ipc: "host", Ipc: "host",
Net: "host", Net: "host",
}, },
"acpid": {
Image: "acpid",
Privileged: true,
Links: []string{
"console",
},
Labels: []string{
SCOPE + "=" + SYSTEM,
},
VolumesFrom: []string{
"command-volumes",
"system-volumes",
},
Net: "host",
},
}, },
ServicesInclude: map[string]bool{ ServicesInclude: map[string]bool{
"ubuntu-console": false, "ubuntu-console": false,

View File

@@ -3,6 +3,7 @@ package init
import ( import (
"os" "os"
"os/exec" "os/exec"
"strings"
"syscall" "syscall"
log "github.com/Sirupsen/logrus" log "github.com/Sirupsen/logrus"
@@ -12,6 +13,8 @@ import (
"github.com/rancherio/rancher-compose/project" "github.com/rancherio/rancher-compose/project"
) )
const boot2dockerMagic = "boot2docker, please format-me"
func autoformat(cfg *config.Config) error { func autoformat(cfg *config.Config) error {
if len(cfg.State.Autoformat) == 0 || util.ResolveDevice(cfg.State.Dev) != "" { if len(cfg.State.Autoformat) == 0 || util.ResolveDevice(cfg.State.Dev) != "" {
return nil return nil
@@ -43,10 +46,18 @@ outer:
continue continue
} }
for _, b := range buffer { boot2docker := false
if b != 0 {
log.Infof("%s not empty", dev) if strings.HasPrefix(string(buffer[:len(boot2dockerMagic)]), boot2dockerMagic) {
continue outer boot2docker = true
}
if boot2docker == false {
for _, b := range buffer {
if b != 0 {
log.Infof("%s not empty", dev)
continue outer
}
} }
} }
@@ -73,6 +84,9 @@ outer:
config.SCOPE + "=" + config.SYSTEM, config.SCOPE + "=" + config.SYSTEM,
}, },
LogDriver: "json-file", LogDriver: "json-file",
Environment: []string{
"MAGIC=" + boot2dockerMagic,
},
}, },
"udev": &udev, "udev": &udev,
}) })

View File

@@ -26,8 +26,9 @@ RUN rm /sbin/poweroff /sbin/reboot /sbin/halt && \
addgroup -g 1101 docker && \ addgroup -g 1101 docker && \
addgroup -g 1103 sudo && \ addgroup -g 1103 sudo && \
adduser -u 1100 -G rancher -D -h /home/rancher -s /bin/bash rancher && \ adduser -u 1100 -G rancher -D -h /home/rancher -s /bin/bash rancher && \
adduser -u 1101 -G docker -D -h /home/docker -s /bin/bash docker && \
sed -i 's/\(^docker.*\)/\1rancher/g' /etc/group && \ sed -i 's/\(^docker.*\)/\1rancher/g' /etc/group && \
sed -i 's/\(^sudo.*\)/\1rancher/g' /etc/group && \ sed -i 's/\(^sudo.*\)/\1rancher,docker/g' /etc/group && \
echo '%sudo ALL=(ALL) ALL' >> /etc/sudoers echo '%sudo ALL=(ALL) ALL' >> /etc/sudoers
COPY scripts/dockerimages/scripts/inputrc /etc/inputrc COPY scripts/dockerimages/scripts/inputrc /etc/inputrc
COPY scripts/dockerimages/scripts/entry.sh /usr/sbin/entry.sh COPY scripts/dockerimages/scripts/entry.sh /usr/sbin/entry.sh

View File

@@ -3,6 +3,9 @@ COPY scripts/dockerimages/scripts/console.sh /usr/sbin/
COPY scripts/dockerimages/scripts/update-ssh-keys /usr/bin/ COPY scripts/dockerimages/scripts/update-ssh-keys /usr/bin/
COPY scripts/dockerimages/scripts/rancheros-install /usr/sbin/ COPY scripts/dockerimages/scripts/rancheros-install /usr/sbin/
RUN sed -i 's/rancher:!/rancher:*/g' /etc/shadow && \ RUN sed -i 's/rancher:!/rancher:*/g' /etc/shadow && \
sed -i 's/docker:!/docker:*/g' /etc/shadow && \
echo '## allow password less for rancher user' >> /etc/sudoers && \ echo '## allow password less for rancher user' >> /etc/sudoers && \
echo 'rancher ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers echo 'rancher ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \
echo '## allow password less for docker user' >> /etc/sudoers && \
echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
CMD ["/usr/sbin/console.sh"] CMD ["/usr/sbin/console.sh"]

View File

@@ -0,0 +1,2 @@
FROM base
ENTRYPOINT ["/usr/sbin/acpid", "-d"]

View File

@@ -1,5 +1,47 @@
#!/bin/bash #!/bin/bash
set -ex
if [ -n "$1" ]; then if [ -n "$1" ]; then
exec mkfs.ext4 -L RANCHER_STATE $1 # Test for our magic string (it means that the disk was made by ./boot2docker init)
HEADER=`dd if=$1 bs=1 count=${#MAGIC} 2>/dev/null`
if [ "$HEADER" = "$MAGIC" ]; then
# save the preload userdata.tar file
dd if=$1 of=/userdata.tar bs=1 count=8192
fi
mkfs.ext4 -L RANCHER_STATE $1
if [ -e "/userdata.tar" ]; then
mount -t ext4 $1 /var/
mkdir -p /var/lib/rancher/conf/cloud-config.d
echo $(tar -xvf /userdata.tar)
AUTHORIZED_KEY1=$(cat /.ssh/authorized_keys)
AUTHORIZED_KEY2=$(cat /.ssh/authorized_keys2)
tee /var/lib/rancher/conf/cloud-config.d/machine.yml << EOF
#cloud-config
rancher:
network:
interfaces:
eth0:
dhcp: true
eth1:
dhcp: true
lo:
address: 127.0.0.1/8
ssh_authorized_keys:
- $AUTHORIZED_KEY1
- $AUTHORIZED_KEY2
users:
- name: docker
ssh_authorized_keys:
- $AUTHORIZED_KEY1
- $AUTHORIZED_KEY2
EOF
fi
fi fi

View File

@@ -33,6 +33,13 @@ if [ ! -d ${RANCHER_HOME} ]; then
chmod 2755 ${RANCHER_HOME} chmod 2755 ${RANCHER_HOME}
fi fi
DOCKER_HOME=/home/docker
if [ ! -d ${DOCKER_HOME} ]; then
mkdir -p ${DOCKER_HOME}
chown docker:docker ${DOCKER_HOME}
chmod 2755 ${DOCKER_HOME}
fi
for i in $(</proc/cmdline); do for i in $(</proc/cmdline); do
case $i in case $i in
rancher.password=*) rancher.password=*)

View File

@@ -12,6 +12,7 @@ RUN addgroup --gid 1100 rancher && \
addgroup --gid 1101 docker && \ addgroup --gid 1101 docker && \
useradd -u 1100 -g rancher -G docker,sudo -m -s /bin/bash rancher && \ useradd -u 1100 -g rancher -G docker,sudo -m -s /bin/bash rancher && \
echo '## allow password less for rancher user' >> /etc/sudoers && \ echo '## allow password less for rancher user' >> /etc/sudoers && \
echo 'rancher ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers echo 'rancher ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \
echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
ENTRYPOINT ["/usr/sbin/entry.sh"] ENTRYPOINT ["/usr/sbin/entry.sh"]
CMD ["/usr/sbin/console.sh"] CMD ["/usr/sbin/console.sh"]