burmilla / os

Tiny Linux distro that runs the entire OS as Docker containers
https://burmillaos.org
Apache License 2.0
210 stars 13 forks source link

Console container not updated after upgrade #150

Closed netsandbox closed 6 months ago

netsandbox commented 1 year ago

BurmillaOS Version: (ros os version) v1.9.6

Where are you running BurmillaOS? (docker-machine, AWS, GCE, baremetal, etc.) HyperV VM

Which processor architecture you are using? amd64

After Upgrading from v1.9.5 to v1.9.6 I noticed that the console container is not upgraded and still running version v1.9.5:

$ sudo ros os version
v1.9.6

$ sudo system-docker container ls --filter name=console
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS               NAMES
70f34c0f6968        burmilla/os-console:v1.9.5   "/usr/bin/ros entr..."   3 months ago        Up 9 minutes                            console

Is this the intended behavior that I have to manually update the console container with:

$ sudo ros console switch default

$ sudo system-docker container ls --filter name=console
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS               NAMES
68caeb726815        burmilla/os-console:v1.9.6   "/usr/bin/ros entr..."   43 seconds ago      Up 42 seconds                           console
olljanat commented 1 year ago

Is this the intended behavior that I have to manually update the console container with:

Yes, that why it is also mentioned in documentation https://burmillaos.org/docs/installation/upgrading/#upgrade-rancheros-to-burmillaos

That is because some users like to store some files to console which will disappear on console upgrade.

netsandbox commented 1 year ago

But this is only mentioned under "Upgrade RancherOS to BurmillaOS". Maybe there should be a mention also under https://burmillaos.org/docs/installation/upgrading/#upgrading-1, that if you want to use the latest console container you must run sudo ros console switch default.

PrplHaz4 commented 1 year ago

But this is only mentioned under "Upgrade RancherOS to BurmillaOS". Maybe there should be a mention also under https://burmillaos.org/docs/installation/upgrading/#upgrading-1, that if you want to use the latest console container you must run sudo ros console switch default.

Agreed - it was not immediately clear to me that every upgrade would need sudo ros console switch default to get the latest. As a user my expectation would be that all system containers are upgraded during ros upgrade.

A Y/N switch to include console during ros upgrade or a note at the end of the upgrade command prior to reboot (with a link to console persistence doc) would be the most helpful IMO.

Sample message:

os-console is not upgraded by default - to upgrade after reboot, run sudo ros console switch default. Any files stored outside of persistent directories will be permanently deleted. See https://burmillaos.org/docs/installation/custom-builds/custom-console/#console-persistence

olljanat commented 1 year ago

Documentation is build from https://github.com/burmilla/burmilla.github.io Feel free to create pull requests to improve it.

PrplHaz4 commented 1 year ago

Documentation is build from https://github.com/burmilla/burmilla.github.io Feel free to create pull requests to improve it.

There's a statement on that page saying "ros console switch has several bugs since RancherOS era, please use “ Enabling consoles” below."

Should we be instructing users to use ros console enable default after an upgrade instead?

olljanat commented 1 year ago

Should we be instructing users to use ros console enable default after an upgrade instead?

Probably because it is not bug but feature which comes from https://github.com/burmilla/os/blob/v1.9.6/os-config.tpl.yml#L246

In additionally we can instruct users to update that setting to always which should make console non-persistent.

PrplHaz4 commented 1 year ago

Should we be instructing users to use ros console enable default after an upgrade instead?

Probably because it is not bug but feature which comes from https://github.com/burmilla/os/blob/v1.9.6/os-config.tpl.yml#L246

In additionally we can instruct users to update that setting to always which should make console non-persistent.

I submitted a PR here: https://github.com/burmilla/burmilla.github.io/pull/21

Unfortunately ros console enable does not force a recreate of the container, so ros console switch is required to recreate/update the os-console container so that's what I included.

olljanat commented 1 year ago

In additionally we can instruct users to update that setting to always which should make console non-persistent.

What I did mean with this one is that it should be possible to use cloud-init like this:

rancher:
  services:
    console:
      labels:
        io.rancher.os.scope: system
        io.rancher.os.after: network
        io.docker.compose.rebuild: "always"
        io.rancher.os.console: default

to overwrite values in os-config.tpl.yml

But that need to be tested if it works correctly and that do we really need set all those labels or will it works fine if user just set value for io.docker.compose.rebuild (might be that other labels disappear from config then).

PrplHaz4 commented 1 year ago

But that need to be tested if it works correctly and that do we really need set all those labels or will it works fine if user just set value for io.docker.compose.rebuild (might be that other labels disappear from config then).

Thanks @olljanat - I didn't test/verify that so didn't want to write anymore about it.

olljanat commented 9 months ago

WDYT, should we change console to non-persistent by default in 2.0.0 release version (or RC2 if we release that)?

After all it is very simple one line change to this https://github.com/burmilla/os/blob/615b3d4f7c4710580ba689e515082baa132548ea/os-config.tpl.yml#L245 but challenge is that it might be confusing for those who have used to current behavior.

As recap for those who have not followed whole story. In RancherOS, default console was non-persistent but others was persistent and because in #9 we decided to switch to Debian console it did came as persistent.

Let vote. Leave give 👍 if you support changing console to non-persistent and 👎 if you prefer to keep it console persistent by default.

dwaite commented 9 months ago

The primary issue I have with a non-persistent console is that I do not know of a cron alternative.

olljanat commented 9 months ago

Way how things works with non-persistent console is that everything needs to be configured with cloud-init. So either use https://burmillaos.org/docs/system-services/custom-system-services/#cron or rc.local or with https://burmillaos.org/docs/configuration/advanced/write-files/

However, things gets quite tricky on that one so perhaps we should use logic where console is rebuild automatically in upgrade but not in reboot.

dwaite commented 9 months ago

It could also be that I just don't know patterns here; I have my cron tasks all containerized, but had difficulty figuring out best practices for a scheduler

PrplHaz4 commented 9 months ago

WDYT, should we change console to non-persistent by default in 2.0.0 release version (or RC2 if we release that)?

After all it is very simple one line change to this

https://github.com/burmilla/os/blob/615b3d4f7c4710580ba689e515082baa132548ea/os-config.tpl.yml#L245

but challenge is that it might be confusing for those who have used to current behavior.

As recap for those who have not followed whole story. In RancherOS, default console was non-persistent but others was persistent and because in #9 we decided to switch to Debian console it did came as persistent.

Let vote. Leave give 👍 if you support changing console to non-persistent and 👎 if you prefer to keep it console persistent by default.

I'm avoiding answering because I don't fully understand the implications. If this is done will there not be any persistent directories at all, or is it just limited to locations provided by the console container (which are...?)...will I need to explicitly create any files under /home in cloud-config instead...etc. I recognize there's not a simple answer so don't expect one but hoping to learn from the discussion :)

olljanat commented 6 months ago

Looks that rebuild is not mandatory anymore in v2.0.0 but user can choose upgrade or not the console so closing this one.