diff --git a/Vagrantfile b/Vagrantfile
index 95cf1d8..f04955b 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -1,15 +1,28 @@
Vagrant.configure("2") do |config|
- config.vm.define :test_vm do |test_vm|
- test_vm.vm.box = "precise64"
- test_vm.vm.network :private_network, :ip=>"10.1.0.11", :libvirt__dhcp_enabled=>false
- test_vm.vm.provider :libvirt do |domain|
+ config.vm.define :compass_vm do |compass_vm|
+ compass_vm.vm.box = "precise64"
+ compass_vm.vm.network :private_network, :ip=>"10.1.0.11", :libvirt__dhcp_enabled=>false
+ compass_vm.vm.provider :libvirt do |domain|
domain.memory = 2048
domain.cpus =2
domain.nested =true
domain.graphics_ip="0.0.0.0"
end
- test_vm.vm.provision "ansible" do |ansible|
+ compass_vm.vm.provision "ansible" do |ansible|
ansible.playbook="install/allinone_nochef.yml"
end
end
+ config.vm.define :regtest_vm do |regtest_vm|
+ regtest_vm.vm.box = "centos65"
+ regtest_vm.vm.network :private_network, :ip=>"10.1.0.253", :libvirt__dhcp_enabled=>false
+ regtest_vm.vm.provider :libvirt do |domain|
+ domain.memory = 1024
+ domain.cpus = 2
+ domain.nested = true
+ domain.graphics_ip="0.0.0.0"
+ end
+ regtest_vm.vm.provision "ansible" do |ansible|
+ ansible.playbook="install/regtest.yml"
+ end
+ end
end
diff --git a/ci/mac_generator.sh b/ci/mac_generator.sh
index c01d890..1ee5ebf 100755
--- a/ci/mac_generator.sh
+++ b/ci/mac_generator.sh
@@ -7,7 +7,7 @@ function mac_address_part() {
}
function mac_address() {
- echo "00:00:$(mac_address_part):$(mac_address_part):$(mac_address_part):$(mac_address_part)"
+ echo "'00:00:$(mac_address_part):$(mac_address_part):$(mac_address_part):$(mac_address_part)'"
}
machines=''
@@ -17,7 +17,7 @@ for i in `seq $1`; do
if [[ -z $machines ]]; then
machines="${mac}"
else
- machines="${machines}, ${mac}"
+ machines="${machines} ${mac}"
fi
done
echo ${machines}
diff --git a/ci/test.sh b/ci/test.sh
new file mode 100644
index 0000000..4a2c53c
--- /dev/null
+++ b/ci/test.sh
@@ -0,0 +1,83 @@
+sudo apt-get update -y
+sudo apt-get install git python-pip python-dev -y
+vagrant_pkg_url=https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.2_x86_64.deb
+wget ${vagrant_pkg_url}
+sudo dpkg -i $(basename ${vagrant_pkg_url})
+sudo apt-get install libxslt-dev libxml2-dev libvirt-dev build-essential qemu-utils qemu-kvm libvirt-bin virtinst -y
+sudo service libvirt-bin restart
+vagrant plugin install vagrant-libvirt
+vagrant plugin install vagrant-mutate
+precise_box_vb_url=https://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box
+precise_box_vb_filename=$(basename ${precise_box_vb_url})
+centos65_box_vb_url=https://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.5-x86_64-v20140504.box
+centos65_box_vb_filename=$(basename ${centos65_box_vb_url})
+wget ${precise_box_vb_url}
+wget ${centos65_box_vb_url}
+mv ${precise_box_vb_filename} precise64.box
+mv ${centos65_box_vb_filename} centos65.box
+vagrant mutate precise64.box libvirt
+vagrant mutate centos65.box libvirt
+sudo pip install ansible
+git clone http://git.openstack.org/stackforge/compass-install
+cd compass-install
+
+function join { local IFS="$1"; shift; echo "$*"; }
+
+if [[ ! -z $VIRT_NUMBER ]]; then
+ mac_array=$(ci/mac_generator.sh $VIRT_NUMBER)
+ mac_list=$(join , $mac_array)
+ echo "pxe_boot_macs: [${mac_list}]" >> install/group_vars/all
+ echo "test: true" >> install/group_vars/all
+fi
+sudo vagrant up compass_vm
+if [[ $? != 0 ]]; then
+ sudo vagrant provision compass_vm
+ if [[ $? != 0 ]]; then
+ echo "provisioning of compass failed"
+ exit 1
+ fi
+fi
+echo "compass is up"
+
+if [[ -n $mac_array ]]
+ echo "bringing up pxe boot vms"
+ i=0
+ for mac in "$mac_array"; do
+ echo "creating vm disk for instance pxe${i}"
+ sudo qemu-img create -f raw /home/pxe${i}.raw ${VIRT_DISK}
+ sudo virt-install --accelerate --hvm --connect qemu:///system \
+ --name pxe$i --ram=$VIRT_MEM --pxe --disk /home/pxe$i.raw,format=raw \
+ --vcpus=$VIRT_CPUS --graphics vnc,listen=0.0.0.0 \
+ --network=bridge:virbr2,mac=$mac \
+ --network=bridge:virbr2
+ --network=bridge:virbr2
+ --network=bridge:virbr2
+ --noautoconsole --autostart --os-type=linux --os-variant=rhel6
+ if [[ $? != 0 ]]; then
+ echo "launching pxe${i} failed"
+ exit 1
+ fi
+ echo "checking pxe${i} state"
+ state=$(virsh domstate pxe${i})
+ if [[ "$state" == "running" ]]; then
+ echo "pxe${i} is running"
+ sudo virsh destroy pxe${i}
+ fi
+ echo "add network boot option and make pxe${i} reboot if failing"
+ sudo sed -i "// a\ " /etc/libvirt/qemu/pxe${i}.xml
+ sudo sed -i "// a\ " /etc/libvirt/qemu/pxe${i}.xml
+ sudo virsh define pxe${i}
+ sudo virsh start pxe${i}
+ let i=i+1
+ done
+fi
+
+sudo vagrant up regtest_vm
+if [[ $? != 0 ]]; then
+ sudo vagrant provision regtest_vm
+ if [[ $? != 0 ]]; then
+ echo "deployment of cluster failed"
+ exit 1
+ fi
+fi
+echo "deployment of cluster complete"
diff --git a/install/allinone_nochef.yml b/install/allinone_nochef.yml
index bef9df8..3ad8e08 100644
--- a/install/allinone_nochef.yml
+++ b/install/allinone_nochef.yml
@@ -1,6 +1,6 @@
---
-- hosts: allinone
+- hosts: compass_vm
sudo: True
roles:
- common
diff --git a/install/group_vars/all b/install/group_vars/all
index f55803c..7663e1c 100644
--- a/install/group_vars/all
+++ b/install/group_vars/all
@@ -5,8 +5,8 @@ rebuild: True
# Auto-generated IP values
chef_server: "10.145.89.139"
-cobbler_server: "10.145.89.139"
-compass-server: "10.145.89.139"
+cobbler_server: "10.1.0.11"
+compass-server: "10.1.0.11"
# Auto-generated
dockerized_cobbler: True
@@ -43,16 +43,16 @@ compass0_router: "192.168.100.1"
compass0_dhcp_range: "192.168.100.150 192.168.100.160"
# management subnet ip of the cluster you want to deploy
-mgmt_subnet_ip: "10.145.88.0"
+mgmt_subnet_ip: "10.1.0.11"
# management subnet router ip
-mgmt_router: "10.145.88.1"
+mgmt_router: "10.1.0.1"
# management subnet subnet mask
-mgmt_subnet_mask: "255.255.254.0"
+mgmt_subnet_mask: "255.255.255.0"
# management subnet dhcp range
-mgmt_dhcp_range: "10.145.88.10 10.145.89.150"
+mgmt_dhcp_range: "10.1.0.100 10.1.0.150"
@@ -171,5 +171,5 @@ docker_apt_key_server: hkp://keyserver.ubuntu.com:80
docker_apt_key: 36A1D7869245C8950F966E92D8576A8BA88D21E9
# pxe boot macs
-pxe_boot_macs: ['00:00:37:ed:95:4e', '00:00:79:ad:ce:6b', '00:00:0a:f6:6e:d7']
-test: true
+#pxe_boot_macs: ['00:00:37:ed:95:4e', '00:00:79:ad:ce:6b', '00:00:0a:f6:6e:d7']
+#test: true
diff --git a/install/regtest.yml b/install/regtest.yml
new file mode 100644
index 0000000..4d88328
--- /dev/null
+++ b/install/regtest.yml
@@ -0,0 +1,45 @@
+---
+
+- hosts: regtest_vm
+ sudo: True
+ roles:
+ - regtest-compass
+# - regtest-ansible-openstack
+ vars:
+ - COMPASS_PATH: "/opt/compass-core"
+ - COMPASS_SERVER_URL: "http://10.1.0.11:5000/api"
+ - COMPASS_USER_EMAIL: "admin@huawei.com"
+ - COMPASS_USER_PASSWORD: "admin"
+ - CLUSTER_NAME: "opnfv"
+ - LANGUAGE: "EN"
+ - TIMEZONE: "America/Los_Angeles"
+ - HOSTNAMES: "allinone"
+ - NTP_SERVER: "10.1.0.11"
+ - NAMESERVERS: "10.1.0.11"
+ - DOMAIN: "ods.com"
+ - PARTITIONS: "/home=5%,/tmp=5%,/var=20%"
+ - SUBNETS: "10.1.0.0/24,172.16.2.0/24,172.16.3.0/24,172.16.4.0/24"
+ - ADAPTER_OS_PATTERN: '"(?i)ubuntu-14\.04.*"'
+ - ADAPTER_NAME: "os_only"
+ - ADAPTER_TARGET_SYSTEM_PATTERN: ""
+ - ADAPTER_FLAVOR_PATTERN: ""
+ - PROXY: ""
+ - IGNORE_PROXY: ""
+ - SEARCH_PATH: "ods.com"
+ - GATEWAY: "10.1.0.1"
+ - SERVER_CREDENTIAL: "root"
+ - LOCAL_REPO_URL: ""
+ - OS_CONFIG_FILENAME: ""
+ - SERVICE_CREDENTIALS: "service"
+ - CONSOLE_CREDENTIALS: "console"
+ - HOST_NETWORKS: "allinone:eth0=10.1.0.100|is_mgmt,eth1=172.16.2.100,eth2=172.16.3.100,eth3=172.16.4.100"
+ - NETWORK_MAPPING: "management=eth0,tenant=eth1,storage=eth3,external=eth2"
+ - PACKAGE_CONFIG_FILENAME: ""
+ - HOST_ROLES: ""
+ - DEFAULT_ROLES: ""
+ - SWITCH_IPS: "1.1.1.1"
+ - MACHINES: ""
+ - SWITCH_CREDENTIAL: "version=2c,community=public"
+ - DEPLOYMENT_TIMEOUT: "90"
+ - POLL_SWITCHES_FLAG: "nopoll_switches"
+ - DASHBOARD_URL: ""
diff --git a/install/roles/cobbler/tasks/docker.yml b/install/roles/cobbler/tasks/docker.yml
index 02235db..be94503 100644
--- a/install/roles/cobbler/tasks/docker.yml
+++ b/install/roles/cobbler/tasks/docker.yml
@@ -108,6 +108,8 @@
- name: fork image and run a new cobbler container
shell: docker run --name=cobbler-dev -d {{ cobbler_port_mapping }} {{ image_volume_mapping }} -i -t cobbler
+ notify:
+ restart dhcp-relay
- name: extract cobbler ip info
shell: echo `docker inspect cobbler-dev | awk -F '"' '/IPAdd/ {print $4}'` > /tmp/ip
diff --git a/install/roles/regtest-compass/files/setting b/install/roles/regtest-compass/files/setting
new file mode 100644
index 0000000..1ac04da
--- /dev/null
+++ b/install/roles/regtest-compass/files/setting
@@ -0,0 +1,5 @@
+DEFAULT_LOGLEVEL = 'info'
+DEFAULT_LOGDIR = '/var/log/compass'
+DEFAULT_LOGINTERVAL = 6
+DEFAULT_LOGINTERVAL_UNIT = 'h'
+DEFAULT_LOGFORMAT = '%(asctime)s - %(filename)s - %(lineno)d - %(levelname)s - %(message)s'
diff --git a/install/roles/regtest-compass/tasks/main.yml b/install/roles/regtest-compass/tasks/main.yml
new file mode 100644
index 0000000..f5812e8
--- /dev/null
+++ b/install/roles/regtest-compass/tasks/main.yml
@@ -0,0 +1,45 @@
+---
+
+- name: install essentials
+ yum: name={{ item }} state=present
+ with_items:
+ - git
+ - python-setuptools
+ - python-devel
+ - mysql-devel
+
+- name: install pip
+ easy_install: name=pip
+
+- name: install virtualenv
+ pip: name=virtualenv
+
+- name: cloning compass-core
+ git: repo=http://git.openstack.org/stackforge/compass-core.git
+ dest={{ COMPASS_PATH }}
+ version=dev/experimental
+
+- name: pip install compass into virtualenv
+ pip: name={{ COMPASS_PATH }} virtualenv={{ COMPASS_PATH }}/venv
+
+- name: write compass setting file
+ copy: src=setting dest=/etc/compass/setting
+
+- name: create log dir
+ file: path=/var/log/compass state=directory
+
+- name: write python home into switch virtualenv
+ lineinfile: dest={{ COMPASS_PATH }}/bin/switch_virtualenv.py.template
+ regexp="^virtual\_env\ \=\ \'\$PythonHome\'"
+ line="virtual_env = '/opt/compass-core/venv'"
+
+- name: rename switch_virtualenv template
+ command: mv {{ COMPASS_PATH }}/bin/switch_virtualenv.py.template {{ COMPASS_PATH }}/bin/switch_virtualenv.py
+
+- name: copy client script
+ template: src=client.sh.j2 dest=/opt/client.sh mode=0755
+
+- name: initiate deployment
+ shell: /opt/client.sh > /var/log/regtest.log
+ async: 360
+ poll: 60
diff --git a/install/roles/regtest-compass/templates/client.sh.j2 b/install/roles/regtest-compass/templates/client.sh.j2
new file mode 100644
index 0000000..2aebccd
--- /dev/null
+++ b/install/roles/regtest-compass/templates/client.sh.j2
@@ -0,0 +1,17 @@
+{{ COMPASS_PATH }}/bin/client.py --logfile= --loglevel=debug --logdir= --compass_server={{ COMPASS_SERVER_URL }} \
+--compass_user_email={{ COMPASS_USER_EMAIL }} --compass_user_password={{ COMPASS_USER_PASSWORD }} \
+--cluster_name={{ CLUSTER_NAME }} --language={{ LANGUAGE }} --timezone={{ TIMEZONE }} \
+--hostnames={{ HOSTNAMES }} --partitions={{ PARTITIONS }} --subnets={{ SUBNETS }} \
+--adapter_os_pattern={{ ADAPTER_OS_PATTERN }} --adapter_name={{ ADAPTER_NAME }} \
+--adapter_target_system_pattern={{ ADAPTER_TARGET_SYSTEM_PATTERN }} \
+--adapter_flavor_pattern={{ ADAPTER_FLAVOR_PATTERN }} \
+--http_proxy={{ PROXY }} --https_proxy={{ PROXY }} --no_proxy={{ IGNORE_PROXY }} \
+--ntp_server={{ NTP_SERVER }} --dns_servers={{ NAMESERVERS }} --domain={{ DOMAIN }} \
+--search_path={{ SEARCH_PATH }} --default_gateway={{ GATEWAY }} \
+--server_credential={{ SERVER_CREDENTIAL }} --local_repo_url={{ LOCAL_REPO_URL }} \
+--os_config_json_file={{ OS_CONFIG_FILENAME }} --service_credentials={{ SERVICE_CREDENTIALS }} \
+--console_credentials={{ CONSOLE_CREDENTIALS }} --host_networks={{ HOST_NETWORKS }} \
+--network_mapping={{ NETWORK_MAPPING }} --package_config_json_file={{ PACKAGE_CONFIG_FILENAME }} \
+--host_roles={{ HOST_ROLES }} --default_roles={{ DEFAULT_ROLES }} --switch_ips={{ SWITCH_IPS }} \
+--machines={{ pxe_boot_macs |join(',') }} --switch_credential={{ SWITCH_CREDENTIAL }} \
+--deployment_timeout={{ DEPLOYMENT_TIMEOUT }} --${POLL_SWITCHES_FLAG} --dashboard_url={{ DASHBOARD_URL }}