Coder Social home page Coder Social logo

vnaboichenko / cloudferry Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mirantisworkloadmobility/cloudferry

0.0 1.0 0.0 3.95 MB

CloudFerry is a cloud virtual workloads migration tool designed and developed by Mirantis Inc.

License: Apache License 2.0

Python 97.95% Ruby 0.26% Shell 1.61% HTML 0.17%

cloudferry's Introduction

CloudFerry

Overview

CloudFerry is a tool for resources and workloads migration between OpenStack clouds. First of all CloudFerry tool migrates cloud resources as tenants, users (preserving their passwords or generating new ones), roles, flavors and after that, it transfers virtual workloads as instances with their own data (instance image, root disk data, ephemeral drives, attached volumes) and network settings.

CloudFerry was tested on Openstack releases from Grizzly to Ice-House. It supports migration process for clouds using any iSCSI-like mechanism for volumes or Ceph as a backend for Cinder&Glance services, including case with Nova - Ephemeral volumes in Ceph. Supported cases are listed below. Tool supports any iscsi-like mechanism for Cinder backend as for Cinder service with LVM backend:

    1. Source - Cinder (LVM), Glance (file) --> Destination - Cinder (LVM), Glance (file)
    1. Source - Cinder & Glance (Ceph) --> Destination - Cinder (LVM), Glance (file)
    1. Source - Cinder & Glance (Ceph) and Nova ephemeral volumes (Ceph) --> Destination - Cinder (LVM), Glance (file)
    1. Source - Cinder (LVM), Glance (file) --> Destination - Cinder & Glance (Ceph)
    1. Source - Cinder (LVM), Glance (file) --> Destination - Cinder & Glance (Ceph) and Nova ephemeral volumes (Ceph)
    1. Source - Cinder & Glance (Ceph) --> Destination - Cinder & Glance (Ceph)
    1. Source - Cinder & Glance (Ceph) and Nova ephemeral volumes (Ceph) --> Destination - Cinder & Glance (Ceph) and Nova ephemeral volumes (Ceph)

Also CloudFerry can migrate instances, which were booted from bootable volumes with the same storage backends as in previous listed cases.

CloudFerry uses External network as a transfer network, so you need to have a connectivity from host where you want to execute the tool (transition zone) to both clouds through external network. CloudFerry can migrate instances from clouds with nova-network or quantum/neutron to new cloud with neutron network service. Also the tool can transfer instances in to the fixed networks with the same CIDR (they will be found automatically) or list new networks for instances in config.yaml file in overwrite section.

Cloudferry also allow keep ip addresses of instances and transfer security groups (with rules) with automatic detection of network manager on source and destination clouds (quantum/neutron or nova).

All functions are configured in yaml file, you can see the examples in configs directory. At the moment config file does not support default values so you need to set up all settings manually. Please note, that if any valuable setting appeared to be missing in config file, process will crash. Default settings is planned to implement in nearest future.

Requirements

  • Connection to source and destination clouds through external(public) network from host with CloudFerry.
  • Valid private ssh-key for both clouds which will be using by CloudFerry for data transferring.
  • Admin keystone access (typically admin access point lives on 35357 port).
  • sudo/root access on compute and controller nodes.
  • Openstack MySQL DB write access.
  • Credentials of global cloud admin for both clouds.
  • All the Python requirements are listed in requirements.txt.

Installation

Cloudferry can be prepared and installed as docker container.

Building the docker container

docker build --build-arg cf_commit_or_branch=origin/master -t <username>/cf-in-docker .

Container running

docker run -it <username>/cf-in-docker

Saving and loading the container files

docker save --output=/path/to/save/CloudFerry.img <username>/cf-in-docker
docker load --input=/path/to/save/CloudFerry.img

Usage

Overview

CloudFerry tool is used by running python fabric scripts from the CloudFerry directory:

# see list of available commands
cloudferry --help

Configuration

You can generate sample configs by: mkdir my_migration cd my_migration cloudferry init Configuration process is quite complex and mostly manual try-and-see-if-works process. Configuration documentation is TBD.

Whole cloud migration

Use migrate command with config file specified:

cloudferry migrate <config file>

Migrating specific instances

In order to migrate specific VMs, one should use filters. This is done through modifying filters file (configs/filter.yaml by default).

Edit configs/filter.yaml:

instances:
    id:
        - 7c53a6ab-0149-4232-80b3-b2d7ce02995a
        - f0fea76a-0a7d-4c25-ab9e-f048dbc7365d

Run migration as usual:

cloudferry migrate <config file>

Playground

See QUICKSTART.md for the quickest way of running your first successful migration.

cloudferry's People

Contributors

roman-verchikov avatar openstackmigration avatar toha10 avatar miarmak avatar mirrorcoder avatar ntymtsiv avatar svilgelm avatar plomakin avatar antonf avatar mirantisworkloadmobility avatar asvechnikov avatar mgrygoriev avatar oleksii-shyman avatar vitaliiyerys avatar archyufa avatar aguzikova avatar pavloivanets avatar wzbbbb avatar raiesmh08 avatar settis avatar vladiskuz avatar timbyr avatar

Watchers

Vlad avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.