<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Docker Archives - VirtJunkie</title>
	<atom:link href="/category/docker/feed/" rel="self" type="application/rss+xml" />
	<link>/category/docker/</link>
	<description>Virtualization, Automation, and anything else that might be on my mind</description>
	<lastBuildDate>Mon, 27 Apr 2020 13:00:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.2</generator>

<image>
	<url>/wp-content/uploads/2020/04/cropped-vj4-150x150.png</url>
	<title>Docker Archives - VirtJunkie</title>
	<link>/category/docker/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Set Up Enpass With HTTPS Protected WebDAV and Ditch LastPass</title>
		<link>/2020/04/27/ditch-lastpass-for-enpass-webdav-https-traefik/</link>
					<comments>/2020/04/27/ditch-lastpass-for-enpass-webdav-https-traefik/#respond</comments>
		
		<dc:creator><![CDATA[Jon]]></dc:creator>
		<pubDate>Mon, 27 Apr 2020 13:00:00 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Servers]]></category>
		<guid isPermaLink="false">http://www.virtjunkie.com/?p=1249</guid>

					<description><![CDATA[<p>It's time to ditch cloud based password managers. There.. I said it. What we are doing when we use them is giving ownership and management of our trusted secrets to someone else, and hoping that they will be able to protect them from bad guys, and make sure they are available when we need them.</p>
<p>The post <a href="/2020/04/27/ditch-lastpass-for-enpass-webdav-https-traefik/">Set Up Enpass With HTTPS Protected WebDAV and Ditch LastPass</a> appeared first on <a href="/">VirtJunkie</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>It&#8217;s time to ditch cloud based password managers. There.. I said it. What we are doing when we use them is giving ownership and management of our trusted secrets to someone else, and hoping that they will be able to protect them from bad guys, and make sure they are available when we need them.</p>



<p>That&#8217;s a heck of an ask, isn&#8217;t it? I&#8217;ve been a LastPass customer for a very, very long time.. I use it to share secrets with my family, I use it on my mobile device to log into apps. It&#8217;s a safe bet to say it&#8217;s a critical piece of how I operate, and they have never once let me down. That said, if they asked for money to continue using their service, I&#8217;d have to pay. If they had a security event where secrets were compromised or if they lost my data, I&#8217;d be in very, very bad shape.</p>



<p>In this article, I will talk about how to set up a WebDAV share that&#8217;s protected by HTTPS using Traefik, Let&#8217;s Encrypt, and a WebDAV container on your own server, and use it to sync your secrets with devices.</p>



<span id="more-1249"></span>



<p>Before I begin, it&#8217;s important to understand that using WebDAV isn&#8217;t the only way to sync your secrets with Enpass. <a rel="noreferrer noopener" href="https://www.enpass.io/docs/manual-desktop/sync.html#supclouds" target="_blank">There are others</a>:</p>



<ul><li>Dropbox</li><li>Google Drive</li><li>OneDrive (Personal/Business)</li><li>iCloud</li><li>Box</li><li>Folder sync</li></ul>



<h2 class="wp-block-heading">Base Server Set Up</h2>



<h3 class="wp-block-heading">Get a VPS</h3>



<p>First thing we need is a server that is public internet facing. The easiest way to do this is to use a service that provides virtual private servers. I like Vultr because of their price/performance/feature availability ratio. They are cheaper than DigitalOcean and AWS, as easy, if not easier to manage, and have the scale you need to put your data pretty much wherever you want. If you do use Vultr, please do me a favor and use <a rel="noreferrer noopener" href="https://www.vultr.com/?ref=8531966-6G" target="_blank">this link</a> to sign up. I&#8217;ll get a little kickback, but you&#8217;ll get $100 USD to use on the site in your first month.</p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:24% auto"><figure class="wp-block-media-text__media"><a href="https://www.vultr.com/?ref=8531966-6G" target="_blank" rel="noopener noreferrer"><img fetchpriority="high" decoding="async" width="283" height="252" src="https://new.virtjunkie.com/wp-content/uploads/2020/04/2020-04-26_09-57.png" alt="" class="wp-image-1252"/></a></figure><div class="wp-block-media-text__content">
<p class="has-text-align-left has-normal-font-size">The OS doesn&#8217;t really matter, as long as you can install docker on it. A very small VPS will suffice, and mine costs $3.50 USD/Month.</p>
</div></div>



<h3 class="wp-block-heading">Harden the OS</h3>



<p>I won&#8217;t go into very much depth with this subject, but here are a few general guidelines:</p>



<ul><li>Disable root login via SSH</li><li>Require public key authentication for SSH sessions</li><li>Enable multi factor authentication for your remote user</li><li>Only install packages you need</li><li>Ensure all updates are installed, and continue to do so on a regular basis</li></ul>



<h2 class="wp-block-heading">Set Up Docker, Traefik, and WebDAV</h2>



<p>All code is on the GitHub repository I use to share all code for this site. You can find it here: <a href="https://github.com/jonhowe/Virtjunkie.com/tree/master/DitchLastPass">https://github.com/jonhowe/Virtjunkie.com/tree/master/DitchLastPass</a></p>



<p>First and foremost, this will not be a tutorial on how to administer Docker, WebDAV, or especially Traefik, but I&#8217;ll give you the exact steps and code for setting this up yourself, and provide some links at the end you can use to learn more about these topics.</p>



<p>All of the following steps will be executed on your VPS, so please sure you are connected to it via SSH or a similar terminal window.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>We&#8217;ll be using an external docker bridge network in this configuration, the following command will create it</p>



<pre class="urvanov-syntax-highlighter-plain-tag">docker network create proxy</pre>
</div></div>
</div></div>
</div></div>
</div></div>
</div></div>
</div></div>



<h3 class="wp-block-heading">Create Traefik Configuration</h3>



<p>First of all, let&#8217;s create the directory structure we&#8217;ll need for Traefik (line 1). We&#8217;ll also be creating a file that will be used for storing SSL certificates (line 2), and setting permissions on it (line 3).</p>



<pre class="urvanov-syntax-highlighter-plain-tag">mkdir -p $HOME/docker/traefik/data
touch $HOME/docker/traefik/data/acme.json
chmod 600 $HOME/docker/traefik/data/acme.json</pre>



<h4 class="wp-block-heading">Create Traefik Configuration</h4>



<p>Create a new file in the <strong><code>traefik/data</code></strong> directory we just created called <code><strong>traefik.yml</strong></code> with the contents below.</p>



<p>Changes Required:</p>



<ul><li>Line 24: Modify your email address</li></ul>



<pre class="urvanov-syntax-highlighter-plain-tag">#File Path
#$HOME/docker/traefik/data/traefik.yml

#http://www.virtjunkie.com/ditch-lastpass-for-enpass-webdav-https-traefik/
#https://github.com/jonhowe/Virtjunkie.com/tree/master/DitchLastPass

api:
  dashboard: false

entryPoints:
  http:
    address: &quot;:80&quot;
  https:
    address: &quot;:443&quot;

providers:
  docker:
    endpoint: &quot;unix:///var/run/docker.sock&quot;
    exposedByDefault: false

certificatesResolvers:
  http:
    acme:
      email: your.email@domain.com
      storage: acme.json
      httpChallenge:
        entryPoint: http</pre>



<h4 class="wp-block-heading">Define Traefik Container</h4>



<p>Create a new file in the <strong><code>traefik/data</code></strong> directory called <code><strong>docker-compose.yml</strong></code></p>



<p>Changes Required:</p>



<ul><li>Line 30: Modify to fit the hostname of your server</li><li>Line 31: Add in credentials compatible with basic auth. You can use the output from the command below to achieve this.<ul><li><code><strong>echo $(htpasswd -nb [your user] [your pass]) | sed -e s/\$/\$\$/g</strong></code></li></ul></li><li>Line 35: Modify to fit the hostname of your server</li></ul>



<pre class="urvanov-syntax-highlighter-plain-tag">#File Path
#$HOME/docker/traefik/docker-compose.yml

#http://www.virtjunkie.com/ditch-lastpass-for-enpass-webdav-https-traefik/
#https://github.com/jonhowe/Virtjunkie.com/tree/master/DitchLastPass

version: '3'

services:
  traefik:
    image: traefik:v2.0
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
      - ./data/logs/:/logs/
    labels:
      - &quot;traefik.enable=true&quot;
      - &quot;traefik.http.routers.traefik.entrypoints=http&quot;
      - &quot;traefik.http.routers.traefik.rule=Host(`custom.hostname.com`)&quot;
      - &quot;traefik.http.middlewares.traefik-auth.basicauth.users=traefikuser:htpasswd-encrypted-string&quot;
      - &quot;traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https&quot;
      - &quot;traefik.http.routers.traefik.middlewares=traefik-https-redirect&quot;
      - &quot;traefik.http.routers.traefik-secure.entrypoints=https&quot;
      - &quot;traefik.http.routers.traefik-secure.rule=Host(`custom.hostname.com`)&quot;
      - &quot;traefik.http.routers.traefik-secure.middlewares=traefik-auth&quot;
      - &quot;traefik.http.routers.traefik-secure.tls=true&quot;
      - &quot;traefik.http.routers.traefik-secure.tls.certresolver=http&quot;
      - &quot;traefik.http.routers.traefik-secure.service=api@internal&quot;

networks:
  proxy:</pre>



<h4 class="wp-block-heading">Start Traefik Container</h4>



<pre class="urvanov-syntax-highlighter-plain-tag">cd $HOME/docker/traefik
docker-compose up -d</pre>



<h3 class="wp-block-heading">Create WebDAV Configuration</h3>



<p>Before we begin, we need to create the directory structure for the WebDAV container. Use the following command to do so.</p>



<pre class="urvanov-syntax-highlighter-plain-tag">mkdir -p $HOME/docker/webdav/dav/</pre>



<p>We&#8217;ll be using a <a rel="noreferrer noopener" href="https://hub.docker.com/r/bytemark/webdav/" target="_blank">container authored by bytemark</a> for this project. It&#8217;s essentially just apache with the webdav module installed. As of today, the container is less than 100MB.</p>



<h4 class="wp-block-heading">Define WebDAV Application Configuration</h4>



<p>Changes Required:</p>



<ul><li>Line 15: Username used to authenticate to the WebDAV service.</li><li>Line 16: Password you&#8217;ll use to authenticate to the WebDAV service. This is stored in plaintext in this example, but storing the variable in an external file is best practice.</li><li>Line 17: Modify to fit the hostname of your server</li><li>Line 27: Modify to fit the hostname of your server</li><li>Line 31: Modify to fit the hostname of your server</li></ul>



<pre class="urvanov-syntax-highlighter-plain-tag">#File path
#$HOME/docker/webdav/docker-compose.yml

#http://www.virtjunkie.com/ditch-lastpass-for-enpass-webdav-https-traefik/
#https://github.com/jonhowe/Virtjunkie.com/tree/master/DitchLastPass

version: '3'
services:
  webdav:
    image: bytemark/webdav
    container_name: webdav
    restart: unless-stopped
    environment:
      AUTH_TYPE: Basic
      USERNAME: your-username
      PASSWORD: secure-passsword
      SERVER_NAMES: your-dav.domain.com
    networks:
      - proxy
    security_opt:
      - no-new-privileges:true
    volumes:
      - ./dav:/var/lib/dav
    labels:
      - &quot;traefik.enable=true&quot;
      - &quot;traefik.http.routers.webdav.entrypoints=http&quot;
      - &quot;traefik.http.routers.webdav.rule=Host(`your-dav.domain.com`)&quot;
      - &quot;traefik.http.middlewares.webdav-https-redirect.redirectscheme.scheme=https&quot;
      - &quot;traefik.http.routers.webdav.middlewares=webdav-https-redirect&quot;
      - &quot;traefik.http.routers.webdav-secure.entrypoints=https&quot;
      - &quot;traefik.http.routers.webdav-secure.rule=Host(`your-dav.domain.com`)&quot;
      - &quot;traefik.http.routers.webdav-secure.tls=true&quot;
      - &quot;traefik.http.routers.webdav-secure.tls.certresolver=http&quot;
      - &quot;traefik.http.routers.webdav-secure.service=webdav&quot;
      - &quot;traefik.http.services.webdav.loadbalancer.server.port=80&quot;
      - &quot;traefik.docker.network=proxy&quot;
networks:
  proxy:
    external: true</pre>



<h4 class="wp-block-heading">Start the WebDAV Container</h4>



<p>Run the following command to bring up the webdav container</p>



<pre class="urvanov-syntax-highlighter-plain-tag">cd $HOME/docker/webdav
docker-compose up -d</pre>



<h3 class="wp-block-heading">Bringing it all together</h3>



<h4 class="wp-block-heading">Summary</h4>



<p>At this point you should have  two containers running on your VPS. Traefik is acting as a reverse proxy for the WebDAV container, and is providing SSL encryption to it. The SSL certificate is provided by <a rel="noreferrer noopener" href="https://letsencrypt.org/" target="_blank">Let&#8217;s Encrypt</a>.</p>



<h4 class="wp-block-heading">Final Directory Structure</h4>



<pre class="urvanov-syntax-highlighter-plain-tag">user@webdav-server:~/docker$ tree
.
├── traefik
│&amp;nbsp;&amp;nbsp; ├── data
│&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; ├── acme.json
│&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; └── traefik.yml
│&amp;nbsp;&amp;nbsp; └── docker-compose.yml
└── webdav
    ├── dav
    │&amp;nbsp;&amp;nbsp; ├── data
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp; └── Enpass
    │&amp;nbsp;&amp;nbsp; │&amp;nbsp;&amp;nbsp;     └── vault.enpassdbsync
    │&amp;nbsp;&amp;nbsp; ├── DavLock
    │&amp;nbsp;&amp;nbsp; ├── DavLock.dir
    │&amp;nbsp;&amp;nbsp; └── DavLock.pag
    └── docker-compose.yml

6 directories, 8 files</pre>



<h2 class="wp-block-heading">Migrate to Enpass Using WebDAV</h2>



<p>Now that we&#8217;ve got a functional and secure WebDAV instance, we just need to migrate to it. These steps are pretty easy, but I want to include them to be comprehensive.</p>



<h3 class="wp-block-heading">Export Secrets From Lastpass</h3>



<p>To make our transition from Lastpass as seamless as possible, we&#8217;ll export our secrets so we can import them into Enpass. The easiest way to do this is from the Lastpass Vault.</p>



<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" width="359" height="444" src="https://www.virtjunkie.com/wp-content/uploads/2020/04/2020-04-26_11-51.png" alt="" class="wp-image-1271" srcset="/wp-content/uploads/2020/04/2020-04-26_11-51.png 359w, /wp-content/uploads/2020/04/2020-04-26_11-51-243x300.png 243w" sizes="(max-width: 359px) 100vw, 359px" /></figure><div class="wp-block-media-text__content">
<p class="has-large-font-size">Step 1 &#8211; Open Your Vault</p>
</div></div>



<hr class="wp-block-separator"/>



<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" width="574" height="986" src="https://www.virtjunkie.com/wp-content/uploads/2020/04/2020-04-26_11-55.png" alt="" class="wp-image-1272" srcset="/wp-content/uploads/2020/04/2020-04-26_11-55.png 574w, /wp-content/uploads/2020/04/2020-04-26_11-55-175x300.png 175w" sizes="(max-width: 574px) 100vw, 574px" /></figure><div class="wp-block-media-text__content">
<p class="has-large-font-size">Step 2 &#8211; Export Secrets</p>



<ol><li>Select &#8220;More Options&#8221;</li><li>Select &#8220;Advanced&#8221;</li><li>Select &#8220;Export&#8221;</li><li>If prompted, enter your Master Password, and note where the CSV export file name and path.</li></ol>
</div></div>



<h3 class="wp-block-heading">Import Secrets To Enpass</h3>



<p>Pretty easy stuff here, just open enpass, and kick off the import.</p>



<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="883" height="949" src="https://www.virtjunkie.com/wp-content/uploads/2020/04/Peek-2020-04-26-12-55.gif" alt="" class="wp-image-1287"/></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size">Import Steps:</p>



<ol><li>Open Enpass</li><li>Select Menu</li><li>Select File</li><li>Select Import</li><li>When prompted to &#8220;Select from where you want to import your data into Enpass&#8221;, select Lastpass</li><li>Navigate to the directory you exported the CSV to</li><li>Select continue to finish the import</li></ol>
</div></div>



<h3 class="wp-block-heading">Connect EnPass To WebDav Share</h3>



<p>At this point you&#8217;ve got a functioning WebDAV service protected by SSL, as well as a local instance of Enpass that has your lastpass secrets. We just need to connect EnPass to your Webdav instance to allow us to sync to it. Once you have <a rel="noreferrer noopener" href="https://www.enpass.io/downloads/" target="_blank">EnPass Installed</a>, follow the steps below to connect it to your WebDAV Service.</p>



<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="881" height="558" src="https://www.virtjunkie.com/wp-content/uploads/2020/04/Peek-2020-04-26-12-20.gif" alt="" class="wp-image-1278"/></figure><div class="wp-block-media-text__content">
<p>Connection Steps:</p>



<ol><li>Open Enpass</li><li>Select Settings</li><li>Select Vaults</li><li>Select the Vault you&#8217;d like to sync</li><li>Enter the URL of your server, and ensure to include the https:// prefix</li><li>Enter the username and password created in Section 2.2.1</li><li>Ensure that the checkbox for &#8220;Bypass SSL Certificate Validation&#8221; is unchecked. We want to validate the SSL certificate since we are using Let&#8217;s Encrypt.</li></ol>
</div></div>



<h2 class="wp-block-heading">Risks</h2>



<p>There are some things that LastPass does for us that we don&#8217;t get with this solution. In particular, we are somewhat exposed to brute force attempts to the webdav service. Also, LastPass has a number of email notifications that go out when things happen in your vault. We are really only notified when a new client joins the vault in Enpass.</p>



<h2 class="wp-block-heading">Trafeik Resources</h2>



<p><a href="https://medium.com/@containeroo/traefik-2-0-docker-a-simple-step-by-step-guide-e0be0c17cfa5">https://medium.com/@containeroo/traefik-2-0-docker-a-simple-step-by-step-guide-e0be0c17cfa5</a><br><a href="https://containo.us/blog/traefik-2-0-docker-101-fc2893944b9d/">https://containo.us/blog/traefik-2-0-docker-101-fc2893944b9d/</a></p>
<p>The post <a href="/2020/04/27/ditch-lastpass-for-enpass-webdav-https-traefik/">Set Up Enpass With HTTPS Protected WebDAV and Ditch LastPass</a> appeared first on <a href="/">VirtJunkie</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>/2020/04/27/ditch-lastpass-for-enpass-webdav-https-traefik/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu Cosmic 18.10 &#8211; Use Ansible To Deploy Docker</title>
		<link>/2018/12/14/ubuntu-cosmic-18-10-use-ansible-to-deploy-docker/</link>
					<comments>/2018/12/14/ubuntu-cosmic-18-10-use-ansible-to-deploy-docker/#respond</comments>
		
		<dc:creator><![CDATA[Jon]]></dc:creator>
		<pubDate>Fri, 14 Dec 2018 22:45:36 +0000</pubDate>
				<category><![CDATA[Ansible]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">http://www.virtjunkie.com/?p=712</guid>

					<description><![CDATA[<p>As it turns out, Docker doesn&#8217;t officially support any version of Ubuntu past Artful. This is a bit of a challenge if you want to use a state configuration manager such as Ansible to deploy Docker, or even if you want to install it manually. I was able to get this working by using the [&#8230;]</p>
<p>The post <a href="/2018/12/14/ubuntu-cosmic-18-10-use-ansible-to-deploy-docker/">Ubuntu Cosmic 18.10 &#8211; Use Ansible To Deploy Docker</a> appeared first on <a href="/">VirtJunkie</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As it turns out, Docker doesn&#8217;t <a href="https://docs.docker.com/v17.09/engine/installation/linux/docker-ce/ubuntu/#os-requirements">officially support</a> any version of Ubuntu past Artful. This is a bit of a challenge if you want to use a state configuration manager such as Ansible to deploy Docker, or even if you want to install it manually. I was able to get this working by using the test branch of the docker release for Ubuntu Cosmic.</p>



<span id="more-712"></span>



<p>&nbsp;I found a <a href="https://galaxy.ansible.com/geerlingguy/docker">popular role in Ansible Galaxy</a>&nbsp;with a ton of installs, but the documentation that comes with it doesn&#8217;t work, which is fine&#8230; not a supported version, etc. I used the steps below to get it working.<br></p>



<p>Please be aware, the test branch is likely not stable, and shouldn&#8217;t be used for production. Follow this at your own risk.</p>



<p>1.) Run the command below to install the role</p>



<pre class="urvanov-syntax-highlighter-plain-tag">root@server:~$ ansible-galaxy install geerlingguy.docker</pre>



<p>2.) Create a text file named &#8220;install-docker.yml&#8221;<br>&nbsp; &#8211; The value assigned to docker_apt_release_channel being &#8220;test&#8221;.<br>&nbsp; &#8211; Add your own username(s) under &#8220;docker_users&#8221;<br>(This yaml file is located on my github page here: <a href="https://github.com/jonhowe/Virtjunkie.com/blob/master/install-docker.yml">https://github.com/jonhowe/Virtjunkie.com/blob/master/install-docker.yml</a>)</p>



<pre class="urvanov-syntax-highlighter-plain-tag">---
- name: Install Docker
  hosts: all
  become: yes
  become_method: sudo
  tasks:
  - name: Install Docker and docker-compose
    include_role:
       name: geerlingguy.docker
    vars:
       - docker_edition: 'ce'
       - docker_apt_release_channel: test
       - docker_package_state: present
       - docker_install_compose: true
       - docker_compose_version: &quot;1.22.0&quot;
       - docker_users:
          - jhowe</pre>



<p>3.) Then it&#8217;s as easy as running the playbook</p>



<pre class="urvanov-syntax-highlighter-plain-tag">root@server:~$ ansible-playbook -K install-docker.yml</pre>
<p>The post <a href="/2018/12/14/ubuntu-cosmic-18-10-use-ansible-to-deploy-docker/">Ubuntu Cosmic 18.10 &#8211; Use Ansible To Deploy Docker</a> appeared first on <a href="/">VirtJunkie</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>/2018/12/14/ubuntu-cosmic-18-10-use-ansible-to-deploy-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
