Awww snap!
That's right! Snappy Ubuntu images are now on AWS, for your EC2 computing pleasure.
Enjoy this screencast as we start a Snappy Ubuntu instance in AWS, and install the xkcd-webserver package.
And a transcript of the commands follows below.
kirkland@x230:/tmp⟫ cat cloud.cfg #cloud-config snappy: ssh_enabled: True kirkland@x230:/tmp⟫ aws ec2 describe-images \ > --region us-east-1 \ > --image-ids ami-5c442634 { "Images": [ { "ImageType": "machine", "Description": "ubuntu-core-devel-1418912739-141-amd64", "Hypervisor": "xen", "ImageLocation": "ucore-images/ubuntu-core-devel-1418912739-141-amd64.manifest.xml", "SriovNetSupport": "simple", "ImageId": "ami-5c442634", "RootDeviceType": "instance-store", "Architecture": "x86_64", "BlockDeviceMappings": [], "State": "available", "VirtualizationType": "hvm", "Name": "ubuntu-core-devel-1418912739-141-amd64", "OwnerId": "649108100275", "Public": false } ] } kirkland@x230:/tmp⟫ kirkland@x230:/tmp⟫ # NOTE: This AMI will almost certainly have changed by the time you're watching this ;-) kirkland@x230:/tmp⟫ clear kirkland@x230:/tmp⟫ aws ec2 run-instances \ > --region us-east-1 \ > --image-id ami-5c442634 \ > --key-name id_rsa \ > --instance-type m3.medium \ > --user-data "$(cat cloud.cfg)" { "ReservationId": "r-c6811e28", "Groups": [ { "GroupName": "default", "GroupId": "sg-d5d135bc" } ], "OwnerId": "357813986684", "Instances": [ { "KeyName": "id_rsa", "PublicDnsName": null, "ProductCodes": [], "StateTransitionReason": null, "LaunchTime": "2014-12-18T17:29:07.000Z", "Monitoring": { "State": "disabled" }, "ClientToken": null, "StateReason": { "Message": "pending", "Code": "pending" }, "RootDeviceType": "instance-store", "Architecture": "x86_64", "PrivateDnsName": null, "ImageId": "ami-5c442634", "BlockDeviceMappings": [], "Placement": { "GroupName": null, "AvailabilityZone": "us-east-1e", "Tenancy": "default" }, "AmiLaunchIndex": 0, "VirtualizationType": "hvm", "NetworkInterfaces": [], "SecurityGroups": [ { "GroupName": "default", "GroupId": "sg-d5d135bc" } ], "State": { "Name": "pending", "Code": 0 }, "Hypervisor": "xen", "InstanceId": "i-af43de51", "InstanceType": "m3.medium", "EbsOptimized": false } ] } kirkland@x230:/tmp⟫ kirkland@x230:/tmp⟫ aws ec2 describe-instances --region us-east-1 | grep PublicIpAddress "PublicIpAddress": "54.145.196.209", kirkland@x230:/tmp⟫ ssh -i ~/.ssh/id_rsa ubuntu@54.145.196.209 ssh: connect to host 54.145.196.209 port 22: Connection refused 255 kirkland@x230:/tmp⟫ ssh -i ~/.ssh/id_rsa ubuntu@54.145.196.209 The authenticity of host '54.145.196.209 (54.145.196.209)' can't be established. RSA key fingerprint is 91:91:6e:0a:54:a5:07:b9:79:30:5b:61:d4:a8:ce:6f. No matching host key fingerprint found in DNS. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '54.145.196.209' (RSA) to the list of known hosts. Welcome to Ubuntu Vivid Vervet (development branch) (GNU/Linux 3.16.0-25-generic x86_64) * Documentation: https://help.ubuntu.com/ The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Welcome to the Ubuntu Core rolling development release. * See https://ubuntu.com/snappy It's a brave new world here in snappy Ubuntu Core! This machine does not use apt-get or deb packages. Please see 'snappy --help' for app installation and transactional updates. To run a command as administrator (user "root"), use "sudo". See "man sudo_root" for details. ubuntu@ip-10-153-149-47:~$ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,relatime,size=1923976k,nr_inodes=480994,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=385432k,mode=755) /dev/xvda1 on / type ext4 (ro,relatime,data=ordered) /dev/xvda3 on /writable type ext4 (rw,relatime,discard,data=ordered) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,mode=755) tmpfs on /etc/fstab type tmpfs (rw,nosuid,noexec,relatime,mode=755) /dev/xvda3 on /etc/systemd/system type ext4 (rw,relatime,discard,data=ordered) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset,clone_children) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb) tmpfs on /etc/machine-id type tmpfs (ro,relatime,size=385432k,mode=755) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) mqueue on /dev/mqueue type mqueue (rw,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) /dev/xvda3 on /etc/hosts type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /etc/sudoers.d type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /root type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/click/frameworks type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /usr/share/click/frameworks type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/systemd/snappy type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/systemd/click type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/initramfs-tools type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /etc/writable type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /etc/ssh type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/tmp type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/apparmor type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/cache/apparmor type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /etc/apparmor.d/cache type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /etc/ufw type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/log type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/system-image type ext4 (rw,relatime,discard,data=ordered) tmpfs on /var/lib/sudo type tmpfs (rw,relatime,mode=700) /dev/xvda3 on /var/lib/logrotate type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/dhcp type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/dbus type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/cloud type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /var/lib/apps type ext4 (rw,relatime,discard,data=ordered) tmpfs on /mnt type tmpfs (rw,relatime) tmpfs on /tmp type tmpfs (rw,relatime) /dev/xvda3 on /apps type ext4 (rw,relatime,discard,data=ordered) /dev/xvda3 on /home type ext4 (rw,relatime,discard,data=ordered) /dev/xvdb on /mnt type ext3 (rw,relatime,data=ordered) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=385432k,mode=700,uid=1000,gid=1000) ubuntu@ip-10-153-149-47:~$ mount | grep " / " /dev/xvda1 on / type ext4 (ro,relatime,data=ordered) ubuntu@ip-10-153-149-47:~$ sudo touch /foo touch: cannot touch ‘/foo’: Read-only file system ubuntu@ip-10-153-149-47:~$ sudo apt-get update Ubuntu Core does not use apt-get, see 'snappy --help'! ubuntu@ip-10-153-149-47:~$ sudo snappy --help Usage:snappy [-h] [-v] {info,versions,search,update-versions,update,rollback,install,uninstall,tags,build,chroot,framework,fake-version,nap} ... snappy command line interface optional arguments: -h, --help show this help message and exit -v, --version Print this version string and exit Commands: {info,versions,search,update-versions,update,rollback,install,uninstall,tags,build,chroot,framework,fake-version,nap} info versions search update-versions update rollback undo last system-image update. install uninstall tags build chroot framework fake-version ==SUPPRESS== nap ==SUPPRESS== ubuntu@ip-10-153-149-47:~$ sudo snappy info release: ubuntu-core/devel frameworks: apps: ubuntu@ip-10-153-149-47:~$ sudo snappy versions -a Part Tag Installed Available Fingerprint Active ubuntu-core edge 141 - 7f068cb4fa876c * ubuntu@ip-10-153-149-47:~$ sudo snappy search docker Part Version Description docker 1.3.2.007 The docker app deployment mechanism ubuntu@ip-10-153-149-47:~$ sudo snappy install docker docker 4 MB [=============================================================================================================] OK Part Tag Installed Available Fingerprint Active docker edge 1.3.2.007 - b1f2f85e77adab * ubuntu@ip-10-153-149-47:~$ sudo snappy versions -a Part Tag Installed Available Fingerprint Active ubuntu-core edge 141 - 7f068cb4fa876c * docker edge 1.3.2.007 - b1f2f85e77adab * ubuntu@ip-10-153-149-47:~$ sudo snappy search webserver Part Version Description go-example-webserver 1.0.1 Minimal Golang webserver for snappy xkcd-webserver 0.3.1 Show random XKCD compic via a build-in webserver ubuntu@ip-10-153-149-47:~$ sudo snappy install xkcd-webserver xkcd-webserver 21 kB [=====================================================================================================] OK Part Tag Installed Available Fingerprint Active xkcd-webserver edge 0.3.1 - 3a9152b8bff494 * ubuntu@ip-10-153-149-47:~$ exit logout Connection to 54.145.196.209 closed. kirkland@x230:/tmp⟫ ec2-instances i-af43de51 ec2-54-145-196-209.compute-1.amazonaws.com kirkland@x230:/tmp⟫ ec2-terminate-instances i-af43de51 INSTANCE i-af43de51 running shutting-down kirkland@x230:/tmp⟫
Cheers!
Dustin