Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Remote Desktop, Continuously Delivered

Remote Desktop, Continuously Delivered

Originally presented at 2019 DevOpsDays Philadelphia.

Traveling with multiple electronic devices can be a chore, especially with constraints on size and the hurdles of security. We can try to solve this problem by using a remote desktop accessible from any of our devices but that can take time to set up! What happens when we need another remote desktop quickly? How can we create a remote desktop as on-demand as a container or virtual machine in our datacenter?

In this talk, we’ll apply infrastructure-as-code to create a continuously delivered remote desktop experience. While there are some limitations to a seamless user experience for a remote desktop, we’ll review tools allow us to automate creation and configuration and techniques to ensure it is built reliably. By applying infrastructure-as-code to remote desktop, we can create an immutable remote desktop image, deploy replicas based on our geographic location, and test if our development environment is ready for use.


Rosemary Wang

October 23, 2019

More Decks by Rosemary Wang

Other Decks in Technology


  1. Copyright © 2019 HashiCorp Remote Desktop, Continuously Delivered DevOpsDaysPhilly |

    October 23, 2019 @joatmon08
  2. Warning: This isn’t a Continuous Delivery success story. But it

    will have elephants. 2
  3. #notsponsored

  4. Why? ▪ Security – Intellectual Property – Personal Identifying Information

    ▪ Developer Productivity ▪ I ❤ my development machine
  5. “Physical resources are better than logical.” 5

  6. Right? 6.4 Mt Of e-waste in US, 2017 ~ 1.2

    M Asian elephants, in equivalent weight https://collections.unu.edu/eserv/UNU:6341/Global-E-waste_Monitor_2017__electronic_single_pages_.pdf
  7. Right? 6.4 Mt Of e-waste in US, 2017 ~ 1.2

    M Asian elephants, in equivalent weight https://www.worldwildlife.org/species/asian-elephant < 50,000 Current population of Asian elephants
  8. Physical resources have a cost. 8

  9. Let’s try to deliver a virtual development environment. 9

  10. Reduce friction with Continuous Delivery ▪ So I can predictably

    and reliably create a development environment, on-demand. ▪ And run on one tablet.
  11. Remote Desktop, Continuously Delivered Immutable image of desktop tools So

    I’m ready to develop Deploy to region of choice In a reliable way Run it on my tablet Travel lighter and reduce cost 11
  12. Immutable image of desktop tools So I’m ready to develop

  13. Scripts install packages. ▪ Chrome Remote Desktop ▪ Visual Studio

    Code & Extensions ▪ Golang ▪ Git ▪ Terraform ▪ Docker
  14. Before I need the cloud, test with Vagrant. CODE EDITOR

    Vagrant.configure("2") do |config| config.vm.box = "debian/stretch64" config.vm.provision "shell", path: “../packer/install- desktop.sh" config.vm.provision "shell", path: “../packer/install- devtools.sh", privileged: false config.vm.provision "shell", path: "../packer/test.sh", privileged: false end
  15. Continuously Deliver the Image ▪ vagrant up for local test

    ▪ Commit and push ▪ CircleCI uses Packer to build
  16. github.com/joatmon08/chrome-remote-desktop-image

  17. Deploy to region of choice In a reliable way 17

  18. Successful CD has Tests ▪Unit ▪Contract ▪Integration ▪End-to-end

  19. Successful CD has Tests ▪Unit ✅ ▪Contract ✅ ▪Integration #

    ▪End-to-end $
  20. Unit ▪Not exactly a unit test ▪Check if runtime has

    variables defined ▪Still passes locally
  21. Contract ▪Actual outputs match expected inputs ▪e.g., Terraform Cloud variables

    and outputs
  22. Deploy Changes ▪(Manually) Get refresh token ▪Add to CircleCI environment

    variables ▪Trigger pipeline in CircleCI
  23. github.com/joatmon08/chrome-remote-desktop-pipeline

  24. Run it on my tablet Travel lighter and reduce cost

  25. None
  26. Manual End-to-End Test ▪ I didn’t bring my tablet! ▪

    Modifier keys don't work ▪ Would like to automate this
  27. Cost Optimization ▪ Schedule weekly shutdown ▪ Simple cron job

    ▪ Build better development discipline and habits
  28. “Tech Debt” ▪ Secrets (PIN, API keys, etc.) ▪ Automate

    retrieval of refresh token ▪ Security scanning ▪ Lock down networking
  29. “Tech Debt” ▪ Auditing log-ins ▪ Better lifecycle management ▪

    Cost estimation Similar to developing a product…
  30. Frictionless? 30

  31. Not quite! ▪ Security – Still need to do auditing

    steps ▪ Developer Productivity – Pipelines, with some manual steps ▪ I ❤ my development machine – At least I have my IDE
  32. Good enough for me! ▪ Distraction-free development environment ▪ Push

    and forget ▪ Reduced cost*
  33. DevOps is about
 trying to do better. 33

  34. https://en.wikipedia.org/wiki/Asian_elephant#/media/File:Elephas_maximus_(Bandipur).jpg

  35. Useful Links ▪ Remote Desktop Image & Pipeline ▪ Chrome

    Remote Desktop ▪ Packer Builder for GCE ▪ Terraform Cloud ▪ VS Code CLI Extension Management
  36. github.com/joatmon08/chrome-remote-desktop-pipeline Rosemary Wang (she/her) Developer Advocate at HashiCorp @joatmon08 joatmon08

    linkedin.com/in/rosemarywang/ 36