diff --git a/Dockerfile.dapper b/Dockerfile.dapper index 44f1a838..a8fca136 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -87,7 +87,7 @@ ARG SYSTEM_DOCKER_VERSION=17.06.107 ARG SYSTEM_DOCKER_URL_amd64=https://github.com/burmilla/os-system-docker/releases/download/${SYSTEM_DOCKER_VERSION}/docker-amd64-${SYSTEM_DOCKER_VERSION}.tgz ARG SYSTEM_DOCKER_URL_arm64=https://github.com/burmilla/os-system-docker/releases/download/${SYSTEM_DOCKER_VERSION}/docker-arm64-${SYSTEM_DOCKER_VERSION}.tgz -ARG USER_DOCKER_VERSION=26.1.4 +ARG USER_DOCKER_VERSION=latest ARG USER_DOCKER_ENGINE_VERSION=docker-${USER_DOCKER_VERSION} ARG AZURE_SERVICE=false diff --git a/cmd/control/console_init.go b/cmd/control/console_init.go index cc0f6cdf..1b0c2ef5 100644 --- a/cmd/control/console_init.go +++ b/cmd/control/console_init.go @@ -142,6 +142,34 @@ func consoleInitFunc() error { } } + const pollInfo = `#!/bin/sh +export TERM=xterm-256color + +echo " + + +$(tput setaf 3) + -------------------------------------------------- + | Dear Burmilla OS user, | + | Please, answer to poll in $(tput setaf 4)burmillaos.org/poll$(tput setaf 3) | + | about your main Burmilla OS use case. | + | | + | Thank you advance. | + | | + | You can disable this message with command: | + | $(tput setaf 5)sudo chmod a-x /etc/update-motd.d/1-burmillaos-1$(tput setaf 3) | + -------------------------------------------------- +$(tput sgr0) + + +" +` + if _, err := os.Stat("/etc/update-motd.d/1-burmillaos-1"); os.IsNotExist(err) { + if err := ioutil.WriteFile("/etc/update-motd.d/1-burmillaos-1", []byte(pollInfo), 0755); err != nil { + log.Error(err) + } + } + if err := setupSSH(cfg); err != nil { log.Error(err) } @@ -183,20 +211,36 @@ func consoleInitFunc() error { }) } - // create placeholder for docker-compose binary - const ComposePlaceholder = ` -#!/bin/bash -echo 'INFO: System service "docker-compose" is not yet enabled' -sudo ros service enable docker-compose -sudo ros service up docker-compose + // create placeholder for docker binary with "docker compose" support + const DockerPlaceholder = `#!/bin/bash +if [ "$1" == "compose" ]; then + /usr/local/bin/docker-compose "${@:2}" +elif [ "$1" == "build" ]; then + DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2) + docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -w /build -v $PWD:/build docker:$DOCKER_VERSION-cli docker build "${@:2}" +elif [ "$1" == "builder" ]; then + DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2) + docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -w /builder -v $PWD:/builder docker:$DOCKER_VERSION-cli docker builder "${@:2}" +elif [ "$1" == "buildx" ]; then + DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2) + docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -w /buildx -v $PWD:/buildx docker:$DOCKER_VERSION-cli docker buildx "${@:2}" +else + /usr/bin/docker "$@" +fi ` - if _, err := os.Stat("/var/lib/rancher/compose"); os.IsNotExist(err) { - if err := os.MkdirAll("/var/lib/rancher/compose", 0555); err != nil { + if _, err := os.Stat("/usr/local/bin/docker"); os.IsNotExist(err) { + if err := ioutil.WriteFile("/usr/local/bin/docker", []byte(DockerPlaceholder), 0755); err != nil { log.Error(err) } } - if _, err := os.Stat("/var/lib/rancher/compose/docker-compose"); os.IsNotExist(err) { - if err := ioutil.WriteFile("/var/lib/rancher/compose/docker-compose", []byte(ComposePlaceholder), 0755); err != nil { + + // create placeholder for docker-compose binary + const ComposePlaceholder = `#!/bin/bash +DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2) +docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -w /compose -v $PWD:/compose docker:$DOCKER_VERSION-cli docker compose "$@" +` + if _, err := os.Stat("/usr/local/bin/docker-compose"); os.IsNotExist(err) { + if err := ioutil.WriteFile("/usr/local/bin/docker-compose", []byte(ComposePlaceholder), 0755); err != nil { log.Error(err) } } @@ -281,6 +325,17 @@ sudo ros service up docker-compose log.Error(err) } + // Check if user Docker has ever run in this installation yet and switch to latest version if not + if _, err := os.Stat("/var/lib/docker/engine-id"); os.IsNotExist(err) { + log.Warn("User Docker does not exist, switching to latest version") + cmd := exec.Command("/usr/bin/ros", "engine", "switch", "latest") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + log.Error(err) + } + } + // Enable Bash colors enableBashRC("/root", 0, 0) enableBashRC(rancherHome, 1100, 1100) diff --git a/cmd/control/engine.go b/cmd/control/engine.go index fc688bbf..36f6e39d 100644 --- a/cmd/control/engine.go +++ b/cmd/control/engine.go @@ -129,7 +129,19 @@ func engineSwitch(c *cli.Context) error { newEngine := c.Args()[0] cfg := config.LoadConfig() - validateEngine(newEngine, cfg) + + if newEngine == "latest" { + engines := availableEngines(cfg, true) + newEngine = engines[len(engines)-1] + currentEngine := CurrentEngine() + if newEngine == currentEngine { + log.Infof("Latest engine %s is already running", newEngine) + return nil + } + log.Infof("Switching to engine %s", newEngine) + } else { + validateEngine(newEngine, cfg) + } project, err := compose.GetProject(cfg, true, false) if err != nil { @@ -282,14 +294,28 @@ func engineList(c *cli.Context) error { engines := availableEngines(cfg, c.Bool("update")) currentEngine := CurrentEngine() + i := 1 for _, engine := range engines { if engine == currentEngine { - fmt.Printf("current %s\n", engine) + if i == len(engines) { + fmt.Printf("current %s (latest)\n", engine) + } else { + fmt.Printf("current %s\n", engine) + } } else if engine == cfg.Rancher.Docker.Engine { - fmt.Printf("enabled %s\n", engine) + if i == len(engines) { + fmt.Printf("enabled %s (latest)\n", engine) + } else { + fmt.Printf("enabled %s\n", engine) + } } else { - fmt.Printf("disabled %s\n", engine) + if i == len(engines) { + fmt.Printf("disabled %s (latest)\n", engine) + } else { + fmt.Printf("disabled %s\n", engine) + } } + i++ } // check the dind container diff --git a/cmd/control/user_docker.go b/cmd/control/user_docker.go index 8adecfd3..03f320ca 100644 --- a/cmd/control/user_docker.go +++ b/cmd/control/user_docker.go @@ -27,7 +27,6 @@ const ( sourceDirectory = "/engine" destDirectory = "/var/lib/rancher/engine" dockerCompletionFName = "completion" - dockerComposeFName = "docker-compose" ) var ( @@ -100,10 +99,6 @@ func copyBinaries(source, dest string) error { if err := os.Chmod(destFile, 0644); err != nil { return err } - } else if file.Name() == dockerComposeFName { - if err := os.Chmod(destFile, 0755); err != nil { - return err - } } else { if err := os.Chmod(destFile, 0751); err != nil { return err diff --git a/cmd/control/util.go b/cmd/control/util.go index 2c173505..e899dd99 100644 --- a/cmd/control/util.go +++ b/cmd/control/util.go @@ -54,8 +54,6 @@ func symLinkEngineBinary() []symlink { {"/var/lib/rancher/engine/docker-containerd-ctr", "/usr/bin/docker-containerd-ctr"}, {"/var/lib/rancher/engine/docker-containerd-shim", "/usr/bin/docker-containerd-shim"}, {"/var/lib/rancher/engine/docker-runc", "/usr/bin/docker-runc"}, - - {"/var/lib/rancher/compose/docker-compose", "/usr/bin/docker-compose"}, } return baseSymlink } diff --git a/images/02-console/Dockerfile b/images/02-console/Dockerfile index 7b41e20c..02235bfd 100644 --- a/images/02-console/Dockerfile +++ b/images/02-console/Dockerfile @@ -8,7 +8,7 @@ RUN apt-get update \ sudo less curl ca-certificates psmisc htop kmod iproute2 \ net-tools bash-completion wget \ nano open-iscsi iputils-ping nvi \ - apparmor \ + apparmor nfs-common \ && update-alternatives --set iptables /usr/sbin/iptables-legacy \ && update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy \ && rm -rf /var/lib/apt/lists/* \ diff --git a/os-config.tpl.yml b/os-config.tpl.yml index 52050d09..480808da 100644 --- a/os-config.tpl.yml +++ b/os-config.tpl.yml @@ -87,7 +87,7 @@ rancher: - configdrive:/media/config-2 repositories: core: - url: {{.OS_SERVICES_REPO}}/{{.REPO_VERSION}} + url: {{.OS_SERVICES_REPO}}/v2.0.x state: fstype: auto oem_fstype: auto diff --git a/scripts/burmilla.png b/scripts/burmilla.png deleted file mode 100644 index be05e54e..00000000 Binary files a/scripts/burmilla.png and /dev/null differ diff --git a/scripts/package-installer b/scripts/package-installer index a39b6fb5..97e09c54 100755 --- a/scripts/package-installer +++ b/scripts/package-installer @@ -29,8 +29,6 @@ if [ "$OS_AUTOFORMAT" = "true" ]; then else cat scripts/global.cfg | envsubst > ${DIST}/boot/global.cfg fi -cp scripts/burmilla.png ${DIST}/boot/ - mkdir -p ./scripts/installer/build/boot cp ./bin/ros ./scripts/installer/build