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:
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_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
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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/* \
|
||||||
|
@ -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 |
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user