Skip to content

Add support ubuntu 18.04#374

Open
epikhinm wants to merge 5 commits intoapache:masterfrom
epikhinm:feature/add-support-ubuntu-18.04
Open

Add support ubuntu 18.04#374
epikhinm wants to merge 5 commits intoapache:masterfrom
epikhinm:feature/add-support-ubuntu-18.04

Conversation

@epikhinm
Copy link
Contributor

Hi!

You are deleted support of ubuntu 14.04 LTS before end of life, soo i've added support ubuntu 18.04 LTS for amd64.
At ubuntu 18.04 we only have puppet 5.3 and we should add old directory /etc/puppet/modules as modulepath.
Pls, check this out. Feel free for feedback.

@JunHe77
Copy link
Contributor

JunHe77 commented Jul 17, 2018

Thanks for the patch, @epikhinm .
I'll try this patch and see if the bigtop packages work on Ubuntu-18.04.

@epikhinm
Copy link
Contributor Author

Nice, could you show me how are you testing?
Today documentation is lean, or maybe i doesn't fully understood it

@evans-ye
Copy link
Contributor

Basically, you need to first get packages built:
https://cwiki.apache.org/confluence/display/BIGTOP/How+to+build+Bigtop-trunk

And then deploy:
https://cwiki.apache.org/confluence/display/BIGTOP/Bigtop+Provisioner+User+Guide

If you hit any problem, feel free to post it on dev@bigtop.apache.org

dnf -y install hostname findutils curl sudo unzip wget puppet puppetlabs-stdlib
;;
ubuntu-16.04)
ubuntu-1[6,8].04)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be better to create another entry for 18.04 as there are different packages to be installed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. Having another paragraph yield better readably.

ubuntu-16.04)
ubuntu-1[6,8].04)
apt-get update
apt-get -y install wget curl sudo unzip puppet software-properties-common puppet-module-puppetlabs-apt puppet-module-puppetlabs-stdlib
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On ubuntu-18.04 two extra packages need to be installed to get successful bigtop build:
rsync, dh-python

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, sounds strange. I've builded bigtop and some packages (hadoop, hive, hbase, and zookeeper) without these dependencies.

But ok, i'll add your opinion as a patch.

I also have small troubles with systemd on ubuntu-18.04, standard "sysvinit compatibility" doesn't work properly. In the current initd scripts we creating lock directories, pid files. Systemd expect than file have same pair owner-group as a main process, but it don't.

I wrote new template for systemd services, but doesn't debugged it yet.

Give me a couple of days for this patches :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've read code of generating init.d scripts for all components, aaand it's not so easy to create new templating script for all systemd services, because ~30 services have a custom generate* methods.

Copy link
Contributor Author

@epikhinm epikhinm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi folks!

I have a many problems with this pull request, and i don't think that i have a lot of time and energy for doing this by oneself.

TL;DR
Just before support ubuntu 18.04 we should do some major things, and before doing it we should reach an agreement:

  1. Support puppet 5, current version is 3.
  2. Rewrite templating and code generation of initrd scripts and support systemd services.
  3. Use aptly insteadof reprepro ?

Okey, now longread:

  1. 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.

  2. 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 componenents. 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.

  3. 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 ros-infrastructure/buildfarm_deployment#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.

  4. Also not blocker, but the building of packages right now doesn't sign they. If you trying to run integration tests with packages from the repository on local filesystem, the default behavior for ubuntu is reject all unsigned packages. So, just installing components doesn't work with repository on filesystem. We should sign the packages, or, add option allow_unsigned => true in bigtop-deploy/puppet/manifests/bigtop_repo.pp and [trusted=yes]`` inprovisioner/utils/setup-env-debian.sh``` for trust unsigned artifacts.

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?:)

ubuntu-16.04)
ubuntu-1[6,8].04)
apt-get update
apt-get -y install wget curl sudo unzip puppet software-properties-common puppet-module-puppetlabs-apt puppet-module-puppetlabs-stdlib
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've read code of generating init.d scripts for all components, aaand it's not so easy to create new templating script for all systemd services, because ~30 services have a custom generate* methods.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants