CORD-1729 Support "localhost" as build node for full POD / CiaB
Change-Id: I406393b5594799f60eab83a2e3a1910f6974fc87
diff --git a/Makefile b/Makefile
index 2b35556..880c11f 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@
M ?= $(BUILD)/milestones
LOGS ?= $(BUILD)/logs
-PREP_MS ?= $(M)/prereqs-check $(M)/vagrant-up $(M)/copy-cord $(M)/cord-config $(M)/copy-config $(M)/prep-buildnode $(M)/prep-headnode $(M)/deploy-elasticstack $(M)/prep-computenode
+PREP_MS ?= $(M)/prereqs-check $(M)/build-local-bootstrap $(M)/vagrant-up $(M)/copy-cord $(M)/cord-config $(M)/copy-config $(M)/prep-buildnode $(M)/prep-headnode $(M)/deploy-elasticstack $(M)/prep-computenode
MAAS_MS ?= $(M)/build-maas-images $(M)/maas-prime $(M)/publish-maas-images $(M)/deploy-maas
OPENSTACK_MS ?= $(M)/glance-images $(M)/deploy-openstack $(M)/deploy-computenode $(M)/onboard-openstack
XOS_MS ?= $(M)/docker-images $(M)/core-image $(M)/publish-docker-images $(M)/start-xos $(M)/onboard-profile
@@ -153,6 +153,7 @@
START_XOS_PREREQS ?=
DEPLOY_ONOS_PREREQS ?=
DEPLOY_OPENSTACK_PREREQS ?=
+DEPLOY_MAVENREPO_PREREQS ?=
SETUP_AUTOMATION_PREREQS ?=
# == MILESTONES == #
@@ -163,6 +164,10 @@
$(ANSIBLE_PB) $(PI)/prereqs-check-playbook.yml $(LOGCMD)
touch $@
+$(M)/build-local-bootstrap:
+ $(ANSIBLE_PB) $(BUILD)/ansible/build-local-bootstrap.yml $(LOGCMD)
+ touch $@
+
$(M)/vagrant-up: | $(VAGRANT_UP_PREREQS)
$(VAGRANT) up $(VAGRANT_VMS) --provider $(VAGRANT_PROVIDER) $(LOGCMD)
@echo "Configuring SSH for VM's..."
@@ -203,7 +208,7 @@
# MaaS targets
$(M)/build-maas-images: | $(M)/prep-buildnode $(BUILD_MAAS_IMAGES_PREREQS)
- $(SSH_BUILD) "cd $(BUILD_CORD_DIR)/build/maas; make MAKE_CONFIG=../$(MAKEFILE_CONFIG) build" $(LOGCMD)
+ $(SSH_BUILD) "cd $(BUILD_CORD_DIR)/build/maas; rm -f consul.image; make MAKE_CONFIG=../$(MAKEFILE_CONFIG) build" $(LOGCMD)
touch $@
$(M)/maas-prime: | $(M)/deploy-elasticstack
@@ -221,14 +226,14 @@
# ONOS targets
$(M)/build-onos-apps: | $(M)/prep-buildnode $(BUILD_ONOS_APPS_PREREQS)
- $(SSH_BUILD) "cd $(BUILD_CORD_DIR)/onos-apps; make MAKE_CONFIG=../$(MAKEFILE_CONFIG) build" $(LOGCMD)
+ $(SSH_BUILD) "cd $(BUILD_CORD_DIR)/onos-apps; make MAKE_CONFIG=../build/$(MAKEFILE_CONFIG) build" $(LOGCMD)
touch $@
$(M)/publish-onos-apps: | $(M)/maas-prime $(M)/build-onos-apps
- $(SSH_BUILD) "cd $(BUILD_CORD_DIR)/onos-apps; make MAKE_CONFIG=../$(MAKEFILE_CONFIG) publish" $(LOGCMD)
+ $(SSH_BUILD) "cd $(BUILD_CORD_DIR)/onos-apps; make MAKE_CONFIG=../build/$(MAKEFILE_CONFIG) publish" $(LOGCMD)
touch $@
-$(M)/deploy-mavenrepo: | $(M)/publish-onos-apps
+$(M)/deploy-mavenrepo: | $(M)/publish-onos-apps $(DEPLOY_MAVENREPO_PREREQS)
$(ANSIBLE_PB) $(PI)/deploy-mavenrepo-playbook.yml $(LOGCMD)
touch $@
diff --git a/ansible/build-local-bootstrap.yml b/ansible/build-local-bootstrap.yml
new file mode 100644
index 0000000..7e9d743
--- /dev/null
+++ b/ansible/build-local-bootstrap.yml
@@ -0,0 +1,19 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- hosts: localhost
+ become: no
+ roles:
+ - build-local-bootstrap
diff --git a/ansible/roles/build-local-bootstrap/defaults/main.yml b/ansible/roles/build-local-bootstrap/defaults/main.yml
new file mode 100644
index 0000000..4e4b046
--- /dev/null
+++ b/ansible/roles/build-local-bootstrap/defaults/main.yml
@@ -0,0 +1,16 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+config_cord_dir: /opt/cord
+config_cord_profile_dir: /opt/cord_profile
diff --git a/ansible/roles/build-local-bootstrap/tasks/main.yml b/ansible/roles/build-local-bootstrap/tasks/main.yml
new file mode 100644
index 0000000..c94099a
--- /dev/null
+++ b/ansible/roles/build-local-bootstrap/tasks/main.yml
@@ -0,0 +1,45 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+---
+
+- name: Ensure /opt/cord and /opt/cord_profile sym links
+ become: yes
+ file:
+ src: "{{ item.src }}"
+ dest: "{{ item.dest }}"
+ state: link
+ force: yes
+ with_items:
+ - { dest: '/opt/cord', src: '{{ config_cord_dir }}' }
+ - { dest: '/opt/cord_profile', src: '{{ config_cord_profile_dir }}' }
+
+- name: Ensure SSH keypair exists for Ansible login user
+ user:
+ name: "{{ ansible_user_id }}"
+ generate_ssh_key: yes
+ ssh_key_bits: 2048
+ ssh_key_type: rsa
+
+- name: Get public key for Ansible login user
+ slurp:
+ src: "{{ ansible_env.HOME }}/.ssh/id_rsa.pub"
+ register: pubkey
+
+- name: Ensure public key in authorized_keys
+ authorized_key:
+ user: "{{ ansible_user_id }}"
+ state: present
+ key: "{{ pubkey['content'] | b64decode }}"
+
diff --git a/ansible/roles/genconfig/templates/config.mk.j2 b/ansible/roles/genconfig/templates/config.mk.j2
index 7e4aeab..ef2351b 100644
--- a/ansible/roles/genconfig/templates/config.mk.j2
+++ b/ansible/roles/genconfig/templates/config.mk.j2
@@ -20,9 +20,6 @@
# ** DO NOT EDIT THIS FILE MANUALLY! **
# Edit the Pod Config (or Scenario) and rerun `make config` to regenerate it
-# Needed for MaaS, not settable
-DOCKER_REGISTRY = docker-registry:5000
-
# Scenario specific config
{% if vagrant_vms is defined %}
VAGRANT_VMS = {{ vagrant_vms | join(' ') }}
@@ -35,9 +32,8 @@
{% endif %}
{% if deploy_docker_registry is defined %}
DEPLOY_DOCKER_REGISTRY = {{ deploy_docker_registry }}
-{% endif %}
-{% if deploy_docker_tag is defined %}
-DEPLOY_DOCKER_TAG = {{ deploy_docker_tag }}
+# For MAAS
+DOCKER_REGISTRY = {{ deploy_docker_registry }}
{% endif %}
{% if deploy_docker_tag is defined %}
DEPLOY_DOCKER_TAG = {{ deploy_docker_tag }}
@@ -80,6 +76,9 @@
{% if deploy_onos_prereqs is defined %}
DEPLOY_ONOS_PREREQS = $(M)/{{ deploy_onos_prereqs | join(" $(M)/") }}
{% endif %}
+{% if deploy_mavenrepo_prereqs is defined %}
+DEPLOY_MAVENREPO_PREREQS = $(M)/{{ deploy_mavenrepo_prereqs | join(" $(M)/") }}
+{% endif %}
{% if deploy_openstack_prereqs is defined %}
DEPLOY_OPENSTACK_PREREQS = $(M)/{{ deploy_openstack_prereqs | join(" $(M)/") }}
{% endif %}
diff --git a/podconfig/rcord-virtual-buildlocal.yml b/podconfig/rcord-virtual-buildlocal.yml
new file mode 100644
index 0000000..2f6599d
--- /dev/null
+++ b/podconfig/rcord-virtual-buildlocal.yml
@@ -0,0 +1,49 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+---
+# rcord-virtual Pod Config
+# Creates a virtual multi-node R-CORD pod, aka "rcord-in-a-box"
+# Uses the local server as the "build host", assumes Ubuntu 14.04 server
+
+cord_scenario: cord
+cord_profile: rcord
+
+buildnode: localhost
+
+prep_buildnode_prereqs:
+ - build-local-bootstrap
+
+# Override setting in scenarios/cord/config.yml with noop
+docker_image_prereqs:
+ - prep-buildnode
+
+docker_opts: "--insecure-registry 10.100.198.201:5000"
+
+inventory_groups:
+
+ config:
+ localhost:
+ ansible_connection: local
+
+ build:
+ localhost:
+ ansible_connection: local
+
+ head:
+ head1:
+
+ compute:
diff --git a/scenarios/cord/config.yml b/scenarios/cord/config.yml
index f3587b5..de61523 100644
--- a/scenarios/cord/config.yml
+++ b/scenarios/cord/config.yml
@@ -31,7 +31,7 @@
headnode: head1
# docker config
-deploy_docker_registry: "docker-registry:5000" # IP address of head node giving errors
+deploy_docker_registry: "10.100.198.201:5000" # IP address of head node giving errors
deploy_docker_tag: "candidate"
pull_docker_registry: "docker-registry:5000/"
pull_docker_tag: "candidate"
@@ -98,6 +98,9 @@
- deploy-maas
- deploy-mavenrepo
+deploy_mavenrepo_prereqs:
+ - deploy-maas
+
setup_automation_prereqs:
- deploy-openstack
diff --git a/scripts/imagebuilder.py b/scripts/imagebuilder.py
index 1c94f88..3bc4947 100755
--- a/scripts/imagebuilder.py
+++ b/scripts/imagebuilder.py
@@ -828,6 +828,7 @@
self.preexisting.append({
'id': pe_image['Id'],
'tags': raw_tags,
+ 'base': image.name.split(":")[0],
})
image.image_id = pe_image['Id']