mirror of
https://github.com/rancher/os.git
synced 2025-08-10 19:12:30 +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:
parent
5d298d5782
commit
ed368597f6
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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/* \
|
||||
|
@ -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
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 74 KiB |
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user