Hi folks! I wrote this post on github https://github.com/apache/bigtop/pull/374, but, it will be better to move this discussion to mail.
TL;DR Just before support ubuntu 18.04 we should do some major things, and before doing it we should reach an agreement: * Support puppet 5, current version is 3. * Rewrite templating and code generation of initrd scripts and support systemd services. * Use aptly insteadof reprepro for debian-based distros? Okey, now longread: Ubuntu 18.04 supports only puppet 5, but in bigtop we are using puppet 3. I've tried to using manifests from third version, but puppet fifth have new keyword like site, and some configs clashes with puppet 5. I fixed that, but, i don't know, maybe some problems are still there. Living with manifests for two versions is not good idea, so we need to choice one of them and migrate all code to newest deploy system. Ubuntu 18.04 have magic converting tool from sysvinit to systemd services, but it doesn't work with current initd scritps. I successfully tried to write some of systemd services, but this way have a couple of shades: a) We should generate this services as we generate initd services, but the current way is a bit of weird. A lot of bash templating, and current "bash templates" a not usable for new systemd services, just because the same things in both ways are very different. Working with locks, pids, controlling aliveness of a process, controlling user and group. I've tried to change current bash templates, but the code looks ugly. b) A lot of components. And each components have a lot of services. I just can't write a templating script for all of this scripts, because every service have own specific things in bash methods, and u cannot convert it automatically, only by reading your eyes. c) Current initrd scripts have custom features like rollingupgrade and init in hdfs-namenode. Systemd doesn't support that, and the right ways is -- create new systemd service only for that! For each custom feature and action -- new systemd service. A lot of services. This is not blocker issue, but the execution of ./gradlew apt on builded components doesn't support *.ddeb artifacts. Newest reprepro doesn't support this files, and the problem looks like this https://github.com/ros-infrastructure/buildfarm_deployment/issues/186 and we have three ways: a) skip these artifacts, weird way; b) use new version of reprepro not from ubuntu repositories, which is also weird; c) use tool like https://www.aptly.info, which is more supportable and powerful in features. If anyone have a time for support 18.04 it would be great for doing it together with splitting this pull request to sub tasks and discussion it. So, anyone?:) --- Mikhail Epikhin
