Skip to content

Commit

Permalink
Updated the github pages docs (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
anmolsachan authored Feb 27, 2025
1 parent c4ac6cd commit fe25c77
Show file tree
Hide file tree
Showing 8 changed files with 418 additions and 174 deletions.
4 changes: 2 additions & 2 deletions docs/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ export default defineConfig({
// Each item here is one entry in the navigation menu.
// manually done so to we can keep the order
{ label: 'What is vJailbreak', slug: 'introduction/what_is_vjailbreak' },
{ label: 'components', slug: 'introduction/components' },
{ label: 'Components', slug: 'introduction/components' },
{ label: 'Pre-requisites', slug: 'introduction/prerequisites' },
{ label: 'Getting Started', slug: 'introduction/getting_started' },
{ label: 'prerequisites', slug: 'introduction/prerequisites' },
],
},
{
Expand Down
Binary file added docs/src/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
166 changes: 166 additions & 0 deletions docs/src/content/docs/guides/using_apis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
---
title: Using vJailbreak via APIs
description: Usage
---

## Usage

1. **Download and Install ORAS**

Download and install [ORAS](https://oras.land/docs/installation). Then, download the latest version of the vjailbreak image with the following command:
```bash
oras pull quay.io/platform9/vjailbreak:v0.1.4
```
This will download the vjailbreak qcow2 image locally. Upload it to your OpenStack environment and create your vjailbreak VM with it.

2. **Ensure Connectivity**

Ensure that your vjailbreak VM can communicate with your OpenStack and VMware environments. This includes any setup required for VPNs, etc. If you do not have an OpenStack environment, you can download the community edition of [Private Cloud Director](https://platform9.com/private-cloud-director/#experience) to get started.

3. **Copy VDDK Libraries**

Copy over the [VDDK libraries](https://developer.broadcom.com/sdks/vmware-virtual-disk-development-kit-vddk/8.0) for Linux into `/home/ubuntu` of the vjailbreak VM. Untar it to a folder named `vmware-vix-disklib-distrib` in the `/home/ubuntu` directory.

4. **Deploy Resources**

Deploy all the following resources in the same namespace where you installed the Migration Controller. By default, it is `migration-system`.

- **Create the Creds Objects**

Ensure that after you create these objects, their status reflects that the credentials have been validated. If it is not validated, the migration will not proceed.
```yaml
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: OpenstackCreds
metadata:
name: sapmo1
namespace: migration-system
spec:
OS_AUTH_URL:
OS_DOMAIN_NAME:
OS_USERNAME:
OS_PASSWORD:
OS_REGION_NAME:
OS_TENANT_NAME:
OS_INSECURE: true/false <optional>
---
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: VMwareCreds
metadata:
name: pnapbmc1
namespace: migration-system
spec:
VCENTER_HOST: vcenter.phx.pnap.platform9.horse
VCENTER_INSECURE: true/false
VCENTER_PASSWORD:
VCENTER_USERNAME:
```
- `OpenstackCreds` use the variables from the `openstack.rc` file. All these fields are compulsory except `OS_INSECURE`.
- All the fields in `VMwareCreds` are compulsory.

- **Create Network Mapping**

Create the mapping between networks in VMware and networks in OpenStack.
```yaml
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: NetworkMapping
metadata:
name: nwmap1
namespace: migration-system
spec:
networks:
- source: VM Network
target: vlan3002
- source: VM Network 2
target: vlan3003
```

- **Create Storage Mapping**

Create the mapping between datastores in VMware and volume types in OpenStack.
```yaml
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: StorageMapping
metadata:
name: stmap1
namespace: migration-system
spec:
storages:
- source: vcenter-datastore-1
target: lvm
- source: vcenter-datastore-2
target: ceph
```

- **Create the MigrationTemplate**

```yaml
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: MigrationTemplate
metadata:
name: migrationtemplate-windows
namespace: migration-system
spec:
networkMapping: name_of_networkMapping
storageMapping: name_of_storageMapping
osType: windows/linux <optional>
source:
datacenter: name_of_datacenter
vmwareRef: name_of_VMwareCreds
destination:
openstackRef: name_of_OpenstackCreds
```
- `osType` is optional. If not provided, the `osType` is retrieved from vCenter. If it cannot be automatically determined, migration will not proceed.

- **Create the MigrationPlan**

```yaml
apiVersion: vjailbreak.k8s.pf9.io/v1alpha1
kind: MigrationPlan
metadata:
name: vm-migration-app1
namespace: migration-system
spec:
migrationTemplate: migrationtemplate-windows
retry: true/false <optional>
advancedOptions:
granularVolumeTypes:
- newvoltype1
granularNetworks:
- newnetworkname1
- newnetworkname2
granularPorts:
- <port uuid 1>
- <port uuid 2>
migrationStrategy:
type: hot/cold
dataCopyStart: 2024-08-27T17:30:25.230Z
vmCutoverStart: 2024-08-27T17:30:25.230Z
vmCutoverEnd: 2024-08-28T17:30:25.230Z
adminInitiatedCutOver: true/false
performHealthChecks: true/false
healthCheckPort: string
virtualmachines:
- - winserver2k12
- winserver2k16
- - winserver2k19
- winserver2k22
```
- `retry`: Optional. Retries one failed migration in a migration plan once. Set to false after a migration has been retried.
- `advancedOptions`: This is an optional field for granular control over migration options. `MigrationTemplate` with mappings must still be present. These options override the ones in the template, if set. If you use these options, you must only have 1 VM present in the `virtualmachines` list.
- `granularVolumeTypes`: In case you wish to provide different volume types to disks of a VM when they are all on the same datastore, you can specify the volume type of each disk of your VM in order. You must define one volume type for one disk present on the VM.
- `granularNetworks`: In case you wish to override the default network mapping for a VM, you can provide a list of OpenStack network names to use for each NIC on the VM, in order.
- `granularPorts`: In case you wish to pre-create ports for a VM with certain configs and directly provide them to the target VM, you can define a list of port IDs to be used for each network on the VM. It will override options set in `granularNetworks`.
- `migrationStrategy`: This is an optional field.
- `type`:
- `cold`: Cold indicates to power off VMs in `migrationPlan` at the start of the migration. Quicker than hot.
- `hot`: Powers VM off just before cutover starts. Data copy occurs with the source VM powered on. May take longer.
- `dataCopyStart`: Optional. ISO 8601 timestamp indicating when to start data copy.
- `vmCutoverStart`: Optional. ISO 8601 timestamp indicating when to start VM cutover.
- `vmCutoverEnd`: Optional. ISO 8601 timestamp indicating the latest time by when VM cutover can start. If this time has been passed before the cutover can start, migration will fail.
- `adminInitiatedCutOver`: Set to true if you wish to manually trigger the cutover process. Default false.
- `performHealthChecks`: Set to false if you want to disable Ping and HTTP GET health check. Failing these checks does not clean up the targeted VM. Default false.
- `healthCheckPort`: Port to run the HTTP GET health check against. Default "443".
- `virtualmachines`: Specify names of VMs to migrate. In this example, the batch of VMs `winserver2k12` and `winserver2k16` migrate in parallel. `winserver2k19` and `winserver2k22` will wait for the first two to complete successfully, and then start in parallel. You can use this notation to specify whether VMs should migrate sequentially or in parallel within a plan.

Each VM migration will spawn a migration object. The status field contains a high-level view of the progress of the migration of the VM. For more details about the migration, check the logs of the pod specified in the Migration object.

65 changes: 49 additions & 16 deletions docs/src/content/docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: vJailbreak
description: A free and open-source tool that simplifies the migration of virtual machines from VMware to any OpenStack-compliant cloud.
template: splash
hero:
tagline: Migrate your VM's!
tagline: Effortless Open-Source VMware to OpenStack Migration
image:
file: ../../assets/logo.jpg
file: ../../assets/logo.png
actions:
- text: Getting Started
link: introduction/getting_started/
Expand All @@ -15,27 +15,60 @@ hero:
icon: external
variant: minimal
---

import { Card, CardGrid } from '@astrojs/starlight/components';
import AboutVJB from '../../components/about.astro';

## Next steps
<div style="display: grid; grid-template-columns: 40% 60%; align-items: start; gap: 20px;">
<div>
## vJailbreak: Effortless and intuitive VMware to OpenStack Migration

vJailbreak is an open-source tool featuring a user-friendly interface designed to simplify and accelerate the migration of virtual machines (VMs) from VMware vSphere environments to any OpenStack-compliant cloud. It eliminates the complexities of cross-platform VM migration, enabling you to modernize your infrastructure with minimal disruption and a streamlined, visual workflow.
</div>
<div style="text-align: center;">
<iframe width="100%" src="https://www.youtube.com/embed/your-demo-video-id" frameborder="0" allowfullscreen style="aspect-ratio: 16/9;"></iframe>
</div>
</div>

### Key Benefits

* **Intuitive User Interface:** Manage the entire migration process through a clear, easy-to-use graphical interface – no command-line expertise required.
* **Reduced Migration Time:** Automate migration tasks and visualize progress, significantly reducing the time and effort compared to manual methods.
* **Minimized Downtime:** vJailbreak's efficient migration process helps minimize downtime for your critical workloads.
* **Simplified Workflow:** A visual workflow guides you through each step of the migration, eliminating the need for complex scripting or manual configuration.
* **Cost-Effective Solution:** As an open-source tool, vJailbreak eliminates licensing costs.
* **Broad Compatibility:** Migrate VMs to any OpenStack cloud that adheres to standard OpenStack APIs.
* **Non-Disruptive Migration:** Perform migrations without impacting the operation of your source VMware environment.
* **Visual Progress Tracking:** Monitor the status of your migrations in real-time through the user interface.

## How vJailbreak Works

vJailbreak's intuitive interface leverages the OpenStack SDK to interact directly with both your VMware vSphere environment and your target OpenStack cloud. The UI guides you through these key steps:

1. **Connection Setup:** Easily configure connections to your source VMware vSphere environment and your target OpenStack cloud.
2. **VM Selection:** Select the VMs you wish to migrate from your vSphere environment.
3. **Migration Planning:** Configure migration settings, such as target storage and network configurations, through interactive forms.
4. **Migration Execution:** Initiate and monitor the migration process with real-time progress updates.
5. **Post-Migration Validation:** Verify the successful migration and launch of your VMs in OpenStack.

## Get Started

Ready to experience simplified, UI-driven VM migration?

<CardGrid stagger>
<Card title="Deploy vJailbreak" icon="rocket">
Deploy vJailbreak to your OpenStack cloud.
</Card>
<Card title="Contribute to vJailbreak" icon="add-document">
Help improve vJailbreak by contributing code or documentation.
</Card>
<Card title="Read the docs" icon="open-book">
Learn more in [the vJailbreak Docs](introduction/getting_started/).
</Card>
<Card title="Deploy vJailbreak" icon="rocket">
Deploy vJailbreak and connect it to your vSphere and OpenStack environments.
</Card>
<Card title="Contribute to vJailbreak" icon="add-document">
Help improve vJailbreak by contributing code, documentation, or bug reports.
</Card>
<Card title="Explore the Documentation" icon="open-book">
Learn more about installation, configuration, and usage in the [vJailbreak Documentation](introduction/getting_started/).
</Card>
</CardGrid>

<AboutVJB title="Brought to you by">
vJailbreak is for VM migration. It's built on top of the [OpenStack SDK](https://docs.openstack.org/python-openstacksdk/latest/).
Migrate your VM's without affecting your workloads.
<AboutVJB title="Powered by Platform9">

vJailbreak is built and maintained by Platform9, a leader in open-source cloud management solutions

[Learn more about Platform9](https://platform9.com/)

Expand Down
24 changes: 15 additions & 9 deletions docs/src/content/docs/introduction/components.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
---
title: Components
description: vJailbreak components
description: Overview of vJailbreak components
---

## v2v-helper
The main application that runs the migration. It is expected to run as a pod in a VM running in the target OpenStack Environment.
## vJailbreak Components

## UI
This is the UI for vJailbreak.
vJailbreak is composed of several key components that work together to facilitate the migration of virtual machines from VMware environments to OpenStack-compliant clouds. Below is an overview of each component and its role in the migration process.

## migration-controller
This is the k8s controller that schedules migrations.
### v2v-helper
The `v2v-helper` is the main application responsible for executing the migration process. It is designed to run as a pod within a virtual machine (VM) in the target OpenStack environment.

## v2v-cli
A CLI tool that starts the migration. It is not needed in the current version of vJailbreak.
### UI
The `UI` component provides a user-friendly interface for vJailbreak. It allows users to manage and monitor the migration process through an intuitive graphical interface.

### migration-controller
The `migration-controller` is a Kubernetes controller that schedules and manages the migration tasks. It ensures that migrations are executed efficiently and in accordance with the defined policies.

### v2v-cli
The `v2v-cli` is a command-line interface tool that can initiate the migration process. While it is available, it is not required in the current version of vJailbreak, as the primary interface is the UI.

By understanding these components, users can better appreciate the architecture and functionality of vJailbreak, enabling them to effectively manage and execute VM migrations.
Loading

0 comments on commit fe25c77

Please sign in to comment.