vagrant配置端口轉發

      網友投稿 924 2022-05-30

      vagrant 提供了三種網絡配置方式:端口轉發(默認)、私有網絡、公有網絡,可以在配置文件 Vagrantfile 進行網絡配置,推薦使用私有網絡。

      端口轉發(forwarded ports)

      1 .定義

      端口轉發指把宿主機的端口映射到虛擬機的某一個端口上,訪問宿主機端口時,請求實際是被轉發到虛擬機上指定端口的。

      注:宿主機指運行虛擬機的物理機。

      2 .優點

      容易實現外網訪問虛擬機

      3 .缺點

      如果端口較少需要映射很容易,但是端口比較多時,就比較麻煩,例如:MySQL,redis,nginx等服務。

      不支持在宿主機使用小于1024的端口來轉發,例如:不能使用SSL的443端口來進行https連接。

      vagrant配置端口轉發

      4 .配置

      在配置文件Vagrantfile下做如下編輯

      Vagrant.configure("2") do |config|

      config.vm.network

      "forwarded_port"(必須) //端口轉發標識

      , guest(必須): //虛擬機端口

      , host(必須): //宿主機端口,值必須大于1024

      ,guest_ip(可選): //虛擬機端口綁定虛擬機ip地址

      ,host_ip(可選): //虛擬機端口綁定宿主機ip

      ,protocol(可選)://指定通信協議,可以使用tcp/udp,默認tcp

      ,auto_correct(可選)://true/false,若配置為true,則每次開啟虛擬機的時候自動檢查是否存在端口沖突

      end

      注:若guest_ip和host_ip兩項配置為空,則局域網下的所有設備都可以訪問該虛擬機。

      示例配置,如下:

      Vagrant.configure("2") do |config|

      config.vm.network "forwarded_port", guest: 80, host: 8080,

      auto_correct: true

      end

      訪問宿主計算機8080端口的請求都轉發到虛擬機的80端口上進行處理。

      補充:

      如果要再添加一個端口轉發

      config.vm.network "forwarded_port", guest: 80, host: 8080

      config.vm.network "forwarded_port", guest: 8181, host: 8181

      添加完之后執行vagrant reload命令重新加載配置文件即可,so easy~

      私有網絡(private networks)

      1 .定義

      私有網絡是指只有宿主機可以訪問虛擬機,如果多個虛擬機設定在同一個網段也可以互相訪問。

      2 .優點

      安全,只有自己可以訪問

      3 .缺點

      團隊成員不能訪問你的虛擬機

      4 .配置

      使用私有網絡的最簡單方法是允許通過DHCP分配IP。

      Vagrant.configure("2") do |config|

      config.vm.network "private_network", type: "dhcp"

      end

      這將自動從保留的地址空間分配IP地址。 可以通過使用 vagrant ssh 將 SSH 連接到計算機并使用適當的命令行工具查找 IP(例如ifconfig)來確定 IP 地址。

      還可以為計算機指定靜態IP地址。 可以使用已知的靜態 IP 訪問 Vagrant 受管計算機。 配置如下:

      config.vm.network

      "private_network"http://必須 ,私有網絡標識

      , ip: "192.168.33.10"

      注:私有ip可以自行指定

      如果您想自己手動配置網絡接口,可以通過指定auto_config來禁用Vagrant的自動配置功能:

      Vagrant.configure("2") do |config|

      config.vm.network "private_network", ip: "192.168.50.4",

      auto_config: false

      end

      公有網絡(public networks)

      1 .定義

      公有網絡是指設置虛擬機和宿主機有相同的網絡配置。

      2 .優點

      方便團隊協作,別人可以訪問你的虛擬機

      3 .缺點

      只有在有網絡的情況下才能訪問虛擬機

      4 .配置

      Vagrant.configure("2") do |config|

      config.vm.network

      "public_network" //必須 公有網絡標識

      ,ip(string): //可選,配置靜態ip

      ,bridge(string/array): "en1: Wi-Fi (AirPort)"http://可選,設置橋接的網卡

      end

      四、分布式環境

      我們可以在 Vagrantfile 里使用 config.vm.define 方法定義多個主機:

      Vagrant.configure("2") do |config|

      config.vm.provision "shell", inline: "echo Hello"

      config.vm.define "web" do |web|

      web.vm.box = "apache"

      end

      config.vm.define "db" do |db|

      db.vm.box = "mysql"

      end

      end

      如上,config.vm.define 采用定義一個變量的塊。 此變量(如上面的web)與config 變量完全相同,只是內部變量的任何配置僅適用于正在定義的計算機。 因此,web 上的任何配置都只會影響 web 計算機。也可以繼續使用 config 對象。 config 對象在特定于機器的配置之前加載和合并。使用這些范圍時,配置程序等事務的執行順序變得很重要。 Vagrant 按照 Vagrantfile 中列出的順序強制執行從外到內的排序。 例如,使用下面的 Vagrantfile,輸出順序為 "A", "C", "B"

      Vagrant.configure("2") do |config|

      config.vm.provision :shell, inline: 'echo A'

      config.vm.define :testing do |test|

      test.vm.provision :shell, inline: 'echo B'

      end

      config.vm.provision :shell, inline: 'echo C'

      end

      當在 Vagrantfile 中定義了多臺計算機時,各種 vagrant 命令的使用會略有變化。

      僅針對單個機器有意義的命令(例如 vagrant ssh)現在需要控制機器的名稱。例如上面的例子,需要使用 vagrant ssh web 或 vagrant ssh db。

      默認情況下,其他命令(例如 vagrant up)在每臺機器上運行。因此,如果vagrant up ,Vagrant 會啟動 web 和 db 機器。也可以選擇具體啟動 vagrant up web 或 vagrant up db。此外,也可以指定正則表達式以僅匹配某些計算機。

      另外,可以使用自動啟動設置允許告知 Vagrant 不啟動特定計算機。 例:

      config.vm.define "web"

      config.vm.define "db"

      config.vm.define "db_follower", autostart: false

      當使用上述設置運行 vagrant 時,Vagrant 將自動啟動 "web" 和 "db" 機器,但不會啟動 "db_follower" 機器。 可以通過運行 vagrant up db_follower 來手動強制 "db_follower" 計算機啟動。

      可以指定主計算機。 主計算機將是未指定分布式環境中的特定計算機時使用的默認計算機。要指定默認計算機,只需在定義時將其標記為主計算機。 只能指定一臺主機。

      config.vm.define "web", primary: true do |web|

      # ...

      end

      Push

      從版本1.7開始,Vagrant 能夠將與 Vagrantfile 相同的目錄中的應用程序代碼部署或“推送”到遠程數據庫(如FTP服務器或HashiCorp的Atlas)。

      推送的定義在應用程序的 Vagrantfile 中定義,并使用 vagrant push 子命令調用。 與 Vagrant 的其他組件非常相似,每個 Vagrant Push 插件都有自己的配置選項。 有關更多信息,請參閱Vagrant Push插件的文檔。 以下是Vagrantfile中的Vagrant Push配置部分示例:

      config.push.define "ftp" do |push|

      push.host = "ftp.company.com"

      push.username = "..."

      # ...

      end

      當應用程序準備好部署到FTP服務器時,只需運行一個命令:

      vagrant push

      與 Vagrant Providers 非常相似,Vagrant Push也支持多個后端聲明。 考慮staging 和 QA 環境的常見情況:

      config.push.define "staging", strategy: "ftp" do |push|

      # ...

      end

      config.push.define "qa", strategy: "ftp" do |push|

      # ...

      end

      在這種情況下,用戶必須將 Vagrant Push 的名稱傳遞給子命令:

      vagrant push staging

      參考:

      https://www.vagrantup.com/docs/

      https://jimmysong.io/posts/vagrant-intro/

      https://www.jianshu.com/p/050b0a4468c4

      網絡 虛擬化

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:通過模板批量創建zabbix聚合圖形
      下一篇:PHP與RBAC設計思路講解與源碼
      相關文章
      亚洲国产精品午夜电影| 亚洲人成电影亚洲人成9999网| 亚洲免费在线观看视频| 亚洲成人免费在线| 亚洲va中文字幕无码久久 | 亚洲色大成网站www永久| 精品国产_亚洲人成在线高清| 91麻豆国产自产在线观看亚洲| 亚洲一区二区三区免费| 亚洲欧洲精品成人久久奇米网| 亚洲精品国产日韩无码AV永久免费网 | 国产精品亚洲视频| 亚洲一区二区视频在线观看| 久久亚洲AV永久无码精品| 国产亚洲精品自在线观看| 亚洲熟妇无码另类久久久| 亚洲欧洲成人精品香蕉网| 精品国产综合成人亚洲区| 无码久久精品国产亚洲Av影片| 久久精品国产精品亚洲艾草网| 久久精品亚洲中文字幕无码网站| 亚洲AV无码一区东京热久久| 亚洲一二成人精品区| 亚洲综合免费视频| 亚洲一级毛片在线播放| 亚洲国产乱码最新视频| 亚洲日韩国产欧美一区二区三区| 亚洲人成网站在线在线观看| 亚洲第一街区偷拍街拍| 亚洲äv永久无码精品天堂久久 | 色九月亚洲综合网| 亚洲精品色婷婷在线影院| 亚洲精品无码日韩国产不卡?V | 亚洲日本va午夜中文字幕久久| 国产综合亚洲专区在线| 亚洲国产一区在线| 亚洲国产精品久久人人爱| 国产 亚洲 中文在线 字幕| 亚洲aⅴ无码专区在线观看春色 | 亚洲成AV人片久久| 亚洲欧美日韩中文字幕一区二区三区|