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.

Be8b596c46f4c9a1aec6a7586af33134?s=128

Rosemary Wang

October 23, 2019
Tweet

More Decks by Rosemary Wang

Other Decks in Technology

Transcript

  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

    12
  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

    24
  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