Vagrant-up 轻松
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--RYQ1u4td--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/i/p2jozxsosstu1w1ype7r.jpg)
什么和为什么
Vagrant 是一个开源工具,允许您通过易于使用的命令界面创建、配置和管理虚拟机的boxes。它是一种用于构建完整的开发环境的工具,重点是自动化和简单的工作流程。
它用于软件开发,以确保所有团队成员都使用相同的 configuration 进行构建。 Vagrant 不仅可以共享环境,还可以共享代码。这允许一个开发人员的代码在另一个开发人员的系统上工作,从而使协作和协作开发成为可能。使用 Vagrant,您可以通过一组可重用的配置文件 on-the-fly 创建虚拟机。开发人员可以跟踪环境配置更改并共享他们的环境,以便其他人可以启动相同的环境。
安装
- 从以下位置下载最新版本的 Vagrant:
https://www.vagrantup.com/downloads.html
- 下载最新版VirtualBox:
https://www.virtualbox.org/wiki/Downloads
安装并重新启动您的 PC。确认它们已正确设置:
Vagrant -v
进入全屏模式 退出全屏模式
示例
跑:
Vagrant init generic/alpine310
Vagrant up
进入全屏模式 退出全屏模式
流浪者
流浪箱
Vagrant 设置中的基本单元称为“box”或“Vagrantbox”。这是一个完整的、独立的操作系统环境映像。它是基本操作系统映像的克隆。使用克隆可加快启动和配置过程。
添加一个 VagrantBox:
您可以使用以下命令添加一个框:
vagrant box add ubuntu/trusty64
进入全屏模式 退出全屏模式
这会下载盒子并将其本地存储在您的机器中。
要查看所有操作系统框,请使用:
Vagrant box list
进入全屏模式 退出全屏模式
要使用盒子,您需要配置 Vagrantfile 并将其指向盒子。确保您位于所需的文件夹中。初始化流浪者:
Vagrant init trusty64
进入全屏模式 退出全屏模式
将在目录中创建一个“Vagrant”文件。使用以下命令打开它:
sudo nano vagrantfile
进入全屏模式 退出全屏模式
打开 Vagrantfile 后,找到“config.vm.box”字符串并将其更改为“ubuntu/trusty64”:
config.vm.box = "ubuntu/trusty64"
进入全屏模式 退出全屏模式
要移除 Vagrant Box:
vagrant box remove ubuntu/trusty64
进入全屏模式 退出全屏模式
VagrantFile 解密
Vagrantfile 是 Vagrant 用来指定 VagrantBox 配置的文件。这是一个 Ruby 脚本,但不需要 Ruby 知识即可创建或理解它。请注意,VagrantFile 没有扩展名。
Vagrantfile 的主要功能是描述项目所需的机器类型,以及如何配置和配置这些机器。之所以调用 Vagrantfiles,是因为该文件的实际文字文件名是 Vagrantfile。
这是一个示例 vagrantfile(您可以通过执行“Vagrant Init”来生成一个):
Vagrant.configure("2") do |config|
config.vm.box = "trusty64"
config.vm.box_check_update = false
# **NETWORK SETTING**
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "public_network"
# **SHARED FOLDER**
config.vm.synced_folder "../data", "/vagrant_data"
# **PROVIDER-SPECIFIC CONFIGURATION**
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
# **PROVISIONING**
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y apache2
SHELL
end
进入全屏模式 退出全屏模式
-
“#”用于注释掉一行。这些可以取消注释以应用隐含设置。
-
版本控制:配置版本是 Vagrant 能够保持向后兼容的机制。它由 **Vagrant.configure(“version_number”)** 指定
-
Box: 一个 Box 可以在 Vagrant 支持的任何平台上使用,以提供相同的工作环境。
-
共享文件夹:Vagrant 自动将项目目录中的内容与来宾(虚拟)系统中的特殊目录同步
-
网络:Vagrant 包括将虚拟机放置在网络上的选项。这使它更易于访问。您可以为访客系统创建转发端口,定义专用网络、公共网络和其他更高级的选项。
-
Provisioning:Vagrant 中的 Provisioner 允许您在机器上自动安装软件、更改配置等,作为 vagrant up 过程的一部分。一些受支持的 Provisioner 包括 Ansible 和 Shell 脚本。
流浪向上
对 VagrantFile 进行任何修改后,建议您将其保存并提交到版本控制系统。要应用所做的更改,请执行以下命令:
vagrant up
进入全屏模式 退出全屏模式
随后,要在配置的 VM 运行时应用任何其他更改,请使用以下命令:
vagrant reload
进入全屏模式 退出全屏模式
流浪者SSH
vagrant up 成功完成后,您可以使用 SSH 连接到创建的虚拟机,使用:
vagrant ssh
进入全屏模式 退出全屏模式
这将打开与新虚拟机的安全 shell 连接。您的命令提示符将更改为“vagrant@trusty64”,表示您已登录到虚拟机。
完成对虚拟机的探索后,您可以使用 CTRL-D 退出会话。虚拟机仍将在后台运行,但 SSH 连接将关闭。
Azure 上的流浪者
演示
首先访问www.portal.azure.com和 provision a VM。
SSH 进入虚拟机
在其上安装 Vagrant:
wget https://releases.hashicorp.com/vagrant/2.2.10/vagrant_2.2.10_x86_64.deb
sudo dpkg -i vagrant_2.2.10_x86_64.deb
进入全屏模式 退出全屏模式
安装 Vagrant-azure 包:
vagrant plugin install vagrant-azure
进入全屏模式 退出全屏模式
添加 Azure Dummy Box:
vagrant box add azure-dummy https://github.com/azure/vagrant-azure/raw/v2.0/dummy.box --provider azure
进入全屏模式 退出全屏模式
使用以下命令安装 Azure-cli:
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
进入全屏模式 退出全屏模式
使用以下命令登录您的 Azure 帐户:
az login
进入全屏模式 退出全屏模式
使用以下命令创建 Azure 服务主体:
az ad sp create-for-rbac
进入全屏模式 退出全屏模式
“az ad sp create-for-rbac”的输出应如下所示:
{
"appId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"displayName": "some-display-name",
"name": "http://azure-cli-2017-04-03-15-30-52",
"password": "XXXXXXXXXXXXXXXXXXXX",
"tenant": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}
进入全屏模式 退出全屏模式
值租户、appId 和密码映射到 Vagrant 文件中的配置值 azure.tenant_id、azure.client_id 和 azure.client_secret 或环境变量。
创建一个 Vagrantfile 并添加此配置:
Vagrant.configure('2') do |config|
config.vm.box = 'azure-dummy'
# use local ssh key to connect to remote vagrant box
config.ssh.private_key_path = File.join(File.dirname(__FILE__), 'azure_private_key.id_rsa')
config.vm.provider :azure do |azure, override|
# each of the below values will default to use the env vars named as below if not specified explicitly
azure.tenant_id = ENV['AZURE_TENANT_ID']
azure.client_id = ENV['AZURE_CLIENT_ID']
azure.client_secret = ENV['AZURE_CLIENT_SECRET']
azure.subscription_id = ENV['AZURE_SUBSCRIPTION_ID']
end
####### Provisioner #######
config.vm.provision "ansible" do |ansible|
ansible.playbook = "playbook.yml"
ansible.verbose = true
end
end
进入全屏模式 退出全屏模式
由于我们指定 Ansible 作为我们的配置,我们需要将它安装在我们的主机上:
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt install ansible
进入全屏模式 退出全屏模式
设置 ENV 变量:
export AZURE_CLIENT_ID=“***************************”
export AZURE_CLIENT_SECRET=“***********************”
export AZURE_TENANT_ID=“***************************”
export AZURE_SUBSCRIPTION_ID=“*********************”
进入全屏模式 退出全屏模式
生成 SSH 密钥:
ssh-keygen -t rsa -f azure_private_key.id_rsa
进入全屏模式 退出全屏模式
创建一个我们将用于配置的“playbook.yml”:
---
- name: install nginx on a Azure VM instance
hosts: all
become: yes
become_method: sudo
gather_facts: yes
tasks:
- name: install nginx
apt:
name: nginx
update_cache: yes
state: present
- name: stop nginx service
service:
name: nginx
state: stopped
register: nginx_down
- name: delete the default html file
file:
path: /var/www/html/index.nginx-debian.html
state: absent
- name: copy new file from template folder
template:
src: ./index.html
dest: /var/www/html/index.html
owner: root
group: root
- name: restart nginx service
service:
name: nginx
state: restarted
进入全屏模式 退出全屏模式
创建一个“模板”文件夹并添加一个 index.html 文件。_ 将其粘贴到里面:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to DevOps - Powered by Telios</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to Vagrant</h1>
<p>Powered By Telios</p>
<p>If you see this page, Our page is hosted on Nginx server on our VM with Vagrant.</p>
<br />
</body>
</html>
进入全屏模式 退出全屏模式
返回到您使用的基本文件夹:
cd ..
进入全屏模式 退出全屏模式
现在运行:
vagrant up
进入全屏模式 退出全屏模式
该过程完成后,通过 ssh 进入配置的 VM:
vagrant ssh
进入全屏模式 退出全屏模式
访问 localhost 以检查我们的配置是否成功。我们可以使用 curl 但让我们使用 lynx 以获得更格式化的输出:
sudo apt install lynx -y
lynx localhost
进入全屏模式 退出全屏模式
如果我们得到自定义页面,那么这个过程就是成功的。
清理流浪者
在您的访客系统上完成工作后,您可以选择如何结束会话。
要停止机器并保存其当前状态运行:
vagrant suspend
进入全屏模式 退出全屏模式
您可以通过再次运行 vagrant up 来恢复。这很像将机器置于睡眠模式。
要关闭虚拟机,请使用以下命令:
vagrant halt
进入全屏模式 退出全屏模式
同样,vagrant up 将重新启动同一台虚拟机,您可以从上次中断的地方继续。这很像关闭一台普通机器。
要从您的系统类型中删除虚拟机的所有跟踪,请执行以下操作:
vagrant destroy
进入全屏模式 退出全屏模式
您保存在虚拟机中的所有内容都将被删除。这释放了 Vagrant 使用的系统资源。下次您流浪时,必须重新导入并重新配置机器。这很像在系统上格式化硬盘,然后重新加载新映像。
谢谢你的时间!
问题??
更多推荐

所有评论(0)