Vagrant系列(二)----Vagrant的配置文件Vagrantfile詳解

      網(wǎng)友投稿 955 2025-04-02

      一、簡(jiǎn)介

      在我們的工作目錄下有一個(gè)vagrantfile文件,里面包含有大量的配置信息,通過(guò)它可以定義虛擬機(jī)的各種配置,如網(wǎng)絡(luò)、內(nèi)存、主機(jī)名等,主要包括三個(gè)方面的配置,虛擬機(jī)的配置、SSH配置、vagrant的一些基礎(chǔ)配置。Vagrant是使用Ruby開(kāi)發(fā)的,所以它的配置語(yǔ)法也是Ruby的,每個(gè)項(xiàng)目都需要有一個(gè)Vagrantfile,在執(zhí)行vagrant init的目錄下可以找到該文件

      二、Vagrantfile文件

      # -*- mode: ruby -*-

      # vi: set ft=ruby :

      # All Vagrant configuration is done below. The "2" in Vagrant.configure

      # configures the configuration version (we support older styles for

      # backwards compatibility). Please don't change it unless you know what

      # you're doing.

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

      # The most common configuration options are documented and commented below.

      # For a complete reference, please see the online documentation at

      # https://docs.vagrantup.com.

      # Every Vagrant development environment requires a box. You can search for

      # boxes at https://atlas.hashicorp.com/search.

      config.vm.box = "centos7"

      # Disable automatic box update checking. If you disable this, then

      # boxes will only be checked for updates when the user runs

      # `vagrant box outdated`. This is not recommended.

      # config.vm.box_check_update = false

      # Create a forwarded port mapping which allows access to a specific port

      # within the machine from a port on the host machine. In the example below,

      # accessing "localhost:8080" will access port 80 on the guest machine.

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

      # Create a private network, which allows host-only access to the machine

      # using a specific IP.

      # config.vm.network "private_network", ip: "192.168.33.10"

      # Create a public network, which generally matched to bridged network.

      # Bridged networks make the machine appear as another physical device on

      # your network.

      # config.vm.network "public_network"

      # Share an additional folder to the guest VM. The first argument is

      # the path on the host to the actual folder. The second argument is

      # the path on the guest to mount the folder. And the optional third

      # argument is a set of non-required options.

      # config.vm.synced_folder "../data", "/vagrant_data"

      # Provider-specific configuration so you can fine-tune various

      # backing providers for Vagrant. These expose provider-specific options.

      # Example for VirtualBox:

      #

      # config.vm.provider "virtualbox" do |vb|

      # # Display the VirtualBox GUI when booting the machine

      # vb.gui = true

      #

      # # Customize the amount of memory on the VM:

      # vb.memory = "1024"

      # end

      #

      # View the documentation for the provider you are using for more

      # information on available options.

      # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies

      # such as FTP and Heroku are also available. See the documentation at

      # https://docs.vagrantup.com/v2/push/atlas.html for more information.

      # config.push.define "atlas" do |push|

      # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"

      # end

      # Enable provisioning with a shell script. Additional provisioners such as

      # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the

      # documentation for more information about their specific syntax and use.

      # config.vm.provision "shell", inline: <<-SHELL

      # apt-get update

      # apt-get install -y apache2

      # SHELL

      end

      可發(fā)現(xiàn)其中就兩行配置:

      Vagrant系列(二)----Vagrant的配置文件Vagrantfile詳解

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

      config.vm.box = "centos7"

      這兩行就是我們?cè)趘agrant init中后面所指定的參數(shù)。由此可以看出,vagrant init只是幫我們生成了配置文件而已,換句話說(shuō),如果我們寫好了Vagrantfile,就不需要vagrant init,只需將準(zhǔn)備好的配置文件放入到所需目錄中,然后直接執(zhí)行vagrant up即可。

      還有很多注釋掉的配置,那些都是一些常用的配置,包括網(wǎng)卡設(shè)置、IP地址、綁定目錄,甚至可以指定內(nèi)存大小、CPU個(gè)數(shù)、是否啟動(dòng)界面等等。如果需要,可以根據(jù)注釋文本進(jìn)行配置。

      三、?配置詳解

      下面是一些常用的配置:

      config.vm.hostname:配置虛擬機(jī)主機(jī)名

      config.vm.network:這是配置虛擬機(jī)網(wǎng)絡(luò),由于比較復(fù)雜,我們其后單獨(dú)討論

      config.vm.synced_folder:除了默認(rèn)的目錄綁定外,還可以手動(dòng)指定綁定

      config.ssh.username:默認(rèn)的用戶是vagrant,從官方下載的box往往使用的是這個(gè)用戶名。如果是自定制的box,所使用的用戶名可能會(huì)有所不同,通過(guò)這個(gè)配置設(shè)定所用的用戶名。

      config.vm.provision:我們可以通過(guò)這個(gè)配置在虛擬機(jī)第一次啟動(dòng)的時(shí)候進(jìn)行一些安裝配置

      需要注意的是,Vagrantfile文件只會(huì)在第一次執(zhí)行vagrant up時(shí)調(diào)用執(zhí)行,其后如果不明確使用vagrant reload進(jìn)行重新加載,否則不會(huì)被強(qiáng)制重新加載。

      3.1、box設(shè)置

      config.vm.box = "centos7"

      該名稱是再使用 vagrant init 中后面跟的名字。

      3.2、hostname設(shè)置

      config.vm.hostname = "node1"

      設(shè)置hostname非常重要,因?yàn)楫?dāng)我們有很多臺(tái)虛擬服務(wù)器的時(shí)候,都是依靠hostname來(lái)做識(shí)別的。比如,我安裝了centos1,centos2 兩臺(tái)虛擬機(jī),再啟動(dòng)時(shí),我可以通過(guò)vagrant up centos1來(lái)指定只啟動(dòng)哪一臺(tái)。

      3.3、虛擬機(jī)網(wǎng)絡(luò)設(shè)置

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

      //Host-only模式

      config.vm.network "public_network", ip: "10.1.2.61"

      //Bridge模式

      Vagrant的網(wǎng)絡(luò)連接方式有三種:

      ▲NAT : 缺省創(chuàng)建,用于讓vm可以通過(guò)host轉(zhuǎn)發(fā)訪問(wèn)局域網(wǎng)甚至互聯(lián)網(wǎng)。

      ▲host-only : 只有主機(jī)可以訪問(wèn)vm,其他機(jī)器無(wú)法訪問(wèn)它。

      ▲bridge : 此模式下vm就像局域網(wǎng)中的一臺(tái)獨(dú)立的機(jī)器,可以被其他機(jī)器訪問(wèn)。

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

      #配置當(dāng)前vm的host-only網(wǎng)絡(luò)的IP地址為192.168.33.10

      host-only 模式的IP可以不指定,而是采用dhcp自動(dòng)生成的方式,如 :

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

      #config.vm.network "public_network", ip: "192.168.0.17"

      #創(chuàng)建一個(gè)bridge橋接網(wǎng)絡(luò),指定IP

      #config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"

      #創(chuàng)建一個(gè)bridge橋接網(wǎng)絡(luò),指定橋接適配器

      config.vm.network "public_network"

      #創(chuàng)建一個(gè)bridge橋接網(wǎng)絡(luò),不指定橋接適配器

      3.4、同步目錄設(shè)置

      config.vm.synced_folder "D:/xxx/code", "/home/www/"

      前面的路徑(D:/xxx/code)是本機(jī)代碼的地址,后面的地址就是虛擬機(jī)的目錄。虛擬機(jī)的/vagrant目錄默認(rèn)掛載宿主機(jī)的開(kāi)發(fā)目錄(可以在進(jìn)入虛擬機(jī)機(jī)后,使用df -h 查看),這是在虛擬機(jī)啟動(dòng)時(shí)自動(dòng)掛載的。我們還可以設(shè)置額外的共享目錄,上面這個(gè)設(shè)定,第一個(gè)參數(shù)是宿主機(jī)的目錄,第二個(gè)參數(shù)是虛擬機(jī)掛載的目錄。

      3.5、端口轉(zhuǎn)發(fā)設(shè)置

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

      上面的配置把宿主機(jī)上的8080端口映射到客戶虛擬機(jī)的80端口,例如你在虛擬機(jī)上使用nginx跑了一個(gè)Go應(yīng)用,那么你在host上的瀏覽器中打開(kāi)http://localhost:8080時(shí),Vagrant就會(huì)把這個(gè)請(qǐng)求轉(zhuǎn)發(fā)到虛擬機(jī)里跑在80端口的nginx服務(wù)上。不建議使用該方法,因?yàn)樯婕岸丝谡加脝?wèn)題,常常導(dǎo)致應(yīng)用之間不能正常通信,建議使用Host-only和Bridge方式進(jìn)行設(shè)置。

      guest和host是必須的,還有幾個(gè)可選屬性:

      ●guest_ip:字符串,vm指定綁定的Ip,缺省為0.0.0.0

      ●host_ip:字符串,host指定綁定的Ip,缺省為0.0.0.0

      ●protocol:字符串,可選TCP或UDP,缺省為TCP

      3.6、定義vm的configure配置節(jié)點(diǎn)(一個(gè)節(jié)點(diǎn)就是一個(gè)虛擬機(jī))

      config.vm.define :mysql do |mysql_config|

      # ...

      end

      表示在config配置中,定義一個(gè)名為mysql的vm配置,該節(jié)點(diǎn)下的配置信息命名為mysql_config; 如果該Vagrantfile配置文件只定義了一個(gè)vm,這個(gè)配置節(jié)點(diǎn)層次可忽略。

      還可以在一個(gè)Vagrantfile文件里建立多個(gè)虛擬機(jī),一般情況下,你可以用多主機(jī)功能完成以下任務(wù):

      ▲ 分布式的服務(wù),例如網(wǎng)站服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器

      ▲ 分發(fā)系統(tǒng)

      ▲ 測(cè)試接口

      ▲ 災(zāi)難測(cè)試

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

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

      web.vm.box = "apache"

      end

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

      db.vm.box = "mysql"

      end

      end

      當(dāng)定義了多主機(jī)之后,在使用vagrant命令的時(shí)候,就需要加上主機(jī)名,例如vagrant ssh web;也有一些命令,如果你不指定特定的主機(jī),那么將會(huì)對(duì)所有的主機(jī)起作用,比如vagrant up;你也可以使用表達(dá)式指定特定的主機(jī)名,例如vagrant up /follower[0-9]/。

      3.7、通用數(shù)據(jù) 設(shè)置一些基礎(chǔ)數(shù)據(jù),供配置信息中調(diào)用。

      app_servers = {

      :service1 => '192.168.33.20',

      :service2 => '192.168.33.21'

      }

      這里是定義一個(gè)hashmap,以key-value方式來(lái)存儲(chǔ)vm主機(jī)名和ip地址。

      3.8、配置信息

      ENV["LC_ALL"] = "en_US.UTF-8"

      #指定vm的語(yǔ)言環(huán)境,缺省地,會(huì)繼承host的locale配置

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

      # ...

      end

      參數(shù)2,表示的是當(dāng)前配置文件使用的vagrant configure版本號(hào)為Vagrant 1.1+,如果取值為1,表示為Vagrant 1.0.x Vagrantfiles,舊版本暫不考慮,記住就寫2即可。

      do … end 為配置的開(kāi)始結(jié)束符,所有配置信息都寫在這兩段代碼之間。 config是為當(dāng)前配置命名,你可以指定任意名稱,如myvmconfig,在后面引用的時(shí)候,改為自己的名字即可。

      3.9、vm提供者配置

      config.vm.provider :virtualbox do |vb|

      # ...

      end

      ▲vm provider通用配置

      虛機(jī)容器提供者配置,對(duì)于不同的provider,特有的一些配置,此處配置信息是針對(duì)virtualbox定義一個(gè)提供者,命名為vb,跟前面一樣,這個(gè)名字隨意取,只要節(jié)點(diǎn)內(nèi)部調(diào)用一致即可。

      配置信息又分為通用配置和個(gè)性化配置,通用配置對(duì)于不同provider是通用的,常用的通用配置如下:

      vb.name = "centos7"

      #指定vm-name,也就是virtualbox管理控制臺(tái)中的虛機(jī)名稱。如果不指定該選項(xiàng)會(huì)生成一個(gè)隨機(jī)的名字,不容易區(qū)分。

      vb.gui = true

      # vagrant up啟動(dòng)時(shí),是否自動(dòng)打開(kāi)virtual box的窗口,缺省為false

      vb.memory = "1024"

      #指定vm內(nèi)存,單位為MB

      vb.cpus = 2

      #設(shè)置CPU個(gè)數(shù)

      ▲vm provider個(gè)性化配置(virtualbox)

      上面的provider配置是通用的配置,針對(duì)不同的虛擬機(jī),還有一些的個(gè)性的配置,通過(guò)vb.customize配置來(lái)定制。

      對(duì)virtual box的個(gè)性化配置,可以參考:VBoxManage modifyvm 命令的使用方法。詳細(xì)的功能接口和使用說(shuō)明,可以參考virtualbox官方文檔。

      #修改vb.name的值

      v.customize ["modifyvm", :id, "--name", "mfsmaster2"]

      #如修改顯存,缺省為8M,如果啟動(dòng)桌面,至少需要10M,如下修改為16M:

      vb.customize ["modifyvm", :id, "--vram", "16"]

      #調(diào)整虛擬機(jī)的內(nèi)存

      vb.customize ["modifyvm", :id, "--memory", "1024"]

      #指定虛擬CPU個(gè)數(shù)

      vb.customize ["modifyvm", :id, "--cpus", "2"]

      #增加光驅(qū):

      vb.customize ["storageattach",:id,"--storagectl", "IDE Controller","--port","0","--device","0","--type","dvddrive","--medium","/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso"]

      #注:meduim參數(shù)不可以為空,如果只掛載驅(qū)動(dòng)器不掛在iso,指定為“emptydrive”。如果要卸載光驅(qū),medium傳入none即可。

      #從這個(gè)指令可以看出,customize方法傳入一個(gè)json數(shù)組,按照順序傳入?yún)?shù)即可。

      #json數(shù)組傳入多個(gè)參數(shù)

      v.customize ["modifyvm", :id, "--name", “mfsserver3", "--memory", “2048"]

      4.0、一組相同配置的vm

      前面配置了一組vm的hash map,定義一組vm時(shí),使用如下節(jié)點(diǎn)遍歷。

      #遍歷app_servers map,將key和value分別賦值給app_server_name和app_server_ip

      app_servers.each do |app_server_name, app_server_ip|

      #針對(duì)每一個(gè)app_server_name,來(lái)配置config.vm.define配置節(jié)點(diǎn),命名為app_config

      config.vm.define app_server_name do |app_config|

      # 此處配置,參考config.vm.define

      end

      end

      如果不想定義app_servers,下面也是一種方案:

      (1..3).each do |i|

      config.vm.define "app-#{i}" do |node|

      app_config.vm.hostname = "app-#{i}.vagrant.internal"

      app_config.vm.provider "virtualbox" do |vb|

      vb.name = app-#{i}

      end

      end

      end

      4.1、provision任務(wù)

      你可以編寫一些命令,讓vagrant在啟動(dòng)虛擬機(jī)的時(shí)候自動(dòng)執(zhí)行,這樣你就可以省去手動(dòng)配置環(huán)境的時(shí)間了。

      ▲ 腳本何時(shí)會(huì)被執(zhí)行

      ●?第一次執(zhí)行vagrant up命令

      ●?執(zhí)行vagrant provision命令

      ●?執(zhí)行vagrant reload --provision或者vagrant up --provision命令

      ●?你也可以在啟動(dòng)虛擬機(jī)的時(shí)候添加--no-provision參數(shù)以阻止腳本被執(zhí)行

      ▲?provision任務(wù)是什么?

      provision任務(wù)是預(yù)先設(shè)置的一些操作指令,格式:

      config.vm.provision 命令字 json格式參數(shù)

      config.vm.provion 命令字 do |s|

      s.參數(shù)名 = 參數(shù)值

      end

      每一個(gè) config.vm.provision 命令字 代碼段,我們稱之為一個(gè)provisioner。

      根據(jù)任務(wù)操作的對(duì)象,provisioner可以分為:

      ● Shell

      ●?File

      ●?Ansible

      ●?CFEngine

      ●?Chef

      ●?Docker

      ●?Puppet

      ●?Salt

      根據(jù)vagrantfile的層次,分為:

      configure級(jí):它定義在 Vagrant.configure("2") 的下一層次,形如: config.vm.provision ...

      vm級(jí):它定義在 config.vm.define "web" do |web| 的下一層次,web.vm.provision ...

      執(zhí)行的順序是先執(zhí)行configure級(jí)任務(wù),再執(zhí)行vm級(jí)任務(wù),即便configure級(jí)任務(wù)在vm定義的下面才定義。例如:

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

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

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

      web.vm.provision "shell", inline: "echo 2"

      end

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

      end

      輸出結(jié)果:

      ==> default: "1"

      ==> default: "2"

      ==> default: "3"

      ▲?如何使用

      ● 單行腳本

      helloword只是一個(gè)開(kāi)始,對(duì)于inline模式,命令只能在寫在一行中。

      單行腳本使用的基本格式:

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

      shell命令的參數(shù)還可以寫入do ... end代碼塊中,如下:

      config.vm.provision "shell" do |s|

      s.inline = "echo hello provision."

      end

      ●?內(nèi)聯(lián)腳本

      如果要執(zhí)行腳本較多,可以在Vagrantfile中指定內(nèi)聯(lián)腳本,在Vagrant.configure節(jié)點(diǎn)外面,寫入命名內(nèi)聯(lián)腳本:

      $script = <

      echo I am provisioning...

      echo hello provision.

      SCRIPT

      然后,inline調(diào)用如下:

      config.vm.provision "shell", inline: $script

      ● 外部腳本

      也可以把代碼寫入代碼文件,并保存在一個(gè)shell里,進(jìn)行調(diào)用:

      config.vm.provision "shell", path: "script.sh"

      script.sh的內(nèi)容:

      echo hello provision.

      注意:

      如果使用provision來(lái)安裝程序,如yum install?lrzsz會(huì)出現(xiàn)如下錯(cuò)誤:

      E:\OS_WORK\Node2>vagrant reload --provision

      ==> test: Attempting graceful shutdown of VM...

      ==> test: Clearing any previously set forwarded ports...

      ==> test: Clearing any previously set network interfaces...

      ==> test: Preparing network interfaces based on configuration...

      test: Adapter 1: nat

      test: Adapter 2: hostonly

      ==> test: Forwarding ports...

      test: 22 (guest) => 2222 (host) (adapter 1)

      ==> test: Running 'pre-boot' VM customizations...

      ==> test: Booting VM...

      ==> test: Waiting for machine to boot. This may take a few minutes...

      test: SSH address: 127.0.0.1:2222

      test: SSH username: vagrant

      test: SSH auth method: private key

      ==> test: Machine booted and ready!

      [test] GuestAdditions 5.1.24 running --- OK.

      ==> test: Checking for guest additions in VM...

      ==> test: Setting hostname...

      ==> test: Configuring and enabling network interfaces...

      ==> test: Mounting shared folders...

      test: /vagrant => E:/OS_WORK/Node2

      ==> test: Running provisioner: shell...

      test: Running: inline script

      ==> test: Loaded plugins: fastestmirror

      ==> test: Loading mirror speeds from cached hostfile

      ==> test: * base: mirrors.shu.edu.cn

      ==> test: * extras: mirrors.shu.edu.cn

      ==> test: * updates: mirrors.shu.edu.cn

      ==> test: No package y available.

      ==> test: Resolving Dependencies

      ==> test: --> Running transaction check

      ==> test: ---> Package lrzsz.x86_64 0:0.12.20-36.el7 will be installed

      ==> test: --> Finished Dependency Resolution

      ==> test:

      ==> test: Dependencies Resolved

      ==> test:

      ==> test: ================================================================================

      ==> test: Package Arch Version Repository Size

      ==> test: ================================================================================

      ==> test: Installing:

      ==> test: lrzsz x86_64 0.12.20-36.el7 base 78 k

      ==> test:

      ==> test: Transaction Summary

      ==> test: ================================================================================

      ==> test: Install 1 Package

      ==> test:

      ==> test: Total download size: 78 k

      ==> test: Installed size: 181 k

      ==> test: Is this ok [y/d/N]: Is this ok [y/d/N]: Exiting on user command

      ==> test: Your transaction was saved, rerun it with:

      ==> test: yum load-transaction /tmp/yum_save_tx.2018-05-13.04-28.1BMR07.yumtx

      The SSH command responded with a non-zero exit status. Vagrant

      assumes that this means the command failed. The output for this command

      should be in the log above. Please read the output to determine what

      went wrong.

      使用yum install -y就行了。

      修改完Vagrantfile的配置后,記得要重啟虛擬機(jī),才能使用虛擬機(jī)更新后的配置。

      vagrant reload

      原文:https://blog.csdn.net/u011781521/article/details/80291765

      Docker 虛擬化

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:更改界面(word怎么更改界面)
      下一篇:word文檔怎樣畫(huà)角(word里怎么畫(huà)角)
      相關(guān)文章
      亚洲国产精品综合久久一线| 亚洲一区二区三区影院| 亚洲色在线无码国产精品不卡| 亚洲国产精品国自产拍AV| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 亚洲深深色噜噜狠狠网站| 亚洲精品韩国美女在线| 亚洲精品私拍国产福利在线| 久久精品国产亚洲av麻| 国产亚洲精品无码成人| 久久九九亚洲精品| 亚洲女初尝黑人巨高清| 亚洲国产精品无码AAA片| 亚洲va久久久噜噜噜久久狠狠| 久久亚洲精品视频| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲成av人片天堂网| 亚洲视频在线播放| 亚洲在成人网在线看| 亚洲国产成人久久三区| 亚洲字幕AV一区二区三区四区| 亚洲一久久久久久久久| 亚洲a∨国产av综合av下载| 春暖花开亚洲性无区一区二区 | 日韩国产欧美亚洲v片 | 亚洲熟妇无码八V在线播放| 亚洲卡一卡二卡乱码新区| 男人天堂2018亚洲男人天堂| 亚洲日产乱码一二三区别| 在线观看亚洲电影| 亚洲综合图色40p| 久久久久无码精品亚洲日韩| 亚洲精品韩国美女在线| 亚洲自国产拍揄拍| 亚洲aⅴ无码专区在线观看| 亚洲一级片内射网站在线观看| 亚洲精品国产精品乱码在线观看| 久久久久久亚洲精品中文字幕| 亚洲毛片基地日韩毛片基地| 一本色道久久综合亚洲精品蜜桃冫 | 亚洲乱码一二三四区麻豆|