* Update clean_validation_envs.yml

* update

* update BRANCH_LAST_ACTIVITY_IN_HOURS_FOR_STOP: 8

* Squashed commit of the following:

commit e66cd8206e
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue May 7 16:35:57 2024 +0100

    squash commits

commit 933e1603bb
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 4 15:54:39 2024 +0100

    update BRANCH_LAST_ACTIVITY_IN_HOURS_FOR_STOP: 8

commit 379e93c05f
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 4 15:52:25 2024 +0100

    update

commit 161880fad5
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Tue Apr 2 09:38:19 2024 +0100

    Update clean_validation_envs.yml

commit 79080439eb
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue May 7 16:32:15 2024 +0100

    update changelog

commit 76466e407d
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue May 7 16:28:55 2024 +0100

    update changelog

commit 9b3b98e07d
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:27:52 2024 +0100

    changelog update

commit d199c777bf
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:01:26 2024 +0100

    Update Resource processor Ubuntu Image (#3902)

    * Update clean_validation_envs.yml

    * update

    * update BRANCH_LAST_ACTIVITY_IN_HOURS_FOR_STOP: 8

    * update core resource processor image

    * remove clean env

    * update version

    * update changelog

commit c4d84045ed
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:18:36 2024 +0100

    update readme and changelog

commit 81dd79b35d
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:18:36 2024 +0100

    update readme and changelog

commit 8cecc55e38
Author: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>
Date:   Tue Apr 2 09:23:37 2024 +0100

    Ubuntu update (#1)

    * personal

    * update ubuntu image

    * revert changes

    * update ubuntu version

    * update version

    * update offer

    * update sku

    * change offer

    ---------

    Co-authored-by: Wojciech <57405495+thewbuk@users.noreply.github.com>

commit 49813bf08b
Author: Jonny Rylands <jonnyry@users.noreply.github.com>
Date:   Wed May 1 18:22:19 2024 +0100

     Remove TLS1.0/1.1 support. Resolves #3914 (#3916)

commit a094c19d57
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue May 7 16:12:53 2024 +0100

    doc update

commit 004a9c0a15
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue May 7 10:27:09 2024 +0100

    update script

commit 8044fb7c24
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed May 1 15:19:48 2024 +0100

    updaet

commit 218aa8bdb3
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed May 1 15:19:40 2024 +0100

    update

commit 0ac060f982
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 30 15:44:47 2024 +0100

    update

commit 0486933a37
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 30 12:43:46 2024 +0100

    update vm config

commit c9f0749da4
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 18:11:50 2024 +0100

    Prevent screen timeout

commit 7c2db7f597
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 18:09:49 2024 +0100

    updates

commit 8d6cf1d479
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 17:16:38 2024 +0100

    update

commit 3ecdec7731
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 12:21:28 2024 +0100

    update

commit eb59085ada
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 12:19:33 2024 +0100

    nexus update

commit 915c6bcd46
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 10:24:45 2024 +0100

    updste

commit 2345db24f5
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 10:24:36 2024 +0100

    update proxy url

commit 6b454a37d8
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 10:03:44 2024 +0100

    update

commit 2ce801bddf
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 09:48:20 2024 +0100

    add in r studio download

commit 3b83b4c13c
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 29 09:46:11 2024 +0100

    add in snapcraft to nexus

commit dfb6b7bae1
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 16:55:45 2024 +0100

    spelling

commit f896ce314a
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 16:08:41 2024 +0100

    update version

commit fd540af3ff
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 16:08:32 2024 +0100

    clean up script

commit 1f8456f5a0
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 14:27:31 2024 +0100

    update

commit 89e65eb693
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 14:27:23 2024 +0100

    update

commit ae4cb0475f
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 14:22:13 2024 +0100

    update

commit c33e0330ce
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 14:10:46 2024 +0100

    update

commit 2e290e159c
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 14:03:41 2024 +0100

    update

commit 2c16b60444
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 13:57:50 2024 +0100

    update

commit 757d565276
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 12:18:28 2024 +0100

    update

commit 977b487e64
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 11:45:21 2024 +0100

    update

commit 572c27cbbc
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 11:45:12 2024 +0100

    update

commit dc7a6c522a
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 11:39:38 2024 +0100

    add in extensions

commit e46c5bbbac
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 11:34:57 2024 +0100

    add sleeps

commit fa1572001f
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 11:33:44 2024 +0100

    update

commit 893cf8daa3
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 10:20:12 2024 +0100

    update

commit 42223aa4b8
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 10:16:27 2024 +0100

    commit

commit 0a7b1e87ed
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 10:16:19 2024 +0100

    update

commit 6ce77b00e5
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 26 09:43:49 2024 +0100

    update

commit f1d68da0cd
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 25 17:58:40 2024 +0100

    update

commit 060b6fd5d0
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 25 16:17:09 2024 +0100

    vm update

commit c4e7094240
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 25 14:20:05 2024 +0100

    update

commit 760f783fef
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 23 16:58:05 2024 +0100

    updat

commit 943e07b9d5
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 23 15:16:03 2024 +0100

    add in ms download and other apps

commit 7a4d250d3b
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 18 09:57:54 2024 +0100

    update linux

commit 770e4c76db
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 16 15:31:25 2024 +0100

    fix linting

commit 4354ca0917
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 16 14:06:49 2024 +0100

    format

commit 6980ecbb83
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 15 16:16:50 2024 +0100

    update

commit a3e5492f79
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 15 16:16:38 2024 +0100

    update

commit f9d9ffcd4a
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 15 14:44:27 2024 +0100

    update

commit d5a40452e5
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 15 14:39:17 2024 +0100

    update

commit aa4713ca58
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 15 12:08:41 2024 +0100

    update image version

commit 2082559750
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Mon Apr 15 09:28:08 2024 +0100

    update to gen2

commit cd1a4dbf2f
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 16:49:59 2024 +0100

    updaet vm config

commit eff70504b8
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 16:00:41 2024 +0100

    edit

commit ba9ae5088c
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 15:10:09 2024 +0100

    update

commit 81801f8914
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 14:36:17 2024 +0100

    update version

commit 86909a3b8a
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 12:50:34 2024 +0100

    vm-config

commit c5ce11b550
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 10:43:48 2024 +0100

    update config

commit b1bb5c96ba
Merge: 9a28c420 cb59c992
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:32:38 2024 +0100

    Merge branch 'main' into ubuntu-update

commit 9a28c42075
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:31:47 2024 +0100

    reset

commit 4a2036bc4c
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:29:53 2024 +0100

    update resource proccesor

commit e1939430b3
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:27:52 2024 +0100

    changelog update

commit e8ba5fda9f
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:18:36 2024 +0100

    update readme and changelog

commit f3b4efb385
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:01:26 2024 +0100

    Update Resource processor Ubuntu Image (#3902)

    * Update clean_validation_envs.yml

    * update

    * update BRANCH_LAST_ACTIVITY_IN_HOURS_FOR_STOP: 8

    * update core resource processor image

    * remove clean env

    * update version

    * update changelog

commit 85cdb983a1
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:18:36 2024 +0100

    update readme and changelog

commit b17bfabd8a
Author: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>
Date:   Tue Apr 2 09:23:37 2024 +0100

    Ubuntu update (#1)

    * personal

    * update ubuntu image

    * revert changes

    * update ubuntu version

    * update version

    * update offer

    * update sku

    * change offer

    ---------

    Co-authored-by: Wojciech <57405495+thewbuk@users.noreply.github.com>

commit d8fa5d4121
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:01:26 2024 +0100

    Update Resource processor Ubuntu Image (#3902)

    * Update clean_validation_envs.yml

    * update

    * update BRANCH_LAST_ACTIVITY_IN_HOURS_FOR_STOP: 8

    * update core resource processor image

    * remove clean env

    * update version

    * update changelog

commit 5e2cdb52f0
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:18:36 2024 +0100

    update readme and changelog

commit 9af4f05a2b
Author: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>
Date:   Tue Apr 2 09:23:37 2024 +0100

    Ubuntu update (#1)

    * personal

    * update ubuntu image

    * revert changes

    * update ubuntu version

    * update version

    * update offer

    * update sku

    * change offer

    ---------

    Co-authored-by: Wojciech <57405495+thewbuk@users.noreply.github.com>

commit aa4b948746
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:01:26 2024 +0100

    Update Resource processor Ubuntu Image (#3902)

    * Update clean_validation_envs.yml

    * update

    * update BRANCH_LAST_ACTIVITY_IN_HOURS_FOR_STOP: 8

    * update core resource processor image

    * remove clean env

    * update version

    * update changelog

commit 39aa284694
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:12:48 2024 +0100

    resolving comments

commit cb59c99233
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Fri Apr 12 09:01:26 2024 +0100

    Update Resource processor Ubuntu Image (#3902)

    * Update clean_validation_envs.yml

    * update

    * update BRANCH_LAST_ACTIVITY_IN_HOURS_FOR_STOP: 8

    * update core resource processor image

    * remove clean env

    * update version

    * update changelog

commit e06dbcd284
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 19:57:14 2024 +0100

    moby-tini || true

commit c08a2b78f6
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 17:02:01 2024 +0100

    update version

commit 1049390023
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 17:01:21 2024 +0100

    remove moby-tini

commit ce4dc82ba3
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 15:53:12 2024 +0100

    update version

commit 7a43e653d8
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 15:52:58 2024 +0100

    update vm config

commit 7db0e5fdcb
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 14:46:09 2024 +0100

    update ds install_ui: true

commit 8ff7f69abe
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 14:08:22 2024 +0100

    update script

commit be7212b684
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 13:40:29 2024 +0100

    update version

commit 3a30d23cd8
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 13:40:18 2024 +0100

    ds install_ui: false

commit a3d9109ed4
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:18:36 2024 +0100

    update readme and changelog

commit 875f2f454d
Author: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>
Date:   Tue Apr 2 09:23:37 2024 +0100

    Ubuntu update (#1)

    * personal

    * update ubuntu image

    * revert changes

    * update ubuntu version

    * update version

    * update offer

    * update sku

    * change offer

    ---------

    Co-authored-by: Wojciech <57405495+thewbuk@users.noreply.github.com>

commit 9fc272b93a
Merge: 3a9eecbf bc2f2332
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:12:57 2024 +0100

    Merge branch 'main' into ubuntu-update

commit 3a9eecbf08
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 12:12:16 2024 +0100

    testing

commit 3b7522eebb
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 11:49:49 2024 +0100

    version for guac

commit d75e442ffc
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 11:34:15 2024 +0100

    update to gen2

commit d4a57a3317
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 11:28:21 2024 +0100

    update Readme for user resources

commit af50b399b9
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 11:12:46 2024 +0100

    update apt-get

commit bc414b75ad
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Thu Apr 11 11:07:43 2024 +0100

    update config

commit bc2f233216
Author: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>
Date:   Thu Apr 11 09:50:09 2024 +0100

    Update "Azure AD" references to "Microsoft Entra ID" (#3873)

    * rename Azure AD to Microsoft Entra Workforce ID

    * update Azure Active Directory to Microsoft Entra Workforce ID

    * replace

    * update version

    * change stale version

    * update from stale

    * update version

    * update readme

    * Microsoft Entra Workforce ID -> Microsoft Entra ID

    * AAD -> Microsoft Entra ID

    * Delete .devcontainer/devcontainer.json

    * Revert "Delete .devcontainer/devcontainer.json"

    This reverts commit 5dd6d5c265.

    * revert code changes

    * remove double names

    * update version

    * go back version

    * api update version

    * revert for linting

    * revert test linting

    * fix linting

    * roll back linting

    * increase line length

    * fix linting

    * fix formatting

    * fix lintin 3

    * update urls

    * update aad urls

    ---------

    Co-authored-by: Tim Allen <tim.allen@cloudkubed.com>

commit a09af34ee5
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 16:44:01 2024 +0100

    update apt-source-list

commit 271c7e0fc3
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 15:57:32 2024 +0100

    update pypi source

commit 1ea11594ac
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 15:53:40 2024 +0100

    update

commit d1beb038d6
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 15:51:51 2024 +0100

    updaye

commit 9c2211b70a
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 15:31:17 2024 +0100

    update core

commit c7ebc5b933
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 15:29:00 2024 +0100

    update linux vms

commit 18df98cfca
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 15:27:42 2024 +0100

    update version

commit 19316a16ee
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Wed Apr 10 14:03:08 2024 +0100

    update install UI

commit 47c81826b5
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Apr 9 19:39:14 2024 +0300

    Bump the npm_and_yarn group in /ui/app with 3 updates (#3891)

    * Bump the npm_and_yarn group in /ui/app with 3 updates

    Bumps the npm_and_yarn group in /ui/app with 3 updates: [express](https://github.com/expressjs/express), [follow-redirects](https://github.com/follow-redirects/follow-redirects) and [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware).

    Updates `express` from 4.18.3 to 4.19.2
    - [Release notes](https://github.com/expressjs/express/releases)
    - [Changelog](https://github.com/expressjs/express/blob/master/History.md)
    - [Commits](https://github.com/expressjs/express/compare/4.18.3...4.19.2)

    Updates `follow-redirects` from 1.15.5 to 1.15.6
    - [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
    - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

    Updates `webpack-dev-middleware` from 5.3.3 to 5.3.4
    - [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
    - [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
    - [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

    ---
    updated-dependencies:
    - dependency-name: express
      dependency-type: indirect
      dependency-group: npm_and_yarn-security-group
    - dependency-name: follow-redirects
      dependency-type: indirect
      dependency-group: npm_and_yarn-security-group
    - dependency-name: webpack-dev-middleware
      dependency-type: indirect
      dependency-group: npm_and_yarn-security-group
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

    * update ui version

    ---------

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Tim Allen <tim.allen@cloudkubed.com>

commit 072cfdc249
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 9 17:26:28 2024 +0100

    add in microsoft-apt/ubuntu/20.04 to source-list

commit 30ecfa2401
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 9 14:55:25 2024 +0100

    add in image to enum

commit 33d14bee98
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 9 14:33:52 2024 +0100

    update image options

commit 7aa64ba948
Author: tim-allen-ck <tim.allen@cloudkubed.com>
Date:   Tue Apr 9 12:09:38 2024 +0100

    update

commit ea63ebfaf4
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Tue Apr 9 06:37:40 2024 +0100

    Feature/GitHub actions update (#3897)

    * Update clean_validation_envs.yml

    * azure login (#19)

    Co-authored-by: Wojciech <57405495+thewbuk@users.noreply.github.com>

    * GitHub actions update (#22)

    * azure login

    * reset cron

    * update action versions

    ---------

    Co-authored-by: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>

    * change conclusion action

    * add in teams

    ---------

    Co-authored-by: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>

commit de141651ad
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Fri Apr 5 12:42:03 2024 +0100

    Documentation Pipeline Fix (#3898)

    add in permissions to pipeline

commit c92494e384
Merge: 27167496 086be330
Author: Tim Allen <tim.allen@cloudkubed.com>
Date:   Thu Apr 4 16:54:43 2024 +0100

    Merge branch 'main' into ubuntu-update

commit 27167496ec
Author: wojciechcloudkubed <159798789+wojciechcloudkubed@users.noreply.github.com>
Date:   Tue Apr 2 09:23:37 2024 +0100

    Ubuntu update (#1)

    * personal

    * update ubuntu image

    * revert changes

    * update ubuntu version

    * update version

    * update offer

    * update sku

    * change offer

    ---------

    Co-authored-by: Wojciech <57405495+thewbuk@users.noreply.github.com>

* update env yaml

* update bash

* update linting

* update docs

* comment fixes

* update

* update nexus sku

* Update docs/tre-templates/user-resources/guacamole-linux-vm.md

Co-authored-by: Marcus Robinson <marrobi@microsoft.com>

* update docs

* docs

---------

Co-authored-by: Marcus Robinson <marrobi@microsoft.com>
This commit is contained in:
Tim Allen 2024-05-09 17:32:40 +01:00 коммит произвёл GitHub
Родитель c8e5ed39fb
Коммит 606a5d99cd
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
21 изменённых файлов: 330 добавлений и 56 удалений

Просмотреть файл

@ -8,8 +8,11 @@ FEATURES:
ENHANCEMENTS:
BUG FIXES:
* Update Guacomole Linux VM Images to Ubuntu 22.04 LTS. Part of ([#3523](https://github.com/microsoft/AzureTRE/issues/3523))
* Update Nexus Shared Service with new proxies. Part of ([#3523](https://github.com/microsoft/AzureTRE/issues/3523))
* Update to Resource Processor Image, now using Ubuntu 22.04 (jammy). Part of ([#3523](https://github.com/microsoft/AzureTRE/issues/3523))
* Remove TLS1.0/1.1 support from Application Gateway
* Remove TLS1.0/1.1 support from Application Gateway ([#3914](https://github.com/microsoft/AzureTRE/issues/3914))
* GitHub Actions version updates. ([#3847](https://github.com/microsoft/AzureTRE/issues/3847))
COMPONENTS:

Просмотреть файл

@ -87,10 +87,12 @@ Nexus Shared Service requires access to resources outside of the Azure TRE VNET.
| Ubuntu Security Packages | apt | [http://security.ubuntu.com/ubuntu/] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/ubuntu-security/` | Provide access to Ubuntu Security apt packages on Ubuntu systems. |
| Almalinux | yum | [https://repo.almalinux.org] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/almalinux` | Install Almalinux packages |
| R-Proxy | r | [https://cran.r-project.org/] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/r-proxy` | Provide access to CRAN packages for R |
| R-Studio Download | raw | [https://download1.rstudio.org] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/r-studio-download` | Provide access to download R Studio |
| Fedora Project | yum | [https://download-ib01.fedoraproject.org] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/fedoraproject` | Install Fedora Project Linux packages |
| Microsoft Apt | apt | [https://packages.microsoft.com] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/microsoft-apt` | Provide access to Microsoft Apt packages |
| Microsoft Keys | raw | [https://packages.microsoft.com/keys/] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/microsoft-keys` | Provide access to Microsoft keys |
| Microsoft Yum | yum | [https://packages.microsoft.com/yumrepos] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/microsoft-yum` | Provide access to Microsoft Yum packages |
| Microsoft Download | raw | [https://download.microsoft.com/download] | `https://nexus-{TRE_ID}.{LOCATION}.cloudapp.azure.com/repository/microsoft-download` | Provide access to Microsoft Downloads |
### Migrate from an existing V1 Nexus service (hosted on App Service)
@ -111,3 +113,20 @@ If you still have an existing Nexus installation based on App Service (from the
The Nexus service checks Key Vault regularly for the latest certificate matching the name you passed on deploy (`nexus-ssl` by default).
When approaching expiry, you can either provide an updated certificate into the TRE core KeyVault (with the name you specified when installing Nexus) if you brought your own, or if you used the certs shared service to generate one, just call the `renew` custom action on that service. This will generate a new certificate and persist it to the Key Vault, replacing the expired one.
## Updating to v3.0.0
The newest version of Nexus is a significant update for the service.
As a result, a new installation of Nexus will be necessary.
We are currently in the process of developing an upgrade path for upcoming releases.
## Using Docker Hub
When using Docker with a VM, the image URL should be constructed as follows: {NEXUS_URL}:{port}/docker-image
```bash
sudo docker pull {NEXUS_URL}:8083/hello-world
```
the default port out of the box is 8083
Nexus will also need "Anonymous Access" set to "Enable". This can be done by logging into the Nexus Portal with the Admin user and following the prompts.

Просмотреть файл

@ -0,0 +1,62 @@
# Guacamole User Resources
- linuxvm - a Linux-based virtual machine
- windowsvm - A Windows-based virtual machine
## Customising the user resources
The `guacamole-azure-linuxvm` and `guacamole-azure-windowsvm` folders follow a consistent layout.
To update one of these templates (or to create a new template based on these folders) to use different image details or VM sizes, there are a few files that need to be updated:
| File | Description |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `porter.yaml` | This file describes the template and the name should be updated when creating a template based on the folder.<br> This file also contains a `custom` data section that describes the VM properties.<br> Additionally, the version needs to be updated to deploy an updated version |
| `template_schema.json` | This file controls the validation applied to the template, for example specifying the valid options for fields such as size and image |
### Configuration
In `porter.yaml`, the `custom` section contains a couple of sub-sections (shown below)
```yaml
custom:
vm_sizes:
"2 CPU | 8GB RAM": Standard_D2s_v5
"4 CPU | 16GB RAM": Standard_D4s_v5
"8 CPU | 32GB RAM": Standard_D8s_v5
"16 CPU | 64GB RAM": Standard_D16s_v5
image_options:
"Ubuntu 22.04 LTS":
source_image_reference:
publisher: canonical
offer: 0001-com-ubuntu-server-jammy
sku: 22_04-lts-gen2
version: latest
apt_sku: 22.04
install_ui: true
conda_config: false
# "Custom Image From Gallery":
# source_image_name: your-image
# install_ui: true
# conda_config: true
```
The `vm_sizes` section is a map of a custom SKU description to the SKU identifier.
The `image_options` section defined the possible image choices for the template (note that the name of the image used here needs to be included in the corresponding enum in `template_schema.json`).
Within the image definition in `image_options` there are a few properties that can be specified:
| Name | Description |
| ------------------------ | -------------------------------------------------------------------------------------------------------- |
| `source_image_name` | Specify VM image to use by name (see notes below for identifying the image gallery containing the image) |
| `source_image_reference` | Specify VM image to use by `publisher`, `offer`, `sku` & `version` (e.g. for Azure Marketplace images) |
| `install_ui` | (Linux only) Set `true` to install desktop environment |
| `conda_config` | Set true to configure conda |
When specifying images using `source_image_name`, the image must be stored in an [image gallery](https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery).
To enable re-using built user resource templates across environments where the image may vary, the image gallery is configured via the `RP_BUNDLE_VALUES` environment variable when deploying the TRE.
The `RP_BUNDLE_VALUES` variable is a JSON object, and the `image_gallery_id` property within it identifies the image gallery that contains the images specified by `source_image_name`:
```bash
RP_BUNDLE_VALUES='{"image_gallery_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<your-rg>/providers/Microsoft.Compute/galleries/<your-gallery-name>"}
```

Просмотреть файл

@ -7,3 +7,13 @@ It blocks all inbound and outbound traffic to the internet and allows only RDP c
- [A base workspace bundle installed](../workspaces/base.md)
- [A guacamole workspace service bundle installed](../workspace-services/guacamole.md)
- [A Nexus shared service has been deployed](../shared-services/nexus.md)
## Notes
- Nexus is a prerequisite of installing the Linux VMs given the additional commands in the bootstrap scripts.
- In production we recommend using VM images to avoid transient issues downloading and installing packages. The included user resource templates for VMs with bootstrap scripts should only be used for trial/demonstration purposes. More info can be found [here](./custom.md).
- Snap (app store for linux via [snapcraft.io](https://snapcraft.io)) hasn't been configured to work via the nexus proxy
## Using Custom Images
For custom image usage, visit this [page](./custom.md).

Просмотреть файл

@ -106,7 +106,7 @@ async def test_bulk_updates_to_ensure_each_resource_updated_in_series(verify) ->
"properties": {
"display_name": "Perf test VM",
"description": "",
"os_image": "Ubuntu 18.04"
"os_image": "Ubuntu 22.04 LTS"
}
}

Просмотреть файл

@ -1,7 +1,7 @@
---
schemaVersion: 1.0.0
name: tre-shared-service-sonatype-nexus
version: 2.8.13
version: 3.0.0
description: "A Sonatype Nexus shared service"
dockerfile: Dockerfile.tmpl
registry: azuretre

Просмотреть файл

@ -1,5 +1,4 @@
[
"NexusAuthenticatingRealm",
"NexusAuthorizingRealm",
"DockerToken"
"DockerToken",
"NexusAuthenticatingRealm"
]

Просмотреть файл

@ -0,0 +1,32 @@
{
"name": "microsoft-download",
"online": true,
"storage": {
"blobStoreName": "default",
"strictContentTypeValidation": true,
"write_policy": "ALLOW"
},
"proxy": {
"remoteUrl": "https://download.microsoft.com/download",
"contentMaxAge": 1440,
"metadataMaxAge": 1440
},
"negativeCache": {
"enabled": true,
"timeToLive": 1440
},
"httpClient": {
"blocked": false,
"autoBlock": false,
"connection": {
"retries": 0,
"userAgentSuffix": "string",
"timeout": 60,
"enableCircularRedirects": false,
"enableCookies": false,
"useTrustStore": false
}
},
"baseType": "raw",
"repoType": "proxy"
}

Просмотреть файл

@ -0,0 +1,32 @@
{
"name": "r-studio-download",
"online": true,
"storage": {
"blobStoreName": "default",
"strictContentTypeValidation": true,
"write_policy": "ALLOW"
},
"proxy": {
"remoteUrl": "https://download1.rstudio.org",
"contentMaxAge": 1440,
"metadataMaxAge": 1440
},
"negativeCache": {
"enabled": true,
"timeToLive": 1440
},
"httpClient": {
"blocked": false,
"autoBlock": false,
"connection": {
"retries": 0,
"userAgentSuffix": "string",
"timeout": 60,
"enableCircularRedirects": false,
"enableCookies": false,
"useTrustStore": false
}
},
"baseType": "raw",
"repoType": "proxy"
}

Просмотреть файл

@ -0,0 +1,32 @@
{
"name": "snapcraft",
"online": true,
"storage": {
"blobStoreName": "default",
"strictContentTypeValidation": true,
"write_policy": "ALLOW"
},
"proxy": {
"remoteUrl": "https://snapcraftcontent.com",
"contentMaxAge": 1440,
"metadataMaxAge": 1440
},
"negativeCache": {
"enabled": true,
"timeToLive": 1440
},
"httpClient": {
"blocked": false,
"autoBlock": false,
"connection": {
"retries": 0,
"userAgentSuffix": "string",
"timeout": 60,
"enableCircularRedirects": false,
"enableCookies": false,
"useTrustStore": false
}
},
"baseType": "raw",
"repoType": "proxy"
}

Просмотреть файл

@ -1,7 +1,7 @@
locals {
core_vnet = "vnet-${var.tre_id}"
core_resource_group_name = "rg-${var.tre_id}"
nexus_allowed_fqdns = "pypi.org,*.pypi.org,files.pythonhosted.org,security.ubuntu.com,archive.ubuntu.com,keyserver.ubuntu.com,repo.anaconda.com,*.docker.com,*.docker.io,conda.anaconda.org,azure.archive.ubuntu.com,packages.microsoft.com,repo.almalinux.org,download-ib01.fedoraproject.org,cran.r-project.org,cloud.r-project.org"
nexus_allowed_fqdns = "pypi.org,*.pypi.org,files.pythonhosted.org,security.ubuntu.com,archive.ubuntu.com,keyserver.ubuntu.com,repo.anaconda.com,*.docker.com,*.docker.io,conda.anaconda.org,azure.archive.ubuntu.com,packages.microsoft.com,repo.almalinux.org,download-ib01.fedoraproject.org,cran.r-project.org,cloud.r-project.org,download1.rstudio.org,*.snapcraftcontent.com,download.microsoft.com"
nexus_allowed_fqdns_list = distinct(compact(split(",", replace(local.nexus_allowed_fqdns, " ", ""))))
workspace_vm_allowed_fqdns = "r3.o.lencr.org,x1.c.lencr.org"
workspace_vm_allowed_fqdns_list = distinct(compact(split(",", replace(local.workspace_vm_allowed_fqdns, " ", ""))))

Просмотреть файл

@ -83,6 +83,7 @@ resource "azurerm_user_assigned_identity" "nexus_msi" {
location = data.azurerm_resource_group.rg.location
resource_group_name = local.core_resource_group_name
tags = local.tre_shared_service_tags
lifecycle { ignore_changes = [tags] }
}

Просмотреть файл

@ -2,10 +2,9 @@
This folder contains user resources that can be deployed with the Guacamole workspace service:
- linuxvm - a Linux-based virtual machine (expects an Ubuntu 18.04-based VM)
- linuxvm - a Linux-based virtual machine
- windowsvm - A Windows-based virtual machine
## Customising the user resources
The `guacamole-azure-linuxvm` and `guacamole-azure-windowsvm` folders follow a consistent layout.
@ -29,22 +28,15 @@ custom:
"8 CPU | 32GB RAM": Standard_D8s_v5
"16 CPU | 64GB RAM": Standard_D16s_v5
image_options:
"Ubuntu 18.04":
"Ubuntu 22.04 LTS":
source_image_reference:
publisher: canonical
offer: ubuntuserver
sku: 18_04-lts-gen2
offer: 0001-com-ubuntu-server-jammy
sku: 22_04-lts-gen2
version: latest
apt_sku: 22.04
install_ui: true
conda_config: false
"Ubuntu 18.04 Data Science VM":
source_image_reference:
publisher: microsoft-dsvm
offer: ubuntu-1804
sku: 1804-gen2
version: latest
install_ui: false
conda_config: true
# "Custom Image From Gallery":
# source_image_name: your-image
# install_ui: true
@ -68,8 +60,6 @@ When specifying images using `source_image_name`, the image must be stored in an
To enable re-using built user resource templates across environments where the image may vary, the image gallery is configured via the `RP_BUNDLE_VALUES` environment variable when deploying the TRE.
The `RP_BUNDLE_VALUES` variable is a JSON object, and the `image_gallery_id` property within it identifies the image gallery that contains the images specified by `source_image_name`:
```bash
RP_BUNDLE_VALUES='{"image_gallery_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<your-rg>/providers/Microsoft.Compute/galleries/<your-gallery-name>"}
```

Просмотреть файл

@ -1,7 +1,7 @@
---
schemaVersion: 1.0.0
name: tre-service-guacamole-linuxvm
version: 0.6.9
version: 1.0.0
description: "An Azure TRE User Resource Template for Guacamole (Linux)"
dockerfile: Dockerfile.tmpl
registry: azuretre
@ -14,29 +14,21 @@ custom:
"8 CPU | 32GB RAM": Standard_D8s_v5
"16 CPU | 64GB RAM": Standard_D16s_v5
image_options:
"Ubuntu 18.04":
"Ubuntu 22.04 LTS":
source_image_reference:
publisher: canonical
offer: ubuntuserver
sku: 18_04-lts-gen2
offer: 0001-com-ubuntu-server-jammy
sku: 22_04-lts-gen2
version: latest
apt_sku: 22.04
install_ui: true
conda_config: false
"Ubuntu 18.04 Data Science VM":
source_image_reference:
publisher: microsoft-dsvm
offer: ubuntu-1804
sku: 1804-gen2
version: latest
install_ui: false
conda_config: true
# For information on using custom images, see README.me in the guacamole/user-resources folder
# "Custom Image From Gallery":
# source_image_name: your-image
# install_ui: true
# conda_config: true
credentials:
- name: azure_tenant_id
env: ARM_TENANT_ID
@ -91,7 +83,7 @@ parameters:
default: "public"
- name: os_image
type: string
default: "Ubuntu 18.04 Data Science VM"
default: "Ubuntu 22.04 LTS"
- name: vm_size
type: string
default: "2 CPU | 8GB RAM"

Просмотреть файл

@ -16,8 +16,7 @@
"title": "Linux image",
"description": "Select Linux image to use for VM",
"enum": [
"Ubuntu 18.04",
"Ubuntu 18.04 Data Science VM"
"Ubuntu 22.04 LTS"
]
},
"vm_size": {

Просмотреть файл

@ -14,6 +14,8 @@ apt:
deb [trusted=yes] $PRIMARY $RELEASE main restricted universe multiverse
deb [trusted=yes] $PRIMARY $RELEASE-updates main restricted universe multiverse
deb [trusted=yes] $SECURITY $RELEASE main restricted universe multiverse
deb [signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] ${nexus_proxy_url}/repository/microsoft-apt/ubuntu/18.04/prod $RELEASE main
deb [signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] ${nexus_proxy_url}/repository/microsoft-apt/ubuntu/${apt_sku}/prod $RELEASE main
deb [signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] ${nexus_proxy_url}/repository/microsoft-apt/repos/edge stable main
deb [signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] ${nexus_proxy_url}/repository/microsoft-apt/repos/vscode stable main
deb [signed-by=/etc/apt/trusted.gpg.d/microsoft.gpg] ${nexus_proxy_url}/repository/microsoft-apt/repos/azure-cli $RELEASE main
deb [signed-by=/etc/apt/trusted.gpg.d/docker-archive-keyring.gpg] ${nexus_proxy_url}/repository/docker/ $RELEASE stable

Просмотреть файл

@ -6,6 +6,10 @@ set -o nounset
# Uncomment this line to see each command for debugging (careful: this will show secrets!)
# set -o xtrace
#remove key if they already exist
sudo rm -f /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg || true
sudo rm -f /etc/apt/trusted.gpg.d/microsoft.gpg || true
# Get Docker Public key from Nexus
curl -fsSL "${NEXUS_PROXY_URL}"/repository/docker-public-key/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg

Просмотреть файл

@ -110,6 +110,8 @@ data "template_file" "vm_config" {
FILESHARE_NAME = var.shared_storage_access ? data.azurerm_storage_share.shared_storage[0].name : ""
NEXUS_PROXY_URL = local.nexus_proxy_url
CONDA_CONFIG = local.selected_image.conda_config ? 1 : 0
VM_USER = random_string.username.result
APT_SKU = replace(local.apt_sku, ".", "")
}
}
@ -131,6 +133,7 @@ data "template_file" "apt_sources_config" {
template = file("${path.module}/apt_sources_config.yml")
vars = {
nexus_proxy_url = local.nexus_proxy_url
apt_sku = local.apt_sku
}
}

Просмотреть файл

@ -15,7 +15,6 @@ locals {
tre_user_resource_id = var.tre_resource_id
}
nexus_proxy_url = "https://nexus-${data.azurerm_public_ip.app_gateway_ip.fqdn}"
# Load VM SKU/image details from porter.yaml
porter_yaml = yamldecode(file("${path.module}/../porter.yaml"))
vm_sizes = local.porter_yaml["custom"]["vm_sizes"]
@ -26,4 +25,5 @@ locals {
# selected_image_source_refs is an array to enable easy use of a dynamic block
selected_image_source_refs = lookup(local.selected_image, "source_image_reference", null) == null ? [] : [local.selected_image.source_image_reference]
selected_image_source_id = lookup(local.selected_image, "source_image_name", null) == null ? null : "${var.image_gallery_id}/images/${local.selected_image.source_image_name}"
apt_sku = local.selected_image_source_refs[0]["apt_sku"]
}

Просмотреть файл

@ -1,5 +1,5 @@
#!/bin/bash
sudo tee /etc/pip.conf > dev/null <<'EOF'
sudo tee /etc/pip.conf > /dev/null <<'EOF'
[global]
index = ${nexus_proxy_url}/repository/pypi/pypi
index-url = ${nexus_proxy_url}/repository/pypi/simple

Просмотреть файл

@ -2,31 +2,93 @@
set -o errexit
set -o pipefail
# set -o nounset
set -o nounset
# Uncomment this line to see each command for debugging (careful: this will show secrets!)
# set -o xtrace
set -o xtrace
# Remove apt sources not included in sources.list file
sudo rm -f /etc/apt/sources.list.d/*
# Update apt packages from configured Nexus sources
sudo apt-get update
echo "init_vm.sh: START"
sudo apt update || true
sudo apt upgrade -y
sudo apt install -y gnupg2 software-properties-common apt-transport-https wget dirmngr gdebi-core
sudo apt-get update || true
# Install xrdp so Guacamole can connect via RDP
sudo apt-get install xrdp -y
## Desktop
echo "init_vm.sh: Desktop"
sudo systemctl start gdm3 || true
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true dpkg-reconfigure gdm3 || true
sudo apt install -y xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
echo /usr/sbin/gdm3 > /etc/X11/default-display-manager
## Install xrdp so Guacamole can connect via RDP
echo "init_vm.sh: xrdp"
sudo apt install -y xrdp xorgxrdp xfce4-session
sudo adduser xrdp ssl-cert
# Install desktop environment if image doesn't have one already
if [ "${INSTALL_UI}" -eq 1 ]; then
sudo apt-get install xorg xfce4 xfce4-goodies dbus-x11 x11-xserver-utils -y
echo xfce4-session > ~/.xsession
fi
# Fix for blank screen on DSVM (/sh -> /bash due to conflict with profile.d scripts)
sudo sed -i 's|!/bin/sh|!/bin/bash|g' /etc/xrdp/startwm.sh
sudo -u "${VM_USER}" -i bash -c 'echo xfce4-session > ~/.xsession'
sudo -u "${VM_USER}" -i bash -c 'echo xset s off >> ~/.xsession'
sudo -u "${VM_USER}" -i bash -c 'echo xset -dpms >> ~/.xsession'
# Make sure xrdp service starts up with the system
sudo systemctl enable xrdp
sudo service xrdp restart
## Python 3.8 and Jupyter
sudo apt install -y jupyter-notebook microsoft-edge-dev
## VS Code
echo "init_vm.sh: VS Code"
sudo apt install -y code
sudo apt install -y gvfs-bin || true
echo "init_vm.sh: Folders"
sudo mkdir -p /opt/vscode/user-data
sudo mkdir -p /opt/vscode/extensions
# echo "init_vm.sh: azure-cli"
sudo apt install azure-cli -y
# TODO: need to look at proxy extentions
## VSCode Extensions
# echo "init_vm.sh: VSCode extensions"
# code --extensions-dir="/opt/vscode/extensions" --user-data-dir="/opt/vscode/user-data" --install-extension ms-python.python
# code --extensions-dir="/opt/vscode/extensions" --user-data-dir="/opt/vscode/user-data" --install-extension REditorSupport.r
# code --extensions-dir="/opt/vscode/extensions" --user-data-dir="/opt/vscode/user-data" --install-extension RDebugger.r-debugger
# Azure Storage Explorer
sudo apt install gnome-keyring dotnet-sdk-7.0 -y
wget -q "${NEXUS_PROXY_URL}"/repository/microsoft-download/A/E/3/AE32C485-B62B-4437-92F7-8B6B2C48CB40/StorageExplorer-linux-x64.tar.gz -P /tmp
sudo mkdir /opt/storage-explorer
sudo tar xvf /tmp/StorageExplorer-linux-x64.tar.gz -C /opt/storage-explorer
sudo chmod +x /opt/storage-explorer/*
sudo tee /usr/share/applications/storage-explorer.desktop << END
[Desktop Entry]
Name=Storage Explorer
Comment=Azure Storage Explorer
Exec=/opt/storage-explorer/StorageExplorer
Icon=/opt/storage-explorer/resources/app/out/app/icon.png
Terminal=false
Type=Application
StartupNotify=false
StartupWMClass=Code
Categories=Development;
END
## R
echo "init_vm.sh: R Setup"
sudo apt install -y r-base
# RStudio Desktop
echo "init_vm.sh: RStudio"
wget "${NEXUS_PROXY_URL}"/repository/r-studio-download/electron/jammy/amd64/rstudio-2023.12.1-402-amd64.deb -P /tmp/2204
wget "${NEXUS_PROXY_URL}"/repository/r-studio-download/electron/focal/amd64/rstudio-2023.12.1-402-amd64.deb -P /tmp/2004
sudo gdebi --non-interactive /tmp/"${APT_SKU}"/rstudio-2023.12.1-402-amd64.deb
# Fix for blank screen on DSVM (/sh -> /bash due to conflict with profile.d scripts)
sudo sed -i 's|!/bin/sh|!/bin/bash|g' /etc/xrdp/startwm.sh
if [ "${SHARED_STORAGE_ACCESS}" -eq 1 ]; then
# Install required packages
@ -75,6 +137,7 @@ fi
### Anaconda Config
if [ "${CONDA_CONFIG}" -eq 1 ]; then
echo "init_vm.sh: Anaconda"
export PATH="/anaconda/condabin":$PATH
export PATH="/anaconda/bin":$PATH
export PATH="/anaconda/envs/py38_default/bin":$PATH
@ -85,11 +148,42 @@ if [ "${CONDA_CONFIG}" -eq 1 ]; then
fi
# Docker install and config
sudo apt-get remove -y moby-tini || true
sudo apt-get install -y r-base-core
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin jq
sudo apt-get install -y docker-compose-plugin docker-ce-cli containerd.io jq
sudo apt-get install -y docker-ce
jq -n --arg proxy "${NEXUS_PROXY_URL}:8083" '{"registry-mirrors": [$proxy]}' > /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
# R config
sudo echo -e "local({\n r <- getOption(\"repos\")\n r[\"Nexus\"] <- \"""${NEXUS_PROXY_URL}\"/repository/r-proxy/\"\n options(repos = r)\n})" | sudo tee /etc/R/Rprofile.site
# Jupiter Notebook Config
sudo sed -i -e 's/Terminal=true/Terminal=false/g' /usr/share/applications/jupyter-notebook.desktop
# Default Browser
sudo update-alternatives --config x-www-browser
## Cleanup
echo "init_vm.sh: Cleanup"
sudo shutdown -r now
# Prevent screen timeout
echo "init_vm.sh: Preventing Timeout"
sudo touch /home/"${VM_USER}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml
sudo chmod 664 /home/"${VM_USER}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml
sudo chown "${VM_USER}":"${VM_USER}" /home/"${VM_USER}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml
sudo tee /home/"${VM_USER}"/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml << END
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfce4-screensaver" version="1.0">
<property name="saver" type="empty">
<property name="mode" type="int" value="0"/>
<property name="enabled" type="bool" value="false"/>
</property>
<property name="lock" type="empty">
<property name="enabled" type="bool" value="false"/>
</property>
</ channel>
END