Skip to content
This repository was archived by the owner on Oct 11, 2023. It is now read-only.

Commit ed36859

Browse files
committed
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
1 parent 5d298d5 commit ed36859

9 files changed

+98
-26
lines changed

Dockerfile.dapper

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ ARG SYSTEM_DOCKER_VERSION=17.06.107
8787
ARG SYSTEM_DOCKER_URL_amd64=https://github.com/burmilla/os-system-docker/releases/download/${SYSTEM_DOCKER_VERSION}/docker-amd64-${SYSTEM_DOCKER_VERSION}.tgz
8888
ARG SYSTEM_DOCKER_URL_arm64=https://github.com/burmilla/os-system-docker/releases/download/${SYSTEM_DOCKER_VERSION}/docker-arm64-${SYSTEM_DOCKER_VERSION}.tgz
8989

90-
ARG USER_DOCKER_VERSION=26.1.4
90+
ARG USER_DOCKER_VERSION=latest
9191
ARG USER_DOCKER_ENGINE_VERSION=docker-${USER_DOCKER_VERSION}
9292

9393
ARG AZURE_SERVICE=false

cmd/control/console_init.go

+65-10
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,34 @@ func consoleInitFunc() error {
142142
}
143143
}
144144

145+
const pollInfo = `#!/bin/sh
146+
export TERM=xterm-256color
147+
148+
echo "
149+
150+
151+
$(tput setaf 3)
152+
--------------------------------------------------
153+
| Dear Burmilla OS user, |
154+
| Please, answer to poll in $(tput setaf 4)burmillaos.org/poll$(tput setaf 3) |
155+
| about your main Burmilla OS use case. |
156+
| |
157+
| Thank you advance. |
158+
| |
159+
| You can disable this message with command: |
160+
| $(tput setaf 5)sudo chmod a-x /etc/update-motd.d/1-burmillaos-1$(tput setaf 3) |
161+
--------------------------------------------------
162+
$(tput sgr0)
163+
164+
165+
"
166+
`
167+
if _, err := os.Stat("/etc/update-motd.d/1-burmillaos-1"); os.IsNotExist(err) {
168+
if err := ioutil.WriteFile("/etc/update-motd.d/1-burmillaos-1", []byte(pollInfo), 0755); err != nil {
169+
log.Error(err)
170+
}
171+
}
172+
145173
if err := setupSSH(cfg); err != nil {
146174
log.Error(err)
147175
}
@@ -183,20 +211,36 @@ func consoleInitFunc() error {
183211
})
184212
}
185213

