mirror of
https://github.com/gryf/openstack.git
synced 2025-12-17 11:30:24 +01:00
Open-source the OpenStack DB migration scripts and workshop
This commit is contained in:
63
migration-scripts/migration-workshop/README.md
Normal file
63
migration-scripts/migration-workshop/README.md
Normal file
@@ -0,0 +1,63 @@
|
||||
|
||||
Database Migration Workshop Instructions
|
||||
|
||||
```bash
|
||||
# Install libvirt and its plugin for vagrant.
|
||||
# You may need to do something different but this
|
||||
# is a way that works on CentOS 7.
|
||||
sudo yum install -y qemu libvirt libvirt-devel ruby-devel gcc qemu-kvm dkms make qt libgomp patch kernel-headers kernel-devel binutils glibc-headers glibc-devel font-forge
|
||||
sudo yum install -y https://releases.hashicorp.com/vagrant/1.9.6/vagrant_1.9.6_x86_64.rpm
|
||||
sudo vagrant plugin install vagrant-libvirt
|
||||
# Create and ssh to the Vagrant VM
|
||||
sudo vagrant up
|
||||
sudo vagrant ssh
|
||||
# Become root user
|
||||
sudo su
|
||||
# Deploy Juno and boot a VM
|
||||
/vagrant/juno.sh
|
||||
# Manually check to see the VM is there
|
||||
source kolla/openrc
|
||||
source venv/bin/activate
|
||||
nova list
|
||||
ps aux | grep qemu
|
||||
# Deactivate the venv, this is important for later steps
|
||||
deactivate
|
||||
# Shut down all Openstack services except DB
|
||||
/vagrant/rm_juno_services.sh
|
||||
# Clone down the DB migration scripts
|
||||
git clone https://github.com/yahoo/openstack-collab.git
|
||||
cd openstack-collab/migration-scripts/scripts/
|
||||
# Create a venv for each version of each component to be migrated
|
||||
./clone.sh
|
||||
tar xf build.tar.gz
|
||||
# Run the actual DB migration
|
||||
/vagrant/run_migration.sh
|
||||
# Take a copy of the now Ocata DB
|
||||
/vagrant/take_db_dump.sh
|
||||
# Destroy all old docker data, deploy a fresh Ocata cluster
|
||||
/vagrant/ocata/ocata.sh
|
||||
# Actually we only need the DB right now, so stop everything but that.
|
||||
/vagrant/ocata/stop_ocata_services.sh
|
||||
# Put the migrated DB dump into MariaDB
|
||||
/vagrant/ocata/restore_dump.sh
|
||||
# Redeploy with kolla-ansible again so service users and endpoints are re-made.
|
||||
/vagrant/ocata/redeploy.sh
|
||||
# Get the openstack client
|
||||
cd /home/vagrant
|
||||
virtualenv ocata-venv
|
||||
source ocata-venv/bin/activate
|
||||
pip install python-openstackclient
|
||||
source admin-openrc.sh
|
||||
# As you can see the old server you booted is still there
|
||||
openstack server list
|
||||
# However it's not actually running if you check ps.
|
||||
ps aux | grep qemu
|
||||
# This can simply be fixed with a stop/start.
|
||||
openstack server stop demo1
|
||||
openstack server start demo1
|
||||
ps aux | grep qemu
|
||||
# Let's boot up another server to make sure that works
|
||||
openstack server create --flavor m1.tiny --image cirros --key-name demo-keypair --nic net-id=$(openstack network list -f value -c ID) demo2
|
||||
openstack server list
|
||||
ps aux | grep qemu
|
||||
```
|
||||
13
migration-scripts/migration-workshop/Vagrantfile
vendored
Normal file
13
migration-scripts/migration-workshop/Vagrantfile
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
Vagrant.configure("2") do |config|
|
||||
config.ssh.forward_agent = true
|
||||
config.vm.box = "centos/7"
|
||||
config.vm.network "private_network", ip: "192.168.33.10"
|
||||
config.vm.provider "libvirt" do |v|
|
||||
v.memory = 8192
|
||||
v.cpus = 4
|
||||
v.storage :file, :size => '40G'
|
||||
end
|
||||
end
|
||||
205
migration-scripts/migration-workshop/genenv
Executable file
205
migration-scripts/migration-workshop/genenv
Executable file
@@ -0,0 +1,205 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This script generates a minimal set of environment variables to allow
|
||||
# the openstack containers to operate. It is creating a configuration
|
||||
# suitable for an all-in-one installation of openstack.
|
||||
#
|
||||
# It also creates a suitable 'openrc' for use with the installed system.
|
||||
|
||||
# Move to top level directory
|
||||
REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
|
||||
cd "$(dirname "$REAL_PATH")/.."
|
||||
|
||||
MY_IP=192.168.33.10
|
||||
|
||||
MY_DEV=eth1
|
||||
|
||||
echo MY_IP=$MY_IP
|
||||
echo MY_DEV=$MY_DEV
|
||||
|
||||
# Admin user password
|
||||
ADMIN_USER_PASSWORD=steakfordinner
|
||||
|
||||
# Database
|
||||
HOST_IP=$MY_IP
|
||||
MARIADB_ROOT_PASSWORD=kolla
|
||||
PASSWORD=12345
|
||||
|
||||
# Host
|
||||
ADMIN_TENANT_NAME=admin
|
||||
PUBLIC_IP=$HOST_IP
|
||||
|
||||
# Logging
|
||||
DEBUG_LOGGING=false
|
||||
VERBOSE_LOGGING=true
|
||||
NOVA_LOG_DIR=
|
||||
NEUTRON_LOG_DIR=/var/log/neutron
|
||||
NOVA_API_LOG_FILE=
|
||||
NOVA_CONDUCTOR_LOG_FILE=
|
||||
NOVA_SCHEDULER_LOG_FILE=
|
||||
NOVA_COMPUTE_LOG_FILE=
|
||||
NOVA_CONSOLEAUTH_LOG_FILE=
|
||||
NOVA_NOVNCPROXY_LOG_FILE=
|
||||
NEUTRON_SERVER_LOG_FILE=
|
||||
NEUTRON_L3_AGENT_LOG_FILE=
|
||||
NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE=
|
||||
NEUTRON_METADATA_AGENT_LOG_FILE=
|
||||
|
||||
# RabbitMQ
|
||||
RABBITMQ_SERVICE_HOST=$HOST_IP
|
||||
RABBIT_USER=guest
|
||||
RABBIT_PASSWORD=guest
|
||||
|
||||
# Networking Options are nova or neutron
|
||||
NETWORK_MANAGER=neutron
|
||||
|
||||
# Keystone
|
||||
KEYSTONE_ADMIN_TOKEN=$PASSWORD
|
||||
KEYSTONE_DB_PASSWORD=kolla
|
||||
KEYSTONE_ADMIN_PASSWORD=$PASSWORD
|
||||
KEYSTONE_PUBLIC_SERVICE_HOST=$HOST_IP
|
||||
KEYSTONE_ADMIN_SERVICE_HOST=$HOST_IP
|
||||
KEYSTONE_AUTH_PROTOCOL=http
|
||||
|
||||
# Glance
|
||||
GLANCE_DB_NAME=glance
|
||||
GLANCE_DB_USER=glance
|
||||
GLANCE_DB_PASSWORD=kolla
|
||||
GLANCE_KEYSTONE_USER=glance
|
||||
GLANCE_KEYSTONE_PASSWORD=glance
|
||||
GLANCE_API_SERVICE_HOST=$HOST_IP
|
||||
GLANCE_REGISTRY_SERVICE_HOST=$HOST_IP
|
||||
|
||||
# Nova
|
||||
NOVA_DB_PASSWORD=nova
|
||||
NOVA_DB_NAME=nova
|
||||
NOVA_DB_USER=nova
|
||||
NOVA_KEYSTONE_USER=nova
|
||||
NOVA_KEYSTONE_PASSWORD=nova
|
||||
NOVA_API_SERVICE_HOST=$HOST_IP
|
||||
NOVA_METADATA_API_SERVICE_HOST=$HOST_IP
|
||||
NOVA_EC2_SERVICE_HOST=$HOST_IP
|
||||
NOVA_PUBLIC_INTERFACE=$MY_DEV
|
||||
NOVA_FLAT_INTERFACE=eth1
|
||||
ENABLED_APIS=ec2,osapi_compute,metadata
|
||||
METADATA_HOST=$HOST_IP
|
||||
NOVA_NOVNC_PROXY_PORT=6080
|
||||
NOVA_NOVNC_PROXY_SERVICE_HOST=0.0.0.0
|
||||
NOVA_NOVNC_BASE_ADDRESS=${PUBLIC_IP}
|
||||
NOVA_NOVNC_PROXYCLIENT_IP=${PUBLIC_IP}
|
||||
|
||||
# Neutron
|
||||
NEUTRON_DB_NAME=neutron
|
||||
NEUTRON_DB_USER=neutron
|
||||
NEUTRON_DB_PASSWORD=password
|
||||
NEUTRON_KEYSTONE_USER=neutron
|
||||
NEUTRON_KEYSTONE_PASSWORD=neutron
|
||||
NEUTRON_SERVER_SERVICE_HOST=$HOST_IP
|
||||
NEUTRON_API_PASTE_CONFIG=/usr/share/neutron/api-paste.ini
|
||||
# Neutron ML2 Plugin
|
||||
TYPE_DRIVERS=flat,vxlan
|
||||
TENANT_NETWORK_TYPES=flat,vxlan
|
||||
MECHANISM_DRIVERS=linuxbridge,l2population
|
||||
# Neutron Linux Bridge Agent
|
||||
NEUTRON_FLAT_NETWORK_NAME=physnet1
|
||||
NEUTRON_FLAT_NETWORK_INTERFACE=eth1
|
||||
|
||||
# Nova/Neutron
|
||||
NEUTRON_SHARED_SECRET=sharedsecret
|
||||
|
||||
# Heat
|
||||
HEAT_DB_NAME=heat
|
||||
HEAT_DB_PASSWORD=kolla
|
||||
HEAT_KEYSTONE_PASSWORD=heat
|
||||
HEAT_API_SERVICE_HOST=$HOST_IP
|
||||
HEAT_API_CFN_SERVICE_HOST=$HOST_IP
|
||||
HEAT_API_CFN_URL_HOST=$HOST_IP
|
||||
|
||||
cat > ./openrc <<EOF
|
||||
export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
|
||||
export OS_USERNAME=$ADMIN_TENANT_NAME
|
||||
export OS_PASSWORD=$ADMIN_USER_PASSWORD
|
||||
export OS_TENANT_NAME=$ADMIN_TENANT_NAME
|
||||
EOF
|
||||
|
||||
cat > ./compose/openstack.env <<EOF
|
||||
DEBUG_LOGGING=$DEBUG_LOGGING
|
||||
VERBOSE_LOGGING=$VERBOSE_LOGGING
|
||||
NOVA_LOG_DIR=$NOVA_LOG_DIR
|
||||
NEUTRON_LOG_DIR=$NEUTRON_LOG_DIR
|
||||
NOVA_API_LOG_FILE=$NOVA_API_LOG_FILE
|
||||
NOVA_CONDUCTOR_LOG_FILE=$NOVA_CONDUCTOR_LOG_FILE
|
||||
NOVA_SCHEDULER_LOG_FILE=$NOVA_SCHEDULER_LOG_FILE
|
||||
NOVA_COMPUTE_LOG_FILE=$NOVA_COMPUTE_LOG_FILE
|
||||
NOVA_CONSOLEAUTH_LOG_FILE=$NOVA_CONSOLEAUTH_LOG_FILE
|
||||
NOVA_NOVNCPROXY_LOG_FILE=$NOVA_NOVNCPROXY_LOG_FILE
|
||||
NEUTRON_SERVER_LOG_FILE=$NEUTRON_SERVER_LOG_FILE
|
||||
NEUTRON_L3_AGENT_LOG_FILE=$NEUTRON_L3_AGENT_LOG_FILE
|
||||
NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE=$NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE
|
||||
NEUTRON_METADATA_AGENT_LOG_FILE=$NEUTRON_METADATA_AGENT_LOG_FILE
|
||||
TYPE_DRIVERS=$TYPE_DRIVERS
|
||||
TENANT_NETWORK_TYPES=$TENANT_NETWORK_TYPES
|
||||
MECHANISM_DRIVERS=$MECHANISM_DRIVERS
|
||||
ADMIN_USER_PASSWORD=$ADMIN_USER_PASSWORD
|
||||
ADMIN_TENANT_NAME=$ADMIN_TENANT_NAME
|
||||
DB_ROOT_PASSWORD=$MARIADB_ROOT_PASSWORD
|
||||
FLAT_INTERFACE=$NOVA_FLAT_INTERFACE
|
||||
GLANCE_API_SERVICE_HOST=$GLANCE_API_SERVICE_HOST
|
||||
GLANCE_DB_NAME=$GLANCE_DB_NAME
|
||||
GLANCE_DB_PASSWORD=$GLANCE_DB_PASSWORD
|
||||
GLANCE_DB_USER=$GLANCE_DB_USER
|
||||
GLANCE_KEYSTONE_PASSWORD=$GLANCE_KEYSTONE_PASSWORD
|
||||
GLANCE_KEYSTONE_USER=$GLANCE_KEYSTONE_USER
|
||||
GLANCE_REGISTRY_SERVICE_HOST=$GLANCE_REGISTRY_SERVICE_HOST
|
||||
KEYSTONE_ADMIN_PASSWORD=$KEYSTONE_ADMIN_PASSWORD
|
||||
KEYSTONE_ADMIN_SERVICE_HOST=$KEYSTONE_ADMIN_SERVICE_HOST
|
||||
KEYSTONE_ADMIN_SERVICE_PORT=35357
|
||||
KEYSTONE_ADMIN_TOKEN=$KEYSTONE_ADMIN_TOKEN
|
||||
KEYSTONE_AUTH_PROTOCOL=$KEYSTONE_AUTH_PROTOCOL
|
||||
KEYSTONE_DB_PASSWORD=$KEYSTONE_DB_PASSWORD
|
||||
KEYSTONE_PUBLIC_SERVICE_HOST=$KEYSTONE_PUBLIC_SERVICE_HOST
|
||||
MARIADB_SERVICE_HOST=$HOST_IP
|
||||
MARIADB_ROOT_PASSWORD=$MARIADB_ROOT_PASSWORD
|
||||
NETWORK_MANAGER=$NETWORK_MANAGER
|
||||
NOVA_API_SERVICE_HOST=$NOVA_API_SERVICE_HOST
|
||||
NOVA_METADATA_API_SERVICE_HOST=$NOVA_METADATA_API_SERVICE_HOST
|
||||
ENABLED_APIS=$ENABLED_APIS
|
||||
METADATA_HOST=$METADATA_HOST
|
||||
NOVA_DB_NAME=$NOVA_DB_NAME
|
||||
NOVA_DB_PASSWORD=$NOVA_DB_PASSWORD
|
||||
NOVA_DB_USER=$NOVA_DB_USER
|
||||
NOVA_EC2_API_SERVICE_HOST=$NOVA_EC2_SERVICE_HOST
|
||||
NOVA_EC2_SERVICE_HOST=$NOVA_EC2_SERVICE_HOST
|
||||
NOVA_KEYSTONE_PASSWORD=$NOVA_KEYSTONE_PASSWORD
|
||||
NOVA_KEYSTONE_USER=$NOVA_KEYSTONE_USER
|
||||
NOVA_NOVNC_PROXY_SERVICE_HOST=$NOVA_NOVNC_PROXY_SERVICE_HOST
|
||||
NOVA_NOVNC_PROXY_PORT=$NOVA_NOVNC_PROXY_PORT
|
||||
NOVA_NOVNC_BASE_ADDRESS=${NOVA_NOVNC_BASE_ADDRESS}
|
||||
NOVA_NOVNC_PROXYCLIENT_IP=${NOVA_NOVNC_PROXYCLIENT_IP}
|
||||
NEUTRON_SHARED_SECRET=$NEUTRON_SHARED_SECRET
|
||||
NEUTRON_DB_NAME=$NEUTRON_DB_NAME
|
||||
NEUTRON_DB_USER=$NEUTRON_DB_USER
|
||||
NEUTRON_DB_PASSWORD=$NEUTRON_DB_PASSWORD
|
||||
NEUTRON_KEYSTONE_USER=$NEUTRON_KEYSTONE_USER
|
||||
NEUTRON_KEYSTONE_PASSWORD=$NEUTRON_KEYSTONE_PASSWORD
|
||||
NEUTRON_SERVER_SERVICE_HOST=$NEUTRON_SERVER_SERVICE_HOST
|
||||
NEUTRON_API_PASTE_CONFIG=$NEUTRON_API_PASTE_CONFIG
|
||||
NEUTRON_FLAT_NETWORK_NAME=$NEUTRON_FLAT_NETWORK_NAME
|
||||
NEUTRON_FLAT_NETWORK_INTERFACE=$NEUTRON_FLAT_NETWORK_INTERFACE
|
||||
HEAT_DB_NAME=$HEAT_DB_NAME
|
||||
HEAT_DB_PASSWORD=$HEAT_DB_PASSWORD
|
||||
HEAT_KEYSTONE_PASSWORD=$HEAT_KEYSTONE_PASSWORD
|
||||
HEAT_API_SERVICE_HOST=$HEAT_API_SERVICE_HOST
|
||||
PUBLIC_INTERFACE=$NOVA_PUBLIC_INTERFACE
|
||||
PUBLIC_IP=$HOST_IP
|
||||
PUBLIC_IP=$PUBLIC_IP
|
||||
RABBITMQ_PASS=$RABBIT_PASSWORD
|
||||
RABBITMQ_SERVICE_HOST=$RABBITMQ_SERVICE_HOST
|
||||
RABBITMQ_USER=$RABBIT_USER
|
||||
RABBIT_PASSWORD=$RABBIT_PASSWORD
|
||||
RABBIT_USERID=$RABBIT_USER
|
||||
HEAT_API_CFN_SERVICE_HOST=$HEAT_API_CFN_SERVICE_HOST
|
||||
EOF
|
||||
echo Please customize your FLAT_INTERFACE to a different network then your
|
||||
echo main network. The FLAT_INTERFACE is used for inter-VM communication.
|
||||
echo the FLAT_INTERFACE should not have an IP address assigned.
|
||||
56
migration-scripts/migration-workshop/juno.sh
Executable file
56
migration-scripts/migration-workshop/juno.sh
Executable file
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
set -Eexo pipefail
|
||||
|
||||
setenforce permissive
|
||||
yum install -y epel-release
|
||||
yum install -y python-pip python-devel libffi-devel gcc openssl-devel libselinux-python git curl mysql
|
||||
pip install virtualenv
|
||||
[ -e venv ] || virtualenv venv
|
||||
source venv/bin/activate
|
||||
|
||||
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose
|
||||
chmod +x /usr/bin/docker-compose
|
||||
|
||||
curl -o/etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
|
||||
yum -y install docker-ce
|
||||
systemctl start docker
|
||||
|
||||
curl https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=kilo-eol | grep -v '^aioeventlet' | grep -v '^cryptography=' | grep -v '^pyOpenSSL=' | grep -v '^cffi=' | grep -v 'SQLAlchemy' | grep -v 'MySQL-python' | grep -v 'PyMySQL' | grep -v 'alembic' > up_cons_file
|
||||
echo "aioeventlet===0.5.2" >> up_cons_file
|
||||
grep -v 'oslo.i18n' up_cons_file | grep -v 'oslo.db' | grep -v '^kombu' > up_cons_file-BAK
|
||||
echo "oslo.i18n===1.7.0" >> up_cons_file-BAK
|
||||
echo "oslo.db===1.7.0" >> up_cons_file-BAK
|
||||
echo "kombu===3.0.30" >> up_cons_file-BAK
|
||||
mv up_cons_file-BAK up_cons_file
|
||||
pip install python-keystoneclient==1.6.0 python-glanceclient==0.19.0 python-novaclient==2.26.0 python-heatclient==0.6.0 python-neutronclient==2.6.0 -c up_cons_file
|
||||
rm up_cons_file
|
||||
|
||||
[ -e kolla ] || git clone https://github.com/openstack/kolla.git
|
||||
cd kolla
|
||||
git checkout tags/juno-eol
|
||||
cp /vagrant/genenv ./tools/genenv
|
||||
./tools/genenv
|
||||
|
||||
cd compose
|
||||
for f in *.yml ; do grep -v 'name:' $f > tmp.yml && mv tmp.yml $f ; done
|
||||
cd ..
|
||||
|
||||
export COMPOSE_API_VERSION=1.18
|
||||
echo 'NOVA_CONSOLEAUTH_LOG_FILE=/var/log/nova/nova-consoleauth.log' >> compose/openstack.env
|
||||
echo 'NOVA_NOVNCPROXY_LOG_FILE=/var/log/nova/nova-vncproxy.log' >> compose/openstack.env
|
||||
|
||||
./tools/kolla start
|
||||
source openrc
|
||||
|
||||
MY_IP=192.168.33.10
|
||||
mysql -h${MY_IP} -uroot -pkolla -e 'DROP DATABASE heat;'
|
||||
docker stop compose_heatapi_1 compose_heatengine_1 compose_horizon_1
|
||||
|
||||
./tools/init-runonce
|
||||
[ -e ~/.ssh/id_rsa ] || ssh-keygen -t rsa -f ~/.ssh/id_rsa
|
||||
nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-keypair
|
||||
neutron subnet-update demo-subnet --enable_dhcp false
|
||||
nova boot --flavor m1.tiny --image cirros --key-name demo-keypair --nic net-id=$(neutron net-list -f value -F id) demo1
|
||||
4
migration-scripts/migration-workshop/ocata/ansible.cfg
Normal file
4
migration-scripts/migration-workshop/ocata/ansible.cfg
Normal file
@@ -0,0 +1,4 @@
|
||||
[defaults]
|
||||
host_key_checking=False
|
||||
pipelining=True
|
||||
forks=100
|
||||
24
migration-scripts/migration-workshop/ocata/extra.yaml
Normal file
24
migration-scripts/migration-workshop/ocata/extra.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
kolla_base_distro: "centos"
|
||||
kolla_install_type: "source"
|
||||
openstack_release: "ocata"
|
||||
kolla_internal_vip_address: "192.168.33.25"
|
||||
network_interface: "eth1"
|
||||
enable_heat: "no"
|
||||
enable_horizon: "no"
|
||||
database_password: "kolla"
|
||||
keystone_admin_password: "steakfordinner"
|
||||
nova_database_password: "nova"
|
||||
nova_api_database_password: "nova"
|
||||
rabbitmq_user: "guest"
|
||||
rabbitmq_password: "guest"
|
||||
keystone_token_provider: "fernet"
|
||||
|
||||
glance_database_password: "kolla"
|
||||
glance_keystone_password: "glance"
|
||||
keystone_database_password: "kolla"
|
||||
nova_keystone_password: "nova"
|
||||
neutron_database_password: "password"
|
||||
neutron_keystone_password: "neutron"
|
||||
|
||||
placement_keystone_user: "nova"
|
||||
placement_keystone_password: "nova"
|
||||
39
migration-scripts/migration-workshop/ocata/ocata.sh
Executable file
39
migration-scripts/migration-workshop/ocata/ocata.sh
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
set -e
|
||||
set -x
|
||||
ROOT_DIR=/vagrant/ocata
|
||||
|
||||
yum remove -y docker-ce || :
|
||||
rm -f /etc/yum.repos.d/docker-ce.repo || :
|
||||
umount /var/lib/docker/devicemapper/ || :
|
||||
rm -rf /var/lib/docker/ || :
|
||||
yum install -y epel-release
|
||||
yum install -y python-pip python-devel libffi-devel gcc openssl-devel libselinux-python git
|
||||
pip install -U pip
|
||||
[ -e ${ROOT_DIR}/kolla-ansible ] || git clone https://github.com/openstack/kolla-ansible.git ${ROOT_DIR}/kolla-ansible -b stable/ocata
|
||||
pip install ${ROOT_DIR}/kolla-ansible
|
||||
pip install "ansible>=2,<2.4" virtualenv
|
||||
|
||||
[ -e /etc/ansible ] || mkdir /etc/ansible
|
||||
cp ${ROOT_DIR}/ansible.cfg /etc/ansible/
|
||||
[ -e /etc/kolla ] || cp -r ${ROOT_DIR}/kolla-ansible/etc/kolla /etc/
|
||||
kolla-genpwd
|
||||
mkdir -p /etc/kolla/config/nova/
|
||||
cat > /etc/kolla/config/nova/nova-compute.conf <<EOF
|
||||
[libvirt]
|
||||
virt_type = qemu
|
||||
cpu_mode = none
|
||||
EOF
|
||||
|
||||
cp ${ROOT_DIR}/kolla-ansible/ansible/inventory/all-in-one ${ROOT_DIR}
|
||||
kolla-ansible -i ${ROOT_DIR}/all-in-one --extra @${ROOT_DIR}/extra.yaml bootstrap-servers
|
||||
kolla-ansible -i ${ROOT_DIR}/all-in-one --extra @${ROOT_DIR}/extra.yaml prechecks
|
||||
kolla-ansible -i ${ROOT_DIR}/all-in-one --extra @${ROOT_DIR}/extra.yaml pull
|
||||
kolla-ansible -i ${ROOT_DIR}/all-in-one --extra @${ROOT_DIR}/extra.yaml deploy
|
||||
docker exec openvswitch_db ovs-vsctl set interface eth1 type=internal
|
||||
|
||||
kolla-ansible --extra @${ROOT_DIR}/extra.yaml post-deploy
|
||||
cp /etc/kolla/admin-openrc.sh /home/vagrant
|
||||
11
migration-scripts/migration-workshop/ocata/redeploy.sh
Executable file
11
migration-scripts/migration-workshop/ocata/redeploy.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
set -e
|
||||
set -x
|
||||
ROOT_DIR=/vagrant/ocata
|
||||
|
||||
docker rm -f $(docker ps -aq)
|
||||
kolla-ansible -i ${ROOT_DIR}/all-in-one --extra @${ROOT_DIR}/extra.yaml bootstrap-servers
|
||||
kolla-ansible -i ${ROOT_DIR}/all-in-one --extra @${ROOT_DIR}/extra.yaml deploy
|
||||
10
migration-scripts/migration-workshop/ocata/restore_dump.sh
Executable file
10
migration-scripts/migration-workshop/ocata/restore_dump.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
mysql -h192.168.33.10 -uroot -pkolla -e "show databases" | grep -v Database | grep -v mysql| grep -v information_schema| gawk '{print "drop database " $1 ";select sleep(0.1);"}' | mysql -h192.168.33.10 -uroot -pkolla
|
||||
mysql -h192.168.33.10 -uroot -pkolla < ocata_db_dump.sql
|
||||
cp -r instances/ /var/lib/docker/volumes/nova_compute/_data
|
||||
cp -r images/ /var/lib/docker/volumes/glance/_data
|
||||
chown --reference=/var/lib/docker/volumes/nova_compute/_data -R /var/lib/docker/volumes/nova_compute/_data
|
||||
chown --reference=/var/lib/docker/volumes/glance/_data -R /var/lib/docker/volumes/glance/_data
|
||||
5
migration-scripts/migration-workshop/ocata/stop_ocata_services.sh
Executable file
5
migration-scripts/migration-workshop/ocata/stop_ocata_services.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
docker stop $(docker ps --format '{{.ID}} {{.Names}}' | grep -v maria | awk '{print $1}')
|
||||
8
migration-scripts/migration-workshop/rm_juno_services.sh
Executable file
8
migration-scripts/migration-workshop/rm_juno_services.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
source /home/vagrant/venv/bin/activate
|
||||
source /home/vagrant/kolla/openrc
|
||||
for SERVICE_USER in keystone heat glance neutron nova; do keystone user-delete $SERVICE_USER; done
|
||||
docker stop $(docker ps --format '{{.ID}} {{.Names}}' | grep -v maria | awk '{print $1}')
|
||||
12
migration-scripts/migration-workshop/run_migration.sh
Executable file
12
migration-scripts/migration-workshop/run_migration.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
MY_IP=192.168.33.10
|
||||
mysql -h${MY_IP} -uroot -pkolla -e 'UPDATE nova.compute_nodes SET host_ip="192.168.33.10";'
|
||||
./do_migration.sh ${MY_IP} 3306 root kolla rabbit://guest:guest@${MY_IP}:5672 mysql+pymysql://nova:nova@${MY_IP}:3306
|
||||
mysql -h${MY_IP} -uroot -pkolla -e 'UPDATE nova_api.cell_mappings SET database_connection="mysql+pymysql://nova:nova@192.168.33.25:3306/nova" WHERE id=2;'
|
||||
# Only use this if on a very small disk
|
||||
#mysql -h${MY_IP} -uroot -pkolla -e 'UPDATE nova.compute_nodes SET disk_available_least=free_disk_gb;';
|
||||
for DIR in $(find /var/lib/docker/volumes/ -type d -name images); do if [ $(ls $DIR/.. | wc -l) -eq "1" ] ; then cp -r $DIR . ; fi ; done
|
||||
cp -r $(find /var/lib/docker/volumes/ -type d -name instances) .
|
||||
7
migration-scripts/migration-workshop/take_db_dump.sh
Executable file
7
migration-scripts/migration-workshop/take_db_dump.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2018, Oath Inc.
|
||||
# Licensed under the terms of the MIT license. See LICENSE file for terms.
|
||||
|
||||
MY_IP=192.168.33.10
|
||||
mysqldump -u root --password=kolla -h $MY_IP --all-databases --result-file=ocata_db_dump.sql
|
||||
docker stop $(docker ps -q)
|
||||
Reference in New Issue
Block a user