Docker > Settings > Overview > Recreate, making sure that “Reset variable to default” is not checked.
Finally start.

Docker > Settings > Overview > Recreate, making sure that “Reset variable to default” is not checked.
Finally start.

Multipass is pretty useful but what a pain this was to figure out, due to Ubuntu’s Node.js package not working with AWS-CDK.
Multipass lets you manage VM in Ubuntu and can take cloud-init scripts as a parameter. I wanted an Ubuntu LTS instance with AWS CDK, which needs Node.js and python3-venv.
#cloud-config
packages:
- python3-venv
- unzip
package_update: true
package_upgrade: true
write_files:
- path: "/etc/environment"
append: true
content: |
export PATH=\
/opt/node-v20.11.1-linux-x64/bin:\
/usr/local/sbin:/usr/local/bin:\
/usr/sbin:/usr/bin:/sbin:/bin:\
/usr/games:/usr/local/games:\
/snap/bin
runcmd:
- wget https://nodejs.org/dist/v20.11.1/node-v20.11.1-linux-x64.tar.xz
- tar xvf node-v20.11.1-linux-x64.tar.xz -C /opt
- export PATH=/opt/node-v20.11.1-linux-x64/bin:$PATH
- npm install -g npm@latest
- npm install -g aws-cdk
- git config --system user.name "Dougie Richardson"
- git config --system user.email "xx@xxxxxxxxx.com"
- git config --system init.defaultBranch main
- wget https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip
- unzip awscli-exe-linux-x86_64.zip
- ./aws/install
Save that as cdk.yaml and spin up an new instance:
multipass launch --name cdk --cloud-init cdk.yaml

There’s a couple useful things to note if you’re checking this out:
/var/log/cloud-init-output.log.Shell into the new VM with multipass shell cdk, then we can configure programmatic access and bootstrap CDK.
aws sso configure
aws sso login --profile profile_name
aws sts get-caller-identity --profile profile_name
aws configure get region --profile profile_name
The last two commands give the account and region to bootstrap:
cdk bootstrap aws://account_number/region --profile profile_name
I want to be able to connect to the environment using Visual Studio Code, so first we need to create a SSH key:
ssh-keygen -t rsa
We need a configuration YAML, replace <generated ssh-rsa key> with the above key, saved as cloud-init.yaml:
groups:
- vscode
runcmd:
- adduser ubuntu vscode
ssh_authorized_keys:
- ssh-rsa <generated ssh-rsa key>
Assuming you’ve got Multipass installed (if not sudo snap install multipass) then:
multipass launch mantic --name ubuntu-cdk --cloud-init
We’ll come back to Visual Studio Code later but first lets set everything up in the VM. We need to install aws-cli which I want to use with SSO (hence why we installed Mantic).
multipass shell ubuntu-cdk
sudo apt install awscli
aws configure sso
Follow the prompts and sign in to AWS as usual. Then install CDK:
sudo apt install nodejs npm
sudo npm install -g aws-cdk
Almost there, lets bootstrap1 (provisioning resources needed to make deployments) substituting the relevant values:
cdk bootstrap aws://<account>/<region> --profile <profile>
You should see a screen like this:

Create a new CDK application by creating a new folder, changing into it and initialising CDK:
cdk init app --language python
source .venv/bin/activate
python -m pip install -r requirements.txt
And that’s about it, except for Visual Studio Code. You’ll need to install Microsoft’s Remote-SSH extension:

You can get the IP address from multipass list, then in Code add a new SSH connection using ubuntu@<ip>:

Accept the various options presented and you’re there!
