{"action":"created","issue":{"url":"https://api.github.com/repos/imincik/gis-lab/issues/308","labels_url":"https://api.github.com/repos/imincik/gis-lab/issues/308/labels{/name}","comments_url":"https://api.github.com/repos/imincik/gis-lab/issues/308/comments","events_url":"https://api.github.com/repos/imincik/gis-lab/issues/308/events","html_url":"https://github.com/imincik/gis-lab/issues/308","id":50506663,"number":308,"title":"Replacing LTSP with our image build system","user":{"login":"imincik","id":476346,"avatar_url":"https://avatars.githubusercontent.com/u/476346?v=3","gravatar_id":"","url":"https://api.github.com/users/imincik","html_url":"https://github.com/imincik","followers_url":"https://api.github.com/users/imincik/followers","following_url":"https://api.github.com/users/imincik/following{/other_user}","gists_url":"https://api.github.com/users/imincik/gists{/gist_id}","starred_url":"https://api.github.com/users/imincik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imincik/subscriptions","organizations_url":"https://api.github.com/users/imincik/orgs","repos_url":"https://api.github.com/users/imincik/repos","events_url":"https://api.github.com/users/imincik/events{/privacy}","received_events_url":"https://api.github.com/users/imincik/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/imincik/gis-lab/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"mpastor","id":897799,"avatar_url":"https://avatars.githubusercontent.com/u/897799?v=3","gravatar_id":"","url":"https://api.github.com/users/mpastor","html_url":"https://github.com/mpastor","followers_url":"https://api.github.com/users/mpastor/followers","following_url":"https://api.github.com/users/mpastor/following{/other_user}","gists_url":"https://api.github.com/users/mpastor/gists{/gist_id}","starred_url":"https://api.github.com/users/mpastor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpastor/subscriptions","organizations_url":"https://api.github.com/users/mpastor/orgs","repos_url":"https://api.github.com/users/mpastor/repos","events_url":"https://api.github.com/users/mpastor/events{/privacy}","received_events_url":"https://api.github.com/users/mpastor/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/imincik/gis-lab/milestones/3","labels_url":"https://api.github.com/repos/imincik/gis-lab/milestones/3/labels","id":657096,"number":3,"title":"version 0.5","description":"","creator":{"login":"imincik","id":476346,"avatar_url":"https://avatars.githubusercontent.com/u/476346?v=3","gravatar_id":"","url":"https://api.github.com/users/imincik","html_url":"https://github.com/imincik","followers_url":"https://api.github.com/users/imincik/followers","following_url":"https://api.github.com/users/imincik/following{/other_user}","gists_url":"https://api.github.com/users/imincik/gists{/gist_id}","starred_url":"https://api.github.com/users/imincik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imincik/subscriptions","organizations_url":"https://api.github.com/users/imincik/orgs","repos_url":"https://api.github.com/users/imincik/repos","events_url":"https://api.github.com/users/imincik/events{/privacy}","received_events_url":"https://api.github.com/users/imincik/received_events","type":"User","site_admin":false},"open_issues":39,"closed_issues":120,"state":"open","created_at":"2014-05-13T06:46:58Z","updated_at":"2015-02-05T08:48:57Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2014-12-01T10:08:41Z","updated_at":"2015-02-08T11:52:07Z","closed_at":null,"body":"LTSP contains tons of features and code which we do not use at all (thin client, PnP Fat client). We use lot of LTSP client plugins overrides to achieve desired state. Also we want better integration to our system. We are investigating possibility to extract pieces we need and update them to our needs.\r\n\r\nAnalysis\r\n=======\r\n* isolate LTSP server and client code used for GIS.lab \r\n* propose new installation system more suitable for GIS.lab\r\n\r\nTasks\r\n=====\r\n* rewrite 'client-desktop' installation to Ansible\r\n* rewrite 'client-worker' installation to Ansible\r\n* add scripts gislab-client-chroot (activate client image chroot, mount proc, /dev/pts) and gislab-client-image (create image from current chroot state and create ramdisk, create nbi image, copy files to tftp directory). Always test if GISLAB_SUITE = 'lab' before running them\r\n* keep concurrent login detection\r\n* solve desktop client image rebuilding while desktop clients are connected\r\n* keep connected users detection in 'gislab-deluser'\r\n\r\nPaths\r\n=====\r\n* /opt/gislab/bin - place for gislab-client-chroot, gislab-client-image\r\n* /opt/gislab/system/client-desktop/root - chroot\r\n* /opt/gislab/system/client-desktop/image - image\r\n* /opt/gislab/system/client-worker/root - files\r\n* /opt/gislab/system/client-worker/image - image\r\n\r\nclient-worker\r\n===========\r\n* install whole worker configuration to /opt/gislab/system/client-worker/root using Ansible\r\n* install 'install.sh' script\r\n\r\ninstall.sh:\r\n* create local 'gislab' superuser account with public SSH key /etc/gislab/gislab_ssh_public_key.pub\r\n* install required packages and upgrade system\r\n* copy whole directory tree to target system\r\n* mount NFS from server\r\n* restart all required services\r\n\r\nclient-desktop\r\n============\r\n* create chroot, install and configure software and build image\r\n* if GISLAB_CLIENT_WORKER_ENABLED, install also QGIS Mapserver support from 'worker' files using Ansible (do not copy files directly as it is done now)\r\n* GISLAB_CLIENT_INSTALL_PACKAGES_DEFAULT - install with recommended packages\r\n* GISLAB_CLIENT_INSTALL_PACKAGES_GIS, GISLAB_CLIENT_INSTALL_PACKAGES - install without recommended packages\r\n* use local SWAP partition if available\r\n\r\nAnsible structure\r\n=============\r\n* files/scripts - scripts, which will be launched by Ansible 'script' module during installation\r\n* files/static/[program_name] - program files which will be used on client when running( Ansible 'copy' module)\r\n* files/static/bin - simple scripts, files which will be run on client when running (Ansible 'copy' module)\r\n* templates - all configuration files (do not use 'sed' in tasks, always use configuration file in template)\r\n\r\n\r\nLDM notes\r\n=========\r\nLDM isn't started like conventional services, it's run from LTSP's\r\nscreen script infrstructure. So, there's no \"proper\" way to stop it, but\r\nyou could use \"killall ldm\" or \"killall ldmgtkgreeter\" or kill other\r\nrunning processes... It should then get restarted\r\nautomatically...\r\n\r\nLDM definitely runs on the client, thin or fat, just not configured as a\r\n\"service\" or \"job\".\r\n\r\n> Vagrant said it runs from an LTSP screen script, so I guess I should\r\n>  be able to run that script to get it going. Someone familiar with\r\n>  that script, like where it is and the name of it...?\r\n\r\nIt's in the client's /usr/share/ltsp/screen.d/ldm, which is started by\r\n/usr/share/ltsp/screen_session, which is started by either\r\n/etc/init.d/ltsp-client-core or ltsp-client-core upstart job? Neither\r\nhave any stop or restart functionality... they start once and that's it.\r\n\r\nThere's not really a manual way to start it ... well, you could set\r\nSCREEN_07=shell in lts.conf, and \". /usr/share/ltsp/screen.d/ldm\" and\r\nthen once it finishes, should bring you back to the console on tty7,\r\nwhere you can source it again. Pretty ugly workaround...\r\n\r\nThe menu screen script might be a slightly less ugly way to get that\r\nbehavior, as it uses a console dialog to select which session type to\r\nrun.\r\n\r\nIf you can figure out a commandline option that disables the screen\r\nscript, you could create a simple hook to run in\r\n/usr/share/ltsp/screen-session.d/ or /usr/share/ldm/rc.d hooks to\r\nexecute your video reset on logout...\r\n"},"comment":{"url":"https://api.github.com/repos/imincik/gis-lab/issues/comments/73407648","html_url":"https://github.com/imincik/gis-lab/issues/308#issuecomment-73407648","issue_url":"https://api.github.com/repos/imincik/gis-lab/issues/308","id":73407648,"user":{"login":"imincik","id":476346,"avatar_url":"https://avatars.githubusercontent.com/u/476346?v=3","gravatar_id":"","url":"https://api.github.com/users/imincik","html_url":"https://github.com/imincik","followers_url":"https://api.github.com/users/imincik/followers","following_url":"https://api.github.com/users/imincik/following{/other_user}","gists_url":"https://api.github.com/users/imincik/gists{/gist_id}","starred_url":"https://api.github.com/users/imincik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/imincik/subscriptions","organizations_url":"https://api.github.com/users/imincik/orgs","repos_url":"https://api.github.com/users/imincik/repos","events_url":"https://api.github.com/users/imincik/events{/privacy}","received_events_url":"https://api.github.com/users/imincik/received_events","type":"User","site_admin":false},"created_at":"2015-02-08T11:52:07Z","updated_at":"2015-02-08T11:52:07Z","body":"My notes:\r\n* copying debs from server to client and back on client image build makes sense only if arch equals (we will add support for AMD64 in next ticket)\r\n* possible not needed services on client: zeitgeist"}}