1
0
mirror of https://github.com/rancher/os.git synced 2025-08-14 04:46:18 +00:00

v2.0.2-rc2

* Include NFS client to console
* Support command "ros engine switch latest"
* Use long term branch v2.0.x for os-services
* Use docker build, builder, buildx and compose from docker:cli container
* Unify docker compose and docker-compose commands
* Automatically select latest docker version in first boot
This commit is contained in:
Olli Janatuinen 2024-10-19 07:19:06 +00:00
parent 5d298d5782
commit ed368597f6
9 changed files with 98 additions and 26 deletions

View File

@ -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_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 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 USER_DOCKER_ENGINE_VERSION=docker-${USER_DOCKER_VERSION}
ARG AZURE_SERVICE=false ARG AZURE_SERVICE=false

View File

@ -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 { if err := setupSSH(cfg); err != nil {
log.Error(err) log.Error(err)
} }
@ -183,20 +211,36 @@ func consoleInitFunc() error {
}) })
} }
// create placeholder for docker-compose binary // create placeholder for docker binary with "docker compose" support
const ComposePlaceholder = ` const DockerPlaceholder = `#!/bin/bash
#!/bin/bash if [ "$1" == "compose" ]; then
echo 'INFO: System service "docker-compose" is not yet enabled' /usr/local/bin/docker-compose "${@:2}"
sudo ros service enable docker-compose elif [ "$1" == "build" ]; then
sudo ros service up docker-compose 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.Stat("/usr/local/bin/docker"); os.IsNotExist(err) {
if err := os.MkdirAll("/var/lib/rancher/compose", 0555); err != nil { if err := ioutil.WriteFile("/usr/local/bin/docker", []byte(DockerPlaceholder), 0755); err != nil {
log.Error(err) 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) log.Error(err)
} }
} }
@ -281,6 +325,17 @@ sudo ros service up docker-compose
log.Error(err) 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 // Enable Bash colors
enableBashRC("/root", 0, 0) enableBashRC("/root", 0, 0)
enableBashRC(rancherHome, 1100, 1100) enableBashRC(rancherHome, 1100, 1100)

View File

@ -129,7 +129,19 @@ func engineSwitch(c *cli.Context) error {
newEngine := c.Args()[0] newEngine := c.Args()[0]
cfg := config.LoadConfig() cfg := config.LoadConfig()
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) validateEngine(newEngine, cfg)
}
project, err := compose.GetProject(cfg, true, false) project, err := compose.GetProject(cfg, true, false)
if err != nil { if err != nil {
@ -282,15 +294,29 @@ func engineList(c *cli.Context) error {
engines := availableEngines(cfg, c.Bool("update")) engines := availableEngines(cfg, c.Bool("update"))
currentEngine := CurrentEngine() currentEngine := CurrentEngine()
i := 1
for _, engine := range engines { for _, engine := range engines {
if engine == currentEngine { if engine == currentEngine {
if i == len(engines) {
fmt.Printf("current %s (latest)\n", engine)
} else {
fmt.Printf("current %s\n", engine) fmt.Printf("current %s\n", engine)
}
} else if engine == cfg.Rancher.Docker.Engine { } else if engine == cfg.Rancher.Docker.Engine {
if i == len(engines) {
fmt.Printf("enabled %s (latest)\n", engine)
} else {
fmt.Printf("enabled %s\n", engine) fmt.Printf("enabled %s\n", engine)
}
} else {
if i == len(engines) {
fmt.Printf("disabled %s (latest)\n", engine)
} else { } else {
fmt.Printf("disabled %s\n", engine) fmt.Printf("disabled %s\n", engine)
} }
} }
i++
}
// check the dind container // check the dind container
client, err := docker.NewSystemClient() client, err := docker.NewSystemClient()

View File

@ -27,7 +27,6 @@ const (
sourceDirectory = "/engine" sourceDirectory = "/engine"
destDirectory = "/var/lib/rancher/engine" destDirectory = "/var/lib/rancher/engine"
dockerCompletionFName = "completion" dockerCompletionFName = "completion"
dockerComposeFName = "docker-compose"
) )
var ( var (
@ -100,10 +99,6 @@ func copyBinaries(source, dest string) error {
if err := os.Chmod(destFile, 0644); err != nil { if err := os.Chmod(destFile, 0644); err != nil {
return err return err
} }
} else if file.Name() == dockerComposeFName {
if err := os.Chmod(destFile, 0755); err != nil {
return err
}
} else { } else {
if err := os.Chmod(destFile, 0751); err != nil { if err := os.Chmod(destFile, 0751); err != nil {
return err return err

View File

@ -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-ctr", "/usr/bin/docker-containerd-ctr"},
{"/var/lib/rancher/engine/docker-containerd-shim", "/usr/bin/docker-containerd-shim"}, {"/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/engine/docker-runc", "/usr/bin/docker-runc"},
{"/var/lib/rancher/compose/docker-compose", "/usr/bin/docker-compose"},
} }
return baseSymlink return baseSymlink
} }

View File

@ -8,7 +8,7 @@ RUN apt-get update \
sudo less curl ca-certificates psmisc htop kmod iproute2 \ sudo less curl ca-certificates psmisc htop kmod iproute2 \
net-tools bash-completion wget \ net-tools bash-completion wget \
nano open-iscsi iputils-ping nvi \ nano open-iscsi iputils-ping nvi \
apparmor \ apparmor nfs-common \
&& update-alternatives --set iptables /usr/sbin/iptables-legacy \ && update-alternatives --set iptables /usr/sbin/iptables-legacy \
&& update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy \ && update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \

View File

@ -87,7 +87,7 @@ rancher:
- configdrive:/media/config-2 - configdrive:/media/config-2
repositories: repositories:
core: core:
url: {{.OS_SERVICES_REPO}}/{{.REPO_VERSION}} url: {{.OS_SERVICES_REPO}}/v2.0.x
state: state:
fstype: auto fstype: auto
oem_fstype: auto oem_fstype: auto

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

View File

@ -29,8 +29,6 @@ if [ "$OS_AUTOFORMAT" = "true" ]; then
else else
cat scripts/global.cfg | envsubst > ${DIST}/boot/global.cfg cat scripts/global.cfg | envsubst > ${DIST}/boot/global.cfg
fi fi
cp scripts/burmilla.png ${DIST}/boot/
mkdir -p ./scripts/installer/build/boot mkdir -p ./scripts/installer/build/boot
cp ./bin/ros ./scripts/installer/build cp ./bin/ros ./scripts/installer/build