Skip to content

Commit

Permalink
Initial support for vscode/code-server #831
Browse files Browse the repository at this point in the history
  • Loading branch information
fnoop committed Apr 29, 2019
1 parent 7d2d346 commit e99eaaa
Show file tree
Hide file tree
Showing 3 changed files with 160 additions and 2 deletions.
141 changes: 141 additions & 0 deletions manifests/maverick-modules/maverick_web/manifests/codeserver.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
class maverick_web::codeserver (
$active = true,
$webport = "6795",
$basepath = "/srv/maverick",
$password = "wingman",
$filewatchers = "8192"
) {

file { "/srv/maverick/data/web/codeserver":
ensure => directory,
owner => "mav",
group => "mav",
mode => "755",
}

if ! ("install_flag_codeserver" in $installflags) {
ensure_packages(["libxkbfile-dev", "libsecret-1-dev"])

oncevcsrepo { "git-codeserver":
gitsource => "https://github.com/codercom/code-server.git",
dest => "/srv/maverick/software/codeserver",
} ->
exec { "codeserver-preinstall":
command => "/usr/bin/yarn >/srv/maverick/var/log/build/codeserver.preinstall.log 2>&1",
cwd => "/srv/maverick/software/codeserver",
creates => "/srv/maverick/software/codeserver/node_modules/node-pty",
timeout => 0,
user => "mav",
require => Class["maverick_web::nodejs"],
} ->
exec { "codeserver-build":
command => "/usr/bin/yarn task build:server:binary >/srv/maverick/var/log/build/codeserver.build.log 2>&1",
cwd => "/srv/maverick/software/codeserver",
creates => "/srv/maverick/software/codeserver/packages/server/cli-",
timeout => 0,
user => "mav",
} ->
exec { "codeserver-symlink":
command => "/bin/ln -s cli-* code-server",
cwd => "/srv/maverick/software/codeserver/packages/server",
user => "mav",
creates => "/srv/maverick/software/codeserver/packages/server/code-server",
} ->
file { "/srv/maverick/var/build/.install_flag_codeserver":
ensure => present,
}
}

# Increase kernel inotify watcher limits
base::sysctl::conf {
"fs.inotify.max_user_watches": value => $filewatchers;
}

# Install some default extensions
exec { "codeserver-ext-python":
command => "/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --install-extension ms-python.python",
user => "mav",
timeout => 0,
unless => "/bin/ls -ld /srv/maverick/data/web/codeserver/extensions/ms-python.python-*/package.json",
before => Service_wrapper["maverick-codeserver"],
notify => Service_wrapper["maverick-codeserver"],
}
exec { "codeserver-ext-cplusplus":
command => "/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --install-extension ms-vscode.cpptools",
user => "mav",
timeout => 0,
unless => "/bin/ls -ld /srv/maverick/data/web/codeserver/extensions/ms-vscode.cpptools-*/package.json",
before => Service_wrapper["maverick-codeserver"],
notify => Service_wrapper["maverick-codeserver"],
}
exec { "codeserver-ext-vscodeicons":
command => "/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --install-extension vscode-icons-team.vscode-icons",
user => "mav",
timeout => 0,
unless => "/bin/ls -ld /srv/maverick/data/web/codeserver/extensions/vscode-icons-team.vscode-icons-*/package.json",
before => Service_wrapper["maverick-codeserver"],
notify => Service_wrapper["maverick-codeserver"],
}
exec { "codeserver-ext-onedarkpro":
command => "/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --install-extension zhuangtongfa.material-theme",
user => "mav",
timeout => 0,
unless => "/bin/ls -ld /srv/maverick/data/web/codeserver/extensions/zhuangtongfa.material-theme-*/package.json",
before => Service_wrapper["maverick-codeserver"],
notify => Service_wrapper["maverick-codeserver"],
}
exec { "codeserver-ext-gitlens":
command => "/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --install-extension eamodio.gitlens",
user => "mav",
timeout => 0,
unless => "/bin/ls -ld /srv/maverick/data/web/codeserver/extensions/eamodio.gitlens-*/package.json",
before => Service_wrapper["maverick-codeserver"],
notify => Service_wrapper["maverick-codeserver"],
}
exec { "codeserver-ext-vetur":
command => "/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --install-extension octref.vetur",
user => "mav",
timeout => 0,
unless => "/bin/ls -ld /srv/maverick/data/web/codeserver/extensions/octref.vetur-*/package.json",
before => Service_wrapper["maverick-codeserver"],
notify => Service_wrapper["maverick-codeserver"],
}
exec { "codeserver-ext-puppet":
command => "/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --install-extension jpogran.puppet-vscode",
user => "mav",
timeout => 0,
unless => "/bin/ls -ld /srv/maverick/data/web/codeserver/extensions/jpogran.puppet-vscode-*/package.json",
before => Service_wrapper["maverick-codeserver"],
notify => Service_wrapper["maverick-codeserver"],
}


if defined(Class["::maverick_security"]) {
maverick_security::firewall::firerule { "codeserver":
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-codeserver.service":
content => template("maverick_web/codeserver.service.erb"),
owner => "root",
group => "root",
mode => "644",
notify => Exec["maverick-systemctl-daemon-reload"],
} ->
service_wrapper { "maverick-codeserver":
ensure => $_ensure,
enable => $_enable,
}

}
9 changes: 7 additions & 2 deletions manifests/maverick-modules/maverick_web/manifests/init.pp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
class maverick_web (
$cloud9 = true,
$cloud9 = false,
$codeserver = true,
$nodejs = true,
$webserver = true,
$webserver_type = "nginx",
Expand All @@ -20,6 +21,10 @@
class { "maverick_web::cloud9": }
}

if $codeserver == true {
class { "maverick_web::codeserver": }
}

file { [ "/srv/maverick/data/web", "/srv/maverick/config/web", "/srv/maverick/var/log/web" ]:
ensure => directory,
owner => "mav",
Expand Down Expand Up @@ -67,4 +72,4 @@
class { "maverick_web::maverick_web": }
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Unit]
Description=CodeServer
After=network-online.target
Requires=network-online.target

[Service]
TimeoutStartSec=0
ExecStart=/srv/maverick/software/codeserver/packages/server/code-server --user-data-dir /srv/maverick/data/web/codeserver --port <%= @webport %> --allow-http --disable-telemetry --password <%= @password %>
User=mav

[Install]
WantedBy=multi-user.target

0 comments on commit e99eaaa

Please sign in to comment.