186-
// create placeholder for docker-compose binary
187-
const ComposePlaceholder = `
188-
#!/bin/bash
189-
echo 'INFO: System service "docker-compose" is not yet enabled'
190-
sudo ros service enable docker-compose
191-
sudo ros service up docker-compose
214+
// create placeholder for docker binary with "docker compose" support
215+
const DockerPlaceholder = `#!/bin/bash
216+
if [ "$1" == "compose" ]; then
217+
/usr/local/bin/docker-compose "${@:2}"
218+
elif [ "$1" == "build" ]; then
219+
DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2)
220+
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}"
221+
elif [ "$1" == "builder" ]; then
222+
DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2)
223+
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}"
224+
elif [ "$1" == "buildx" ]; then
225+
DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2)
226+
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}"
227+
else
228+
/usr/bin/docker "$@"
229+
fi
192230
`
193-
if _, err := os.Stat("/var/lib/rancher/compose"); os.IsNotExist(err) {
194-
if err := os.MkdirAll("/var/lib/rancher/compose", 0555); err != nil {
231+
if _, err := os.Stat("/usr/local/bin/docker"); os.IsNotExist(err) {
232+
if err := ioutil.WriteFile("/usr/local/bin/docker", []byte(DockerPlaceholder), 0755); err != nil {
195233
log.Error(err)
196234
}
197235
}
198-
if _, err := os.Stat("/var/lib/rancher/compose/docker-compose"); os.IsNotExist(err) {
199-
if err := ioutil.WriteFile("/var/lib/rancher/compose/docker-compose", []byte(ComposePlaceholder), 0755); err != nil {
236+
237+
// create placeholder for docker-compose binary
238+
const ComposePlaceholder = `#!/bin/bash
239+
DOCKER_VERSION=$(sudo system-docker inspect --format "{{.Config.Image}}" docker | cut -d ":" -f 2)
240+
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -w /compose -v $PWD:/compose docker:$DOCKER_VERSION-cli docker compose "$@"
241+
`
242+
if _, err := os.Stat("/usr/local/bin/docker-compose"); os.IsNotExist(err) {
243+
if err := ioutil.WriteFile("/usr/local/bin/docker-compose", []byte(ComposePlaceholder), 0755); err != nil {
200244
log.Error(err)
201245
}
202246
}
@@ -281,6 +325,17 @@ sudo ros service up docker-compose
281325
log.Error(err)
282326
}
283327

328+
// Check if user Docker has ever run in this installation yet and switch to latest version if not
329+
if _, err := os.Stat("/var/lib/docker/engine-id"); os.IsNotExist(err) {
330+
log.Warn("User Docker does not exist, switching to latest version")
331+
cmd := exec.Command("/usr/bin/ros", "engine", "switch", "latest")
332+
cmd.Stdout = os.Stdout
333+
cmd.Stderr = os.Stderr
334+
if err := cmd.Run(); err != nil {
335+
log.Error(err)
336+
}
337+
}
338+
284339
// Enable Bash colors
285340
enableBashRC("/root", 0, 0)
286341
enableBashRC(rancherHome, 1100, 1100)

cmd/control/engine.go

+30-4
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,19 @@ func engineSwitch(c *cli.Context) error {
129129
newEngine := c.Args()[0]
130130

131131
cfg := config.LoadConfig()
132-
validateEngine(newEngine, cfg)
132+
133+
if newEngine == "latest" {
134+
engines := availableEngines(cfg, true)
135+
newEngine = engines[len(engines)-1]
136+
currentEngine := CurrentEngine()
137+
if newEngine == currentEngine {
138+
log.Infof("Latest engine %s is already running", newEngine)
139+
return nil
140+
}
141+
log.Infof("Switching to engine %s", newEngine)
142+
} else {
143+
validateEngine(newEngine, cfg)
144+
}
133145

134146
project, err := compose.GetProject(cfg, true, false)
135147
if err != nil {
@@ -282,14 +294,28 @@ func engineList(c *cli.Context) error {
282294
engines := availableEngines(cfg, c.Bool("update"))
283295
currentEngine := CurrentEngine()
284296

297+
i := 1
285298
for _, engine := range engines {
286299
if engine == currentEngine {
287-
fmt.Printf("current %s\n", engine)
300+
if i == len(engines) {
301+
fmt.Printf("current %s (latest)\n", engine)
302+
} else {
303+
fmt.Printf("current %s\n", engine)
304+
}
288305
} else if engine == cfg.Rancher.Docker.Engine {
289-
fmt.Printf("enabled %s\n", engine)
306+
if i == len(engines) {
307+
fmt.Printf("enabled %s (latest)\n", engine)
308+
} else {
309+
fmt.Printf("enabled %s\n", engine)
310+
}
290311
} else {
291-
fmt.Printf("disabled %s\n", engine)
312+
if i == len(engines) {
313+
fmt.Printf("disabled %s (latest)\n", engine)
314+
} else {
315+
fmt.Printf("disabled %s\n", engine)
316+
}
292317
}
318+
i++
293319
}
294320

295321
// check the dind container

cmd/control/user_docker.go

-5
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ const (
2727
sourceDirectory = "/engine"
2828
destDirectory = "/var/lib/rancher/engine"
2929
dockerCompletionFName = "completion"
30-
dockerComposeFName = "docker-compose"
3130
)
3231

3332
var (
@@ -100,10 +99,6 @@ func copyBinaries(source, dest string) error {
10099
if err := os.Chmod(destFile, 0644); err != nil {
101100
return err
102101
}
103-
} else if file.Name() == dockerComposeFName {
104-
if err := os.Chmod(destFile, 0755); err != nil {
105-
return err
106-
}
107102
} else {
108103
if err := os.Chmod(destFile, 0751); err != nil {
109104
return err

cmd/control/util.go

-2
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ func symLinkEngineBinary() []symlink {
5454
{"/var/lib/rancher/engine/docker-containerd-ctr", "/usr/bin/docker-containerd-ctr"},
5555
{"/var/lib/rancher/engine/docker-containerd-shim", "/usr/bin/docker-containerd-shim"},
5656
{"/var/lib/rancher/engine/docker-runc", "/usr/bin/docker-runc"},
57-
58-
{"/var/lib/rancher/compose/docker-compose", "/usr/bin/docker-compose"},
5957
}
6058
return baseSymlink
6159
}

images/02-console/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ RUN apt-get update \
88
sudo less curl ca-certificates psmisc htop kmod iproute2 \
99
net-tools bash-completion wget \
1010
nano open-iscsi iputils-ping nvi \
11-
apparmor \
11+
apparmor nfs-common \
1212
&& update-alternatives --set iptables /usr/sbin/iptables-legacy \
1313
&& update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy \
1414
&& rm -rf /var/lib/apt/lists/* \

os-config.tpl.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ rancher:
8787
- configdrive:/media/config-2
8888
repositories:
8989
core:
90-
url: {{.OS_SERVICES_REPO}}/{{.REPO_VERSION}}
90+
url: {{.OS_SERVICES_REPO}}/v2.0.x
9191
state:
9292
fstype: auto
9393
oem_fstype: auto

scripts/burmilla.png

-74 KB
Binary file not shown.

scripts/package-installer

-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ if [ "$OS_AUTOFORMAT" = "true" ]; then
2929
else
3030
cat scripts/global.cfg | envsubst > ${DIST}/boot/global.cfg
3131
fi
32-
cp scripts/burmilla.png ${DIST}/boot/
33-
3432

3533
mkdir -p ./scripts/installer/build/boot
3634
cp ./bin/ros ./scripts/installer/build

0 commit comments

Comments
 (0)