From c601349630520481a5235ab807878f3042d2805c Mon Sep 17 00:00:00 2001 From: fnoop Date: Tue, 21 Jan 2020 23:04:31 +0000 Subject: [PATCH] Add theia IDE support #831 --- .../maverick_web/manifests/init.pp | 7 ++- .../maverick_web/manifests/theia.pp | 59 +++++++++++++++++++ .../maverick_web/templates/theia.service.erb | 13 ++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 manifests/maverick-modules/maverick_web/manifests/theia.pp create mode 100644 manifests/maverick-modules/maverick_web/templates/theia.service.erb diff --git a/manifests/maverick-modules/maverick_web/manifests/init.pp b/manifests/maverick-modules/maverick_web/manifests/init.pp index 2e8f3d62..9a1a47c7 100644 --- a/manifests/maverick-modules/maverick_web/manifests/init.pp +++ b/manifests/maverick-modules/maverick_web/manifests/init.pp @@ -1,6 +1,7 @@ class maverick_web ( - $cloud9 = true, + $cloud9 = false, $codeserver = false, + $theia = false, $nodejs = true, $webserver = true, $webserver_type = "nginx", @@ -44,6 +45,10 @@ class { "maverick_web::codeserver": } } + if $theia == true { + class { "maverick_web::theia": } + } + file { [ "/srv/maverick/data/web", "/srv/maverick/config/web", "/srv/maverick/var/log/web", "/srv/maverick/var/lib/web", ]: ensure => directory, owner => "mav", diff --git a/manifests/maverick-modules/maverick_web/manifests/theia.pp b/manifests/maverick-modules/maverick_web/manifests/theia.pp new file mode 100644 index 00000000..d626736e --- /dev/null +++ b/manifests/maverick-modules/maverick_web/manifests/theia.pp @@ -0,0 +1,59 @@ +class maverick_web::theia ( + $active = true, + $webport = "6789", + $basepath = "/srv/maverick", + $password = "wingman", +) { + + ensure_packages(["libx11-dev", "libxkbfile-dev"]) + if ! ("install_flag_theia" in $installflags) { + oncevcsrepo { "git-theia": + gitsource => "https://github.com/eclipse-theia/theia", + dest => "/srv/maverick/software/theia", + } -> + exec { "theia-build": + path => ["/bin", "/usr/bin", "/opt/nodejs/bin"], + command => "yarn >/srv/maverick/var/log/build/theia.build.log 2>&1", + cwd => "/srv/maverick/software/theia", + creates => "/srv/maverick/software/theia/examples/api-samples/lib/browser/api-samples-contribution.js", + require => [ Package['yarn'], Package["libx11-dev"], Package["libxkbfile-dev"] ], + timeout => 0, + user => "mav", + } + } + + if defined(Class["::maverick_security"]) { + maverick_security::firewall::firerule { "theia": + ports => $webport, + ips => lookup("firewall_ips"), + proto => "tcp" + } + } + + # Control running service + if $active == true { + $_ensure = running + $_enable = true + } else { + $_ensure = stopped + $_enable = false + } + file { "/etc/systemd/system/maverick-theia.service": + content => template("maverick_web/theia.service.erb"), + owner => "root", + group => "root", + mode => "644", + notify => [ Exec["maverick-systemctl-daemon-reload"], Service["maverick-theia"] ], + } -> + service { "maverick-theia": + ensure => $_ensure, + enable => $_enable, + } + + # status.d entry + file { "/srv/maverick/software/maverick/bin/status.d/120.web/102.theia.status": + owner => "mav", + content => "theia,Theia IDE\n", + } + +} diff --git a/manifests/maverick-modules/maverick_web/templates/theia.service.erb b/manifests/maverick-modules/maverick_web/templates/theia.service.erb new file mode 100644 index 00000000..d5814616 --- /dev/null +++ b/manifests/maverick-modules/maverick_web/templates/theia.service.erb @@ -0,0 +1,13 @@ +[Unit] +Description=Theia IDE +After=network-online.target +Requires=network-online.target + +[Service] +TimeoutStartSec=0 +WorkingDirectory=/srv/maverick/software/theia/examples/browser +ExecStart=/usr/bin/yarn run start --port <%= @webport %> --hostname 0.0.0.0 +User=mav + +[Install] +WantedBy=multi-user.target