LXD Ubuntu VM launch and disk resize
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/env bash | |
set -e | |
readonly VM="banana" | |
readonly CPU="8" | |
readonly MEM="8GB" | |
readonly DSK="120GB" | |
lxc init images:ubuntu/focal ${VM} -p default -p vm --vm | |
lxc config set ${VM} limits.cpu ${CPU} | |
lxc config set ${VM} limits.memory ${MEM} | |
lxc config device override ${VM} root size=${DISK} | |
lxc start ${VM} | |
sleep 10 # `lxc start` needs a `--wait`. | |
lxc exec ${VM} -- apt update | |
lxc exec ${VM} -- apt install cloud-initramfs-growroot -y | |
lxc exec ${VM} -- growpart /dev/sda 2 | |
lxc exec ${VM} -- resize2fs /dev/sda2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
config: | |
user.user-data: | | |
apt_mirror: http://us.archive.ubuntu.com/ubuntu/ | |
ssh_pwauth: yes | |
users: | |
- name: ubuntu | |
passwd: "\$6\$s.wXDkoGmU5md\$d.vxMQSvtcs1I7wUG4SLgUhmarY7BR.5lusJq1D9U9EnHK2LJx18x90ipsg0g3Jcomfp0EoGAZYfgvT22qGFl/" | |
lock_passwd: false | |
groups: lxd | |
shell: /bin/bash | |
sudo: ALL=(ALL) NOPASSWD:ALL | |
growpart: | |
mode: auto | |
devices: | |
- '/' | |
- '/dev/sda' | |
- '/dev/sda2' | |
ignore_growroot_disabled: false | |
description: VN profile | |
devices: | |
config: | |
source: cloud-init:config | |
type: disk | |
eth0: | |
nictype: bridged | |
parent: lxdbr0 | |
type: nic | |
root: | |
path: / | |
pool: default | |
size: 100GB | |
type: disk | |
name: vm |
Great stuff! Wish this was better documented on the LXD docs
Agreed. I spent all morning looking for this!
I do have one question though. I changed the user from "ubuntu" to "tux" because that's my preferred generic user, but tux isn't created but there is still an ubuntu user. Any suggestions?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thought I'd add a little info for those that haven't created or edited new LXD Profiles before.
Using the above ".sh" and ".yaml" contents...
First, set your EDITOR environment to whatever text editor you use (vi, nano etc)
To add a new "profile" to LXD you can Create a new empty profile:
then edit the new myprofile
Note: there will be 5-6 default lines at the bottom... you can delete those then
"Copy & Paste" the text content from the vm-lxd-profile.yaml above to the new profile.
You can see if LXD knows about your new "profile" by...
Finally, edit your copy of "launch_vm.sh" in the following Line:
and change the " -p vm " above to whatever you called your new LXD Profile
then run the script "launch_vm.sh"
when its done you can see your new VM using:
For further reference: LXD Profiles