GaGa's Blog

One GaGa, One World !

1. 什么是 Vagrant?

1.1 内容

  • Vagrant 的定义与作用
    Vagrant 是一个用于构建和管理虚拟机环境的开源工具,主要用于创建一致、可重复的开发环境。它通过脚本化的方式(主要是 Vagrantfile)定义虚拟机配置,简化环境搭建流程。
  • Vagrant 的优势
    • 环境一致性:确保开发、测试、生产环境一致,避免“在我机器上可以运行”的问题。
    • 快速部署:通过预配置的 Box 文件快速启动虚拟机。
    • 跨平台支持:支持 Windows、macOS、Linux,支持多种虚拟化提供者(如 VirtualBox、VMware、Hyper-V)。
  • Vagrant 与其他工具的对比
    • Vagrant vs Docker:Vagrant 创建完整的虚拟机(包含操作系统),而 Docker 使用容器(共享主机内核)。Vagrant 更适合需要完整系统隔离的场景。
    • Vagrant vs Terraform:Terraform 用于基础设施即代码(IaC),多用于云端资源管理;Vagrant 更专注于本地开发环境。
  • 适用场景
    • 本地开发环境:如 LAMP、LEMP 栈。
    • 测试环境:模拟生产环境。
    • 学习新工具:如 Hadoop、Kubernetes 等复杂系统。

box provider/provisioner 302ba9daab2d1c405366fef334b876a6.png

Read more »

目的

开启密码、key认证、添加国内yum源、增加磁盘大小、关闭selinux、安装常用软件包、关闭防火墙

1.Vagrantfile

Vagrant.configure("2") do |config|
    config.vm.box = "centos7"
    config.vm.hostname = "vgt-c7-101"
    config.disksize.size = '50GB'
    #config.vm.disk :disk, size: "50GB", primary: true
    config.vm.network "private_network", ip: "172.24.20.101", hostname: true
    config.ssh.insert_key = true
    config.vm.provider "virtualbox" do |vb|
      vb.memory = 2048
      vb.cpus   = 2
      vb.name   = "vgt-c7-101"
    end

    config.vm.provision "shell", path: "init.sh"
end
Read more »

目的

当前虚机做了优化,想基于此虚机打包xx.box当作基础镜像

1.检查vagrant默认insecure_private_key

ll ~/.vagrant.d/insecure_private_key

➜  .vagrant.d ll ~/.vagrant.d/insecure_private_keys 
total 32
-rw-------  1 mvpbang  staff   411  4  2  2024 vagrant.key.ed25519
-rw-r--r--  1 mvpbang  staff    98  3  5 15:58 vagrant.key.ed25519.pub
-rw-------  1 mvpbang  staff  1675  4  2  2024 vagrant.key.rsa
-rw-r--r--  1 mvpbang  staff   381  3  5 15:58 vagrant.key.rsa.pub
Read more »

问题

操作来看是调整了nat网络配置导致的nat rule异常

日志如下

➜  c7-10x vgtu
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["modifyvm", "ded6483d-ae4c-4baa-8c1e-421b6f44ba90", "--natpf1", "ssh,tcp,127.0.0.1,2222,,22"]

Stderr: VBoxManage: error: A NAT rule of this name already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component NATEngineWrap, interface INATEngine, callee nsISupports
VBoxManage: error: Context: "AddRedirect(Bstr(strName).raw(), proto, Bstr(strHostIp).raw(), RTStrToUInt16(strHostPort), Bstr(strGuestIp).raw(), RTStrToUInt16(strGuestPort))" at line 2102 of file VBoxManageModifyVM.cpp
Read more »

“Linux Cloud Images” 指的是为云计算环境专门准备的 Linux 系统镜像。这些镜像通常是预配置的操作系统映像,经过优化以在云平台(如 AWS、Google Cloud、Azure、OpenStack 等)上运行。

  1. 定义

    • “Cloud images” 是指为虚拟化或云端部署设计的磁盘映像(disk image),通常包含操作系统和必要的工具。
    • “Linux cloud images” 特指基于 Linux 的发行版(如 Ubuntu、CentOS、Debian 等)的云镜像。
  2. 特点

    • 轻量化:这些镜像通常去除了不必要的软件包,保持最小化以提高效率和启动速度。
    • 云优化:内置了对云环境的适配,例如支持 cloud-init(一个广泛使用的初始化工具,用于在启动时配置实例,比如设置网络、SSH 密钥等)。
    • 格式兼容:常见格式包括 QCOW2、AMI(Amazon Machine Image)、OVA 等,适用于不同云平台的需求。
    • 安全性:默认配置通常强化了安全性,适合公开云环境。
  3. 用途

    • 用于快速部署虚拟机(VM)或容器化环境。
    • 开发者可以用这些镜像在云端构建、测试或运行应用程序。
    • 企业利用它们来扩展基础设施或实现自动化部署。

fedora

Read more »

HCP Packer 和 Packer 的关系

Packer

Packer 是由 HashiCorp 开发的一个开源工具,用于从单一源配置自动创建多平台的机器镜像(例如 AWS AMI、Docker 镜像、VMware 镜像等)。它通过定义模板(可以是 JSON 或 HCL2 格式),帮助用户以代码化的方式构建标准化的镜像,适用于多种云端和本地环境。 (声明示文件编写配置)

HCP Packer

Read more »

在 HashiCorp Packer 中,provisioner "shell-local"provisioner "shell" 是两种不同的配置器(provisioner),它们的主要区别在于执行脚本的位置不同。


1. provisioner "shell-local"

定义:

Read more »

在 macOS上为 Packer 安装 Docker 和 VirtualBox 插件,可以扩展 Packer 的功能,用于构建 Docker 容器镜像或 VirtualBox 虚拟机镜像。Packer 从 v1.7 开始支持插件系统,允许通过 packer init 或手动方式安装外部插件。


前提条件

  1. Packer 已安装
    确保你已经按照之前的指导在 macOS 上安装了 Packer(例如通过 brew install packer)。
  2. Docker 和 VirtualBox 已安装(可选)
    如果你计划使用这些插件构建镜像,建议安装 Docker Desktop 和 VirtualBox,但只是安装插件本身并不强制要求。
Read more »

在 macOS 上安装 HashiCorp Packer 有几种常见的方法。

  • 通过 Homebrew(推荐)
  • 手动下载二进制文件

方法 1:使用 Homebrew 安装(推荐)

Read more »

HashiCorp Packer 是一个由 HashiCorp 公司开发的开源工具,用于自动化创建跨多个平台的相同机器镜像(machine image),只需使用单一的源配置文件。它旨在帮助开发者、运维人员和组织更高效地构建和管理基础设施镜像,支持现代 DevOps 和不可变基础设施(immutable infrastructure)的实践。

bbfbca86a2f036d0499aed63e2c64e01.png


Packer 是 HashiCorp 生态系统中的重要组成部分,与 Terraform 等工具结合使用时,可以实现从镜像创建到基础设施部署的端到端自动化。如果你需要高效、一致地管理机器镜像,Packer 是一个值得尝试的工具!

Read more »
0%