美文网首页
用CentOS 7自制Vagrant Box文件

用CentOS 7自制Vagrant Box文件

作者: Stevent | 来源:发表于2019-03-27 09:24 被阅读0次

    写在前面

    利用vagrant保持开发生产环境一致是一个很好的方法,不过vagrant官网上的box文件下载是真的很慢,因此,这里教大家如何自制box文件。
    这篇文章你会接触到:

    • vagrant使用基础
    • 如何定制vagrantfile
    • 如何设置CentOS 7
    • Virtualbox使用基础
    • 如何利用vagrant打包CentOS 7成box文件
      学习前提,已经会使用Virtualbox,并且安装了CentOS 7,如果不会可以看我上一篇文章: VirtualBox下安装CentOS7系统
      另外,你要安装好vagrant, 官网
      制作环境:
    • window 10
    • vagrant 2.2.2
    • virtualbox 5.2.8

    一、 添加新用户

    启动创建好的CentOS 7新系统,输入帐号密码:



    添加用户,按照提示输入两次密码,用户:vagrant, 密码也是:vagrant, 注意,root用户的密码也要是vagrant, 然后再设置用户权限:

    useradd vagrant #添加vagrant用户
    passwd vagrant #设置vagrant密码
    groupadd admin #添加admin用户组
    usermod -G admin vagrant #添加vagrant进admin用户组
    
    添加用户
    设置用户组

    二、设置sudoers

    添加vagrant用户进入/etc/sudoers,不用密码登录

    echo 'vagrant ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers # 追加信息到/etc/sudoers
    

    三、更改网络配置,设置开机启动

    将ifcfg-enp0s3的ONBOOT=no,改为ONBOOT=yes

    vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 
    

    其实,如果是按照我上一篇文章:VirtualBox下安装CentOS7系统 安装的系统,这一步是不用配置的,打开文件可以看到onboot设置已经是yse了。
    ping www.baidu.com #测试网络是否正常
    

    四、关闭防火墙

    centos7中默认用的是firewalld做防火墙,开发的box可以直接禁用掉firewalld

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    

    五、安装必备软件

    当然是个人喜好,不过这些都很有用,最好装上:

    yum install -y wget
    

    六、添加vagrant's public key

    mkdir -m 0700 -p /home/vagrant/.ssh
    curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub >> /home/vagrant/.ssh/authorized_keys
    chmod 0600 /home/vagrant/.ssh/authorized_keys
    

    七、安装 virtualBox guest addition

    由于我们安装的系统是无界面的,因此只能通过命令行安装:

    yum clean all # 清空yum缓存并强制重读任何改变过的配置文件
    yum groupinstall "Development tools" # 安装开发工具,这个工具会安装一些常用的开发编译工具, 后面要用,如 gcc,git
    wget http://download.virtualbox.org/virtualbox/5.2.8/VBoxGuestAdditions_5.2.8.iso # 这里的5.2.8对应的是virtualbox的版本号,可以根据自己的版本号更改
    sudo mkdir /media/VBoxGuestAdditions
    sudo mount -o loop,ro VBoxGuestAdditions_5.2.8.iso /media/VBoxGuestAdditions
    sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
    rm VBoxGuestAdditions_5.2.8.iso
    sudo umount /media/VBoxGuestAdditions
    sudo rmdir /media/VBoxGuestAdditions
    

    八、清理操作

    清除刚刚做的操作留下的一些内容,保持系统干净

    yum clean all # 清除yum操作缓存
    rm -rf /tmp/* # 清除tmp下的零时文件
    rm -f /var/log/wtmp /var/log/btmp # 清除日志
    history -c # 清除历史
    shutdown -h now # 立即关机
    

    九、 制作Vagrant Box

    在宿主机上cmd输入以下内容:

    vagrant package --output centos-7.box --base CentOS7_1
    

    --output后面是打包成box的文件名,--base是virtualbox里的centos名称


    打包成功

    十、测试

    创建新的目录,用vagrant启动centos。

    mkdir centos-7 # 创建目录
    cd centos-7 # 进入目录
    vagrant init centos-7 # 创建新的环境
    vagrant box add centos-7 C:/Users/steven/centos-7.box # 添加新的box
    

    这里目录里会出现一个vagrantfile, 修改文件:

    Vagrant.configure("2") do |config|
    
      config.vm.box = "centos-7" # 虚拟机上出现的名字
      config.vm.hostname = "WEB"
      config.ssh.username = "vagrant"
      config.ssh.password = "vagrant"
      config.ssh.insert_key = false
      config.ssh.private_key_path = ["~/.ssh/id_rsa"]
      config.vm.provision "file", source: "~/.ssh/id_rsa.pub", destination: "~/.ssh/authorized_keys"
      config.vm.synced_folder ".", "/vagrant", disabled: true
    
      config.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--name", "centos7-learn", "--memory", "1536"]
      end
    end
    

    简单配置好,可以启动了.

    # 启动虚拟机,第一次启动会比较久
    vagrant up 
    # 执行vagrantfile里的命令,把本地的id_ras.pub传到虚拟机里,
    # 不用这一步,没办法使用vagrant ssh 直接登录,要输入密码,执行了这一步,就可以免密登录
    vagrant provision 
    # 登录虚拟机
    vagrant ssh
    

    至此,成功进入系统,配置成功。虽然已经尽量把配置过程中的坑写出来,但是实际配置过程中应该还会有问题出现,大家有什么疑问,欢迎来咨询。

    相关文章

      网友评论

          本文标题:用CentOS 7自制Vagrant Box文件

          本文链接:https://www.haomeiwen.com/subject/oxpgvqtx.html