Fix vagrant development environment

After the repo split into kolla and kolla-ansible the Vagrant
development environment was broken.

With this change Vagrant will run from kolla-ansible and kolla
repo is expected to be in the same directory level so the
bootstrap can include it inside the VM.

 - Modified the bootstrap code to copy both repos into the VM.
 - Added one configuration token to specify kolla-ansible location
   inside the VM.
 - Updated the docs.

Change-Id: I6b56822d50472f8eda6fc60f69196d3c9b8b6cf8
Closes-Bug: 1693847
This commit is contained in:
Juan J. Martinez 2017-05-30 11:47:15 +01:00 committed by Juan Martinez
parent 1a21bf2a4d
commit 8fe43171ce
4 changed files with 39 additions and 13 deletions

View File

@ -15,6 +15,11 @@ end
vagrant_dir = File.expand_path(File.dirname(__FILE__)) vagrant_dir = File.expand_path(File.dirname(__FILE__))
# get kolla and kolla-ansibe repos path relative to current directory
# they will be used by the bootstrap script to configure the nodes
kolla_ansible_repo_path = File.expand_path(File.join(vagrant_dir, '..', '..', '..'))
kolla_repo_path = File.expand_path(File.join(vagrant_dir, '..', '..', '..', '..', 'kolla'))
# Vagrantfile.custom contains user customization for the Vagrantfile # Vagrantfile.custom contains user customization for the Vagrantfile
# You shouldn't have to edit the Vagrantfile, ever. # You shouldn't have to edit the Vagrantfile, ever.
if File.exists?(File.join(vagrant_dir, 'Vagrantfile.custom')) if File.exists?(File.join(vagrant_dir, 'Vagrantfile.custom'))
@ -42,7 +47,8 @@ PROVIDER_DEFAULTS ||= {
bridge_interface: "virbr0", bridge_interface: "virbr0",
vagrant_shared_folder: "/home/vagrant/sync", vagrant_shared_folder: "/home/vagrant/sync",
sync_method: "nfs", sync_method: "nfs",
kolla_path: "/home/vagrant/kolla" kolla_path: "/home/vagrant/kolla",
kolla_ansible_path: "/home/vagrant/kolla-ansible"
} }
}, },
virtualbox: { virtualbox: {
@ -51,14 +57,16 @@ PROVIDER_DEFAULTS ||= {
bridge_interface: "wlp3s0b1", bridge_interface: "wlp3s0b1",
vagrant_shared_folder: "/home/vagrant/sync", vagrant_shared_folder: "/home/vagrant/sync",
sync_method: "virtualbox", sync_method: "virtualbox",
kolla_path: "/home/vagrant/kolla" kolla_path: "/home/vagrant/kolla",
kolla_ansible_path: "/home/vagrant/kolla-ansible"
}, },
ubuntu: { ubuntu: {
base_image: "ubuntu/wily64", base_image: "ubuntu/wily64",
bridge_interface: "wlp3s0b1", bridge_interface: "wlp3s0b1",
vagrant_shared_folder: "/home/vagrant/sync", vagrant_shared_folder: "/home/vagrant/sync",
sync_method: "virtualbox", sync_method: "virtualbox",
kolla_path: "/home/vagrant/kolla" kolla_path: "/home/vagrant/kolla",
kolla_ansible_path: "/home/vagrant/kolla-ansible"
} }
} }
} }
@ -159,6 +167,13 @@ def configure_wifi_if_enabled(vm)
end end
Vagrant.configure(2) do |config| Vagrant.configure(2) do |config|
# check for kolla repo to be available
unless File.directory?(kolla_repo_path)
raise VagrantConfigMissing,
"Missing kolla repository checkout at #{kolla_repo_path}"
end
config.vm.box = get_default(:base_image) config.vm.box = get_default(:base_image)
# Next to the hostonly NAT-network there is a host-only network with all # Next to the hostonly NAT-network there is a host-only network with all
@ -209,8 +224,9 @@ Vagrant.configure(2) do |config|
# The operator controls the deployment # The operator controls the deployment
config.vm.define "operator", primary: true do |admin| config.vm.define "operator", primary: true do |admin|
admin.vm.hostname = "operator.local" admin.vm.hostname = "operator.local"
admin.vm.provision :shell, path: PROVISION_SCRIPT, args: "operator #{MULTINODE ? 'multinode' : 'aio'} #{get_default(:kolla_path)}" admin.vm.provision :shell, path: PROVISION_SCRIPT, args: "operator #{MULTINODE ? 'multinode' : 'aio'} #{get_default(:kolla_path)} #{get_default(:kolla_ansible_path)}"
admin.vm.synced_folder File.join(vagrant_dir, '..', '..', '..'), get_default(:kolla_path), create:"True", type: get_default(:sync_method) admin.vm.synced_folder kolla_ansible_repo_path, get_default(:kolla_ansible_path), create:"True", type: get_default(:sync_method)
admin.vm.synced_folder kolla_repo_path, get_default(:kolla_path), create:"True", type: get_default(:sync_method)
admin.vm.synced_folder File.join(vagrant_dir, 'storage', 'operator'), "/data/host", create:"True", type: get_default(:sync_method) admin.vm.synced_folder File.join(vagrant_dir, 'storage', 'operator'), "/data/host", create:"True", type: get_default(:sync_method)
admin.vm.synced_folder File.join(vagrant_dir, 'storage', 'shared'), "/data/shared", create:"True", type: get_default(:sync_method) admin.vm.synced_folder File.join(vagrant_dir, 'storage', 'shared'), "/data/shared", create:"True", type: get_default(:sync_method)
admin.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true admin.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true
@ -231,7 +247,7 @@ Vagrant.configure(2) do |config|
hostname = "#{node_type}0#{i}" hostname = "#{node_type}0#{i}"
config.vm.define hostname do |node| config.vm.define hostname do |node|
node.vm.hostname = "#{hostname}.local" node.vm.hostname = "#{hostname}.local"
node.vm.provision :shell, path: PROVISION_SCRIPT, args: "#{hostname} multinode #{get_default(:kolla_path)}" node.vm.provision :shell, path: PROVISION_SCRIPT, args: "#{hostname} multinode #{get_default(:kolla_path)} #{get_default(:kolla_ansible_path)}"
node.vm.synced_folder File.join(vagrant_dir, 'storage', node_type), "/data/host", create:"True", type: get_default(:sync_method) node.vm.synced_folder File.join(vagrant_dir, 'storage', node_type), "/data/host", create:"True", type: get_default(:sync_method)
node.vm.synced_folder File.join(vagrant_dir, 'storage', 'shared'), "/data/shared", create:"True", type: get_default(:sync_method) node.vm.synced_folder File.join(vagrant_dir, 'storage', 'shared'), "/data/shared", create:"True", type: get_default(:sync_method)
node.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true node.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true

View File

@ -28,7 +28,8 @@
# bridge_interface: "virbr0", # bridge_interface: "virbr0",
# vagrant_shared_folder: "/home/vagrant/sync", # vagrant_shared_folder: "/home/vagrant/sync",
# sync_method: "nfs", # sync_method: "nfs",
# kolla_path: "/home/vagrant/kolla" # kolla_path: "/home/vagrant/kolla",
# kolla_ansible_path: "/home/vagrant/kolla-ansible"
# } # }
# }, # },
# virtualbox: { # virtualbox: {
@ -37,14 +38,16 @@
# bridge_interface: "wlp3s0b1", # bridge_interface: "wlp3s0b1",
# vagrant_shared_folder: "/home/vagrant/sync", # vagrant_shared_folder: "/home/vagrant/sync",
# sync_method: "virtualbox", # sync_method: "virtualbox",
# kolla_path: "/home/vagrant/kolla" # kolla_path: "/home/vagrant/kolla",
# kolla_ansible_path: "/home/vagrant/kolla-ansible"
# }, # },
# ubuntu: { # ubuntu: {
# base_image: "ubuntu/wily64", # base_image: "ubuntu/wily64",
# bridge_interface: "wlp3s0b1", # bridge_interface: "wlp3s0b1",
# vagrant_shared_folder: "/home/vagrant/sync", # vagrant_shared_folder: "/home/vagrant/sync",
# sync_method: "virtualbox", # sync_method: "virtualbox",
# kolla_path: "/home/vagrant/kolla" # kolla_path: "/home/vagrant/kolla",
# kolla_ansible_path: "/home/vagrant/kolla-ansible"
# } # }
# } # }
# } # }

View File

@ -9,6 +9,7 @@
VM=$1 VM=$1
MODE=$2 MODE=$2
KOLLA_PATH=$3 KOLLA_PATH=$3
KOLLA_ANSIBLE_PATH=$4
export http_proxy= export http_proxy=
export https_proxy= export https_proxy=
@ -168,6 +169,7 @@ function configure_operator {
pip install --upgrade "ansible>=2" python-openstackclient python-neutronclient tox pip install --upgrade "ansible>=2" python-openstackclient python-neutronclient tox
pip install ${KOLLA_ANSIBLE_PATH}
pip install ${KOLLA_PATH} pip install ${KOLLA_PATH}
# Set selinux to permissive # Set selinux to permissive
@ -177,8 +179,9 @@ function configure_operator {
fi fi
tox -c ${KOLLA_PATH}/tox.ini -e genconfig tox -c ${KOLLA_PATH}/tox.ini -e genconfig
cp -r ${KOLLA_PATH}/etc/kolla/ /etc/kolla cp -r ${KOLLA_ANSIBLE_PATH}/etc/kolla/ /etc/kolla
${KOLLA_PATH}/tools/generate_passwords.py cp -r ${KOLLA_PATH}/etc/kolla/* /etc/kolla
${KOLLA_ANSIBLE_PATH}/tools/generate_passwords.py
mkdir -p /usr/share/kolla mkdir -p /usr/share/kolla
chown -R vagrant: /etc/kolla /usr/share/kolla chown -R vagrant: /etc/kolla /usr/share/kolla

View File

@ -92,14 +92,18 @@ correctly. On Fedora 22::
sudo systemctl start libvirtd sudo systemctl start libvirtd
sudo systemctl enable libvirtd sudo systemctl enable libvirtd
Find a location in the system's home directory and checkout the Kolla repo:: Find a location in the system's home directory and checkout Kolla repos::
git clone https://git.openstack.org/openstack/kolla-ansible
git clone https://git.openstack.org/openstack/kolla git clone https://git.openstack.org/openstack/kolla
Both repos must share the same parent directory so the bootstrap code can
locate them.
Developers can now tweak the Vagrantfile or bring up the default **all-in-one** Developers can now tweak the Vagrantfile or bring up the default **all-in-one**
CentOS 7-based environment:: CentOS 7-based environment::
cd kolla/contrib/dev/vagrant && vagrant up cd kolla-ansible/contrib/dev/vagrant && vagrant up
The command ``vagrant status`` provides a quick overview of the VMs composing The command ``vagrant status`` provides a quick overview of the VMs composing
the environment. the environment.