diff options
author | Pawel Wieczorek <p.wieczorek2@samsung.com> | 2020-06-15 16:29:35 +0200 |
---|---|---|
committer | Bartek Grzybowski <b.grzybowski@partner.samsung.com> | 2020-07-30 09:02:56 +0000 |
commit | a879e2a54e0641b692202d417021f1824032b123 (patch) | |
tree | bfd772a87544023cbe0315eebaa69d1fcaac6256 /deployment/noheat/infra-openstack/vagrant | |
parent | 3d9bd5abfcb9bf55e3dd1b53cb3b6bc4bd45c0d1 (diff) |
Add Ansible roles for OpenStack network
This patch also adds Vagrant provisioners for creating and destroying
OpenStack infrastructure. These are set to never run (unless explicitly
called by the operator) because DevStack instance on a separate machine
might not be ready to provide OpenStack API.
This patch is based on previous work by:
Krzysztof Opasiak <k.opasiak@samsung.com>
Test harness is based on blog post [1] by:
Chris Morgan <me@chrismorgan.info>
[1] https://chrismorgan.info/blog/make-and-git-diff-test-harness
Issue-ID: INT-1601
Change-Id: I031ca7a5a43cca0258dc0dc9e0339182c431898a
Signed-off-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
Diffstat (limited to 'deployment/noheat/infra-openstack/vagrant')
11 files changed, 114 insertions, 1 deletions
diff --git a/deployment/noheat/infra-openstack/vagrant/Vagrantfile b/deployment/noheat/infra-openstack/vagrant/Vagrantfile index f797675ae..c3b5d9819 100644 --- a/deployment/noheat/infra-openstack/vagrant/Vagrantfile +++ b/deployment/noheat/infra-openstack/vagrant/Vagrantfile @@ -1,6 +1,8 @@ # -*- mode: ruby -*- # -*- coding: utf-8 -*- +host_folder_ansible = "../ansible" +synced_folder_ansible = "/ansible" synced_folder_main = "/vagrant" synced_folder_config = "#{synced_folder_main}/config" os_config = "#{synced_folder_config}/local.conf" @@ -33,6 +35,8 @@ devstack = { all = [] << operation << devstack +operation_post_msg = "Run: \"vagrant provision #{operation[:name]} --provision-with=run_playbook_create\" to complete infrastructure deployment" + $enable_ipv6 = <<-SCRIPT sed -i'' 's/net.ipv6.conf.all.disable_ipv6.*$/net.ipv6.conf.all.disable_ipv6 = 0/' /etc/sysctl.conf sysctl -p @@ -53,7 +57,7 @@ $setup_py = <<-SCRIPT curl -fsSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo -H python3 get-pip.py - pip install python-openstackclient + pip install ansible python-openstackclient mkdir -p #{os_clouds_dir} SCRIPT @@ -64,6 +68,13 @@ $link_file = <<-SCRIPT ln -sf "$src" "$dst" SCRIPT +$run_playbook = <<-SCRIPT + PLAYBOOK="$1" + export OS_CLOUD=openstack + cd #{synced_folder_ansible} + ansible-playbook "$PLAYBOOK" +SCRIPT + Vagrant.configure("2") do |config| all.each do |machine| config.vm.define machine[:name] do |config| @@ -95,6 +106,7 @@ Vagrant.configure("2") do |config| if machine[:name] == 'operator' config.vm.synced_folder ".", synced_folder_main, type: "rsync", rsync__exclude: "Vagrantfile" + config.vm.synced_folder host_folder_ansible, synced_folder_ansible, type: "rsync" config.vm.provision "setup_openstacksdk", type: :shell, privileged: false, inline: $setup_py config.vm.provision "link_os_clouds", type: :shell, run: "always" do |s| @@ -102,6 +114,18 @@ Vagrant.configure("2") do |config| s.inline = $link_file s.args = [os_clouds, os_clouds_dir] end + + config.vm.post_up_message = operation_post_msg + config.vm.provision "run_playbook_create", type: :shell, run: "never" do |s| + s.privileged = false + s.inline = $run_playbook + s.args = "create.yml" + end + config.vm.provision "run_playbook_destroy", type: :shell, run: "never" do |s| + s.privileged = false + s.inline = $run_playbook + s.args = "destroy.yml" + end end end end diff --git a/deployment/noheat/infra-openstack/vagrant/config/clouds.yaml b/deployment/noheat/infra-openstack/vagrant/config/clouds.yaml index 6dab24a35..2763c896e 100644 --- a/deployment/noheat/infra-openstack/vagrant/config/clouds.yaml +++ b/deployment/noheat/infra-openstack/vagrant/config/clouds.yaml @@ -5,6 +5,7 @@ clouds: username: "demo" password: "default123456!" project_name: "demo" + project_domain_name: "Default" user_domain_name: "Default" region_name: "RegionOne" interface: "public" diff --git a/deployment/noheat/infra-openstack/vagrant/test/Makefile b/deployment/noheat/infra-openstack/vagrant/test/Makefile new file mode 100644 index 000000000..403263dfc --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/Makefile @@ -0,0 +1,12 @@ +rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $2,$d)) + +.PHONY: test +test: $(patsubst %.test,%.stdout,$(call rwildcard,,%.test)) + +%.stdout: %.test + ./$< > $@ 2> $(patsubst %.stdout,%.stderr,$@) \ + || (touch --date=@0 $@; false) + git diff --exit-code --src-prefix=expected/ --dst-prefix=actual/ \ + $@ $(patsubst %.stdout,%.stderr,$@) \ + || (touch --date=@0 $@; false) + diff --git a/deployment/noheat/infra-openstack/vagrant/test/README b/deployment/noheat/infra-openstack/vagrant/test/README new file mode 100644 index 000000000..36cf36f38 --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/README @@ -0,0 +1,31 @@ +============================== + Vagrant: simple test harness +============================== + +Use ``make`` and ``git diff`` for a simple test harness for Vagrant-based environment. + +Prerequisites +------------- + +Dependencies +~~~~~~~~~~~~ + +- make +- git + + +Running +------- + +Command +~~~~~~~ + +.. code-block:: shell + + $ make test + + +Credit +------ + +This is based on https://chrismorgan.info/blog/make-and-git-diff-test-harness blog post. diff --git a/deployment/noheat/infra-openstack/vagrant/test/README.rst b/deployment/noheat/infra-openstack/vagrant/test/README.rst new file mode 120000 index 000000000..100b93820 --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/README.rst @@ -0,0 +1 @@ +README
\ No newline at end of file diff --git a/deployment/noheat/infra-openstack/vagrant/test/create_network.stderr b/deployment/noheat/infra-openstack/vagrant/test/create_network.stderr new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/create_network.stderr diff --git a/deployment/noheat/infra-openstack/vagrant/test/create_network.stdout b/deployment/noheat/infra-openstack/vagrant/test/create_network.stdout new file mode 100644 index 000000000..363825389 --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/create_network.stdout @@ -0,0 +1 @@ +"onap_ci_lab" diff --git a/deployment/noheat/infra-openstack/vagrant/test/create_network.test b/deployment/noheat/infra-openstack/vagrant/test/create_network.test new file mode 100755 index 000000000..7124f707e --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/create_network.test @@ -0,0 +1,21 @@ +#!/bin/sh + +export NETWORK_NAME='onap_ci_lab' + +export VAGRANT_CWD='..' + +set_up() { + vagrant up --provision-with=run_playbook_destroy + vagrant up --provision-with=run_playbook_create +} + +check() { + local net="$1" + vagrant ssh operator --no-tty -c \ + "export OS_CLOUD=openstack; openstack network list -fcsv" \ + | grep "$net" \ + | cut -d',' -f2 +} + +set_up >/dev/null # drop provisioning output +check "$NETWORK_NAME" diff --git a/deployment/noheat/infra-openstack/vagrant/test/destroy_network.stderr b/deployment/noheat/infra-openstack/vagrant/test/destroy_network.stderr new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/destroy_network.stderr diff --git a/deployment/noheat/infra-openstack/vagrant/test/destroy_network.stdout b/deployment/noheat/infra-openstack/vagrant/test/destroy_network.stdout new file mode 100644 index 000000000..d48081495 --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/destroy_network.stdout @@ -0,0 +1 @@ +Network onap_ci_lab not found. diff --git a/deployment/noheat/infra-openstack/vagrant/test/destroy_network.test b/deployment/noheat/infra-openstack/vagrant/test/destroy_network.test new file mode 100755 index 000000000..173b3ecca --- /dev/null +++ b/deployment/noheat/infra-openstack/vagrant/test/destroy_network.test @@ -0,0 +1,21 @@ +#!/bin/sh + +export NETWORK_NAME='onap_ci_lab' + +export VAGRANT_CWD='..' + +set_up() { + vagrant up --provision-with=run_playbook_create + vagrant up --provision-with=run_playbook_destroy +} + +check() { + local net="$1" + vagrant ssh operator --no-tty -c \ + "export OS_CLOUD=openstack; openstack network list -fcsv" \ + | grep "$net" \ + || echo "Network ${net} not found." +} + +set_up >/dev/null # drop provisioning output +check "$NETWORK_NAME" |