<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Traefik on Nick's Blog</title><link>https://ibelieving.com/tags/traefik/</link><description>Recent content in Traefik on Nick's Blog</description><generator>Hugo</generator><language>zh-cn</language><copyright>2014 ibelieving.com. All rights reserved.</copyright><lastBuildDate>Thu, 07 Jan 2021 21:33:32 +0800</lastBuildDate><atom:link href="https://ibelieving.com/tags/traefik/index.xml" rel="self" type="application/rss+xml"/><item><title>nps 内网穿透</title><link>https://ibelieving.com/posts/2021-01-07-nps_use/</link><pubDate>Thu, 07 Jan 2021 21:33:32 +0800</pubDate><guid>https://ibelieving.com/posts/2021-01-07-nps_use/</guid><description>&lt;p&gt;&lt;a href="https://github.com/ehang-io/nps"&gt;nps&lt;/a&gt; 是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持 tcp、udp 流量转发，可支持任何 tcp、udp 上层协议（访问内网网站、本地支付接口调试、ssh 访问、远程桌面，内网 dns 解析等等……），此外还支持内网 http 代理、内网 socks5 代理、p2p 等，并带有功能强大的 web 管理端。&lt;/p&gt;
&lt;h2 id="实现结构图"&gt;实现结构图&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; +---------------+ +---------------------------------------+ +--------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | traffic | | Server x.x.x.x | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | nps web | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | +---------+ +--------------+ | | intranet |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | nps.test.com -----&amp;gt; | Traefik | +--&amp;gt; |127.0.0.1:8081| | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | +---------+ +--------------+ | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | | | nps Client |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | +---------+ x.x.x.x:8024 | +-------------+ :5900 +-------------+ |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | x.x.x.x:8001 -----&amp;gt; | nps | &amp;lt;------------------------------&amp;gt; | 10.1.50.100 | +-----&amp;gt; | 10.1.50.101 | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | +---------+ | | +-------------+ +-------------+ |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | | | | | |
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; +---------------+ +---------------------------------------+ +--------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;服务端：CentOS 7.9
客户端：MacOS 10.15&lt;/p&gt;</description></item><item><title>用 Consul 和 Traefik 实现 Docker 容器的服务注册与发现</title><link>https://ibelieving.com/posts/2020-02-06-consul_and_traefik_micro_service/</link><pubDate>Thu, 06 Feb 2020 22:43:52 +0800</pubDate><guid>https://ibelieving.com/posts/2020-02-06-consul_and_traefik_micro_service/</guid><description>&lt;p&gt;docker 实现应用的容器化
consul 集群实现服务的注册、发现
traefik 处理外部流量的负载均衡与路由&lt;/p&gt;
&lt;h2 id="启动-consul-集群与-docker"&gt;启动 consul 集群与 docker&lt;/h2&gt;
&lt;p&gt;通过 vagrant 起三台虚拟机实现基本的 consul 集群环境（为了节约资源把 docker 也运行在这上面了）。
consul 的 vagrant 配置文件如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# -*- mode: ruby -*-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# vi: set ft=ruby :&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# All Vagrant configuration is done below. The &amp;#34;2&amp;#34; in Vagrant.configure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# configures the configuration version (we support older styles for&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# backwards compatibility). Please don&amp;#39;t change it unless you know what&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# you&amp;#39;re doing.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Vagrant&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;configure&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;$&lt;/span&gt;script &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;lt;&lt;/span&gt;SCRIPT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#0a3069"&gt;&amp;#34;Installing&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;y wget
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;O &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;etc&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;yum&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;repos&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;d&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;CentOS&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;Base&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;repo http&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt;mirrors&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;aliyun&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;com&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;repo&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;Centos&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7.&lt;/span&gt;repo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;O &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;etc&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;yum&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;repos&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;d&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;epel&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;repo http&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt;mirrors&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;aliyun&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;com&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;repo&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;epel&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;&lt;span style="color:#0550ae"&gt;7.&lt;/span&gt;repo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum clean all
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum makecache
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;y jq unzip vim wget net&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;tools bind&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;utils dnsmasq
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo cp &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;vagrant&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;consul &lt;span style="color:#0550ae"&gt;/&lt;/span&gt;usr&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;bin&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;consul
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#0a3069"&gt;&amp;#34;Installing docker..&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum install &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;y yum&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;utils device&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;mapper&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;persistent&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;data lvm2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;config&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;manager &lt;span style="color:#0550ae"&gt;--&lt;/span&gt;add&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;repo http&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt;mirrors&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;aliyun&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;com&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;docker&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;ce&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;linux&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;centos&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;docker&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;ce&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;repo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum install &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;y docker&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;ce docker&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;ce&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;cli containerd&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;io
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start docker
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#0a3069"&gt;&amp;#34;success&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SCRIPT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# The most common configuration options are documented and commented below.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# For a complete reference, please see the online documentation at&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# https://docs.vagrantup.com.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Every Vagrant development environment requires a box. You can search for&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# boxes at https://vagrantcloud.com/search.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;box &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;centos/7&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;provision &lt;span style="color:#0a3069"&gt;&amp;#34;shell&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; inline&lt;span style="color:#1f2328"&gt;:&lt;/span&gt; &lt;span style="color:#0550ae"&gt;$&lt;/span&gt;script
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;define &lt;span style="color:#0a3069"&gt;&amp;#34;node1&amp;#34;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt;node1&lt;span style="color:#0550ae"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;hostname &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;node1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;network &lt;span style="color:#0a3069"&gt;&amp;#34;private_network&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; ip&lt;span style="color:#1f2328"&gt;:&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;172.17.17.11&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;define &lt;span style="color:#0a3069"&gt;&amp;#34;node2&amp;#34;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt;node2&lt;span style="color:#0550ae"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node2&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;hostname &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;node2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node2&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;network &lt;span style="color:#0a3069"&gt;&amp;#34;private_network&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; ip&lt;span style="color:#1f2328"&gt;:&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;172.17.17.12&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;define &lt;span style="color:#0a3069"&gt;&amp;#34;node3&amp;#34;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt;node3&lt;span style="color:#0550ae"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node3&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;hostname &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;node3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node3&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;network &lt;span style="color:#0a3069"&gt;&amp;#34;private_network&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; ip&lt;span style="color:#1f2328"&gt;:&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;172.17.17.13&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Disable automatic box update checking. If you disable this, then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# boxes will only be checked for updates when the user runs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# `vagrant box outdated`. This is not recommended.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;box_check_update &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#6a737d"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Create a forwarded port mapping which allows access to a specific port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# within the machine from a port on the host machine. In the example below,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# accessing &amp;#34;localhost:8080&amp;#34; will access port 80 on the guest machine.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# NOTE: This will enable public access to the opened port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# config.vm.network &amp;#34;forwarded_port&amp;#34;, guest: 80, host: 8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Create a forwarded port mapping which allows access to a specific port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# within the machine from a port on the host machine and only allow access&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# via 127.0.0.1 to disable public access&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# config.vm.network &amp;#34;forwarded_port&amp;#34;, guest: 80, host: 8080, host_ip: &amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Create a private network, which allows host-only access to the machine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# using a specific IP.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# config.vm.network &amp;#34;private_network&amp;#34;, ip: &amp;#34;192.168.33.10&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Create a public network, which generally matched to bridged network.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Bridged networks make the machine appear as another physical device on&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# your network.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# config.vm.network &amp;#34;public_network&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Share an additional folder to the guest VM. The first argument is&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# the path on the host to the actual folder. The second argument is&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# the path on the guest to mount the folder. And the optional third&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# argument is a set of non-required options.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# config.vm.synced_folder &amp;#34;../data&amp;#34;, &amp;#34;/vagrant_data&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Provider-specific configuration so you can fine-tune various&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# backing providers for Vagrant. These expose provider-specific options.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Example for VirtualBox:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;vm&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;provider &lt;span style="color:#0a3069"&gt;&amp;#34;virtualbox&amp;#34;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt;vb&lt;span style="color:#0550ae"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# # Display the VirtualBox GUI when booting the machine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# vb.gui = true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# # Customize the amount of memory on the VM:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vb&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;memory &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;1024&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; end
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# View the documentation for the provider you are using for more&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# information on available options.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Enable provisioning with a shell script. Additional provisioners such as&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# documentation for more information about their specific syntax and use.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# config.vm.provision &amp;#34;shell&amp;#34;, inline: &amp;lt;&amp;lt;-SHELL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# apt-get update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# apt-get install -y apache2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;# SHELL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;end
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;为了节省时间我直接下载好了 consul 的可执行文件放到了 vagrant 配置文件同目录下，vagrant 会把当前目录下的文件都复制进虚拟机的 &lt;code&gt;/vagrant&lt;/code&gt; 目录下，还有三个节点的 consul 配置文件。&lt;/p&gt;</description></item></channel></rss>