From 8b3112d287a803b19d068d661fa9a2f1c25c2e75 Mon Sep 17 00:00:00 2001 From: Aleksandr Didenko Date: Thu, 7 Jul 2016 19:30:36 +0200 Subject: [PATCH] Switch to using upstream fuel-ccp project --- .gitignore | 1 + Vagrantfile | 6 +++ bootstrap-master.sh | 2 +- ccp/ccp-build.sh | 94 --------------------------------------- ccp/ccp-deploy.sh | 49 -------------------- ccp/ccp-pull.sh | 92 -------------------------------------- ccp/ccp.conf | 16 +++++++ ccp/deploy-config.yaml | 4 +- ccp/patch1 | 28 ------------ playbooks/ccp-build.yaml | 54 +++++++++++++--------- playbooks/ccp-deploy.yaml | 11 +++-- 11 files changed, 68 insertions(+), 289 deletions(-) delete mode 100755 ccp/ccp-build.sh delete mode 100755 ccp/ccp-deploy.sh delete mode 100755 ccp/ccp-pull.sh create mode 100644 ccp/ccp.conf delete mode 100644 ccp/patch1 diff --git a/.gitignore b/.gitignore index 9ebb5ec7a..6c8105c06 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ ssh +nodes diff --git a/Vagrantfile b/Vagrantfile index 2fcdbfcc3..dc25c9914 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -89,6 +89,12 @@ Vagrant.configure("2") do |config| :libvirt__network_name => "#{$instance_name_prefix}-private", :libvirt__dhcp_enabled => false, :libvirt__forward_mode => "none" + # "neutron" isolated network + test_vm.vm.network :private_network, + :model_type => "e1000", + :libvirt__network_name => "#{$instance_name_prefix}-neutron", + :libvirt__dhcp_enabled => false, + :libvirt__forward_mode => "none" # Provisioning config.vm.provision "file", source: "ssh", destination: "~/ssh" diff --git a/bootstrap-master.sh b/bootstrap-master.sh index fdbc9808f..6b7e83a2b 100755 --- a/bootstrap-master.sh +++ b/bootstrap-master.sh @@ -24,5 +24,5 @@ kargo --version || ( test -f ./nodes || cp /var/tmp/nodes ./nodes # Either pull or copy microservices repos -cp -a /var/tmp/microservices* ./ccp/ +cp -a /var/tmp/microservices* ./ccp/ || touch /var/tmp/ccp-download diff --git a/ccp/ccp-build.sh b/ccp/ccp-build.sh deleted file mode 100755 index 9fbddace6..000000000 --- a/ccp/ccp-build.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/bash - -set -e - -PREBUILT="$1" - -create_mcp_conf() { - echo "Create mcp config" - cat > /root/mcp.conf << EOF -[builder] -push = True - -[registry] -address = "127.0.0.1:31500" - -[kubernetes] -environment = "openstack" - -[repositories] -skip_empty = True -EOF -} - -create_mirantis_mcp_conf() { - echo "Create mcp config" - cat > /root/mcp.conf << EOF -[builder] -push = False - -[registry] -address = "registry01-bud.ng.mirantis.net" -insecure = True - -[images] -namespace = "nextgen" - -[kubernetes] -environment = "openstack" - -[repositories] -skip_empty = True -EOF -} - -create_resolvconf() { - DNS_IP=`kubectl get service/kubedns --namespace=kube-system --template={{.spec.clusterIP}}` - cat > /root/resolv.conf << EOF -search openstack.svc.cluster.local svc.cluster.local cluster.local default.svc.cluster.local svc.cluster.local cluster.local -nameserver $DNS_IP -options attempts:2 -options ndots:5 -EOF -} - -create_registry() { - if kubectl get pods | grep registry ; then - echo "Registry is already running" - else - echo "Create registry" - kubectl create -f registry_pod.yaml - kubectl create -f registry_svc.yaml - fi -} - -build_images() { - echo "Waiting for registry to start..." - while true - do - STATUS=$(kubectl get pod | awk '/registry/ {print $3}') - if [ "$STATUS" == "Running" ] - then - break - fi - sleep 1 - done - mcp-microservices --config-file /root/mcp.conf build &> /var/log/mcp-build.log -} - -hack_images() { - # useless, but let's keep it just in case we need to hack something else - for dir in ~/microservices-repos/ms-*/docker/* ; do - cp /root/resolv.conf $dir/ - sed '/MAINTAINER/a COPY resolv.conf /var/tmp/resolv.conf' -i $dir/Dockerfile.j2 - done -} - -create_registry - -if [ -n "$PREBUILT" ]; then - create_mirantis_mcp_conf -else - create_mcp_conf - build_images -fi diff --git a/ccp/ccp-deploy.sh b/ccp/ccp-deploy.sh deleted file mode 100755 index 34f4f3d6b..000000000 --- a/ccp/ccp-deploy.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -set -e - -# FIXME: hardcoded roles -declare -A nodes -nodes=( \ -["node2"]="openstack-controller=true" -["node3"]="openstack-controller=true" -["node4"]="openstack-controller=true" -["node5"]="openstack-compute=true" -["node6"]="openstack-compute=true" -["node7"]="openstack-compute=true" -) - -create_network_conf() { - if [ -f /root/cluster-topology.yaml ] ; then - echo "/root/cluster-topology.yaml already exists" - else - kubectl get nodes -o go-template='{{range .items}}{{range .status.addresses}}{{if or (eq .type "ExternalIP") (eq .type "LegacyHostIP")}}{{.address}}{{print "\n"}}{{end}}{{end}}{{end}}'> /tmp/nodes - ( echo "network:"; i=2; for ip in `cat /tmp/nodes `; do echo -e " node$i:\n private:\n address: $ip"; i=$(( i+=1 )) ; done ) > /root/cluster-topology.yaml - fi -} - -assign_node_roles() { - all_label='openstack-compute-controller=true' - for i in "${!nodes[@]}" - do - node=$i - label=${nodes[$i]} - kubectl get nodes $node --show-labels | grep -q "$label" || kubectl label nodes $node $label - kubectl get nodes $node --show-labels | grep -q "$all_label" || kubectl label nodes $node $all_label - done -} - -delete_namespace() { - if kubectl get namespace | grep -q ^openstack ; then - kubectl delete namespace openstack && while kubectl get namespace | grep -q ^openstack ; do sleep 5; done - fi -} - -deploy_microservices() { - mcp-microservices --config-file=/root/mcp.conf --deploy-config=deploy-config.yaml deploy &> /var/log/mcp-deploy.log -} - -create_network_conf -assign_node_roles -delete_namespace -deploy_microservices diff --git a/ccp/ccp-pull.sh b/ccp/ccp-pull.sh deleted file mode 100755 index ccae6acee..000000000 --- a/ccp/ccp-pull.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/bash - -set -e - -GERRIT_USER=${1:-$USER} -LOCAL_REPO="microservices-repos" -PROTO="ssh://$GERRIT_USER@" -REMOTE_REPOS=" -review.fuel-infra.org:29418/nextgen/ms-aodh -review.fuel-infra.org:29418/nextgen/ms-ceilometer -review.fuel-infra.org:29418/nextgen/ms-ceph -review.fuel-infra.org:29418/nextgen/ms-cinder -review.fuel-infra.org:29418/nextgen/ms-debian-base -review.fuel-infra.org:29418/nextgen/ms-designate -review.fuel-infra.org:29418/nextgen/ms-elasticsearch -review.fuel-infra.org:29418/nextgen/ms-ext-config -review.fuel-infra.org:29418/nextgen/ms-glance -review.fuel-infra.org:29418/nextgen/ms-grafana -review.fuel-infra.org:29418/nextgen/ms-heat -review.fuel-infra.org:29418/nextgen/ms-horizon -review.fuel-infra.org:29418/nextgen/ms-influxdb -review.fuel-infra.org:29418/nextgen/ms-ironic -review.fuel-infra.org:29418/nextgen/ms-keystone -review.fuel-infra.org:29418/nextgen/ms-kibana -review.fuel-infra.org:29418/nextgen/ms-lma -review.fuel-infra.org:29418/nextgen/ms-magnum -review.fuel-infra.org:29418/nextgen/ms-manila -review.fuel-infra.org:29418/nextgen/ms-mariadb -review.fuel-infra.org:29418/nextgen/ms-memcached -review.fuel-infra.org:29418/nextgen/ms-mistral -review.fuel-infra.org:29418/nextgen/ms-mongodb -review.fuel-infra.org:29418/nextgen/ms-murano -review.fuel-infra.org:29418/nextgen/ms-neutron -review.fuel-infra.org:29418/nextgen/ms-nova -review.fuel-infra.org:29418/nextgen/ms-openstack-base -review.fuel-infra.org:29418/nextgen/ms-openvswitch -review.fuel-infra.org:29418/nextgen/ms-rabbitmq -review.fuel-infra.org:29418/nextgen/ms-sahara -review.fuel-infra.org:29418/nextgen/ms-swift -review.fuel-infra.org:29418/nextgen/ms-tempest -review.fuel-infra.org:29418/nextgen/ms-toolbox -review.fuel-infra.org:29418/nextgen/ms-trove -review.fuel-infra.org:29418/nextgen/ms-zaqar -" - -cleanup() { - mkdir -p $LOCAL_REPO - rm -rf $LOCAL_REPO/ms-* - rm -rf microservices -} - -fetch_mcp() { - git clone "${PROTO}review.fuel-infra.org:29418/nextgen/microservices" -# pushd microservices -# git review -d 22660 -# popd -} - -fetch_repos() { - pushd $LOCAL_REPO - for remote in $REMOTE_REPOS ; do - git clone "${PROTO}${remote}" - done - popd -} - -fetch_app_def() { - echo "Fetch app-def repos" - neutron=21886 - ovs=21951 - nova=21871 - - cd $LOCAL_REPO - - cd ms-neutron - git review -d $neutron - cd - - cd ms-openvswitch - git review -d $ovs - cd - - cd ms-nova - git review -d $nova - cd - -} - -cleanup -fetch_mcp -fetch_repos - -#fetch_app_def - -echo "Microservices pull is complete" diff --git a/ccp/ccp.conf b/ccp/ccp.conf new file mode 100644 index 000000000..268ed3761 --- /dev/null +++ b/ccp/ccp.conf @@ -0,0 +1,16 @@ +[DEFAULT] +deploy_config = /root/ccp/deploy-config.yaml + +[builder] +push = True + +[registry] +address = "127.0.0.1:31500" + +[kubernetes] +namespace = "openstack" + +[repositories] +skip_empty = True +protocol = https +port = 443 diff --git a/ccp/deploy-config.yaml b/ccp/deploy-config.yaml index c70dbc700..260234ea6 100644 --- a/ccp/deploy-config.yaml +++ b/ccp/deploy-config.yaml @@ -1,2 +1,4 @@ configs: - neutron_external_interface: eth1 + public_interface: eth1 + private_interface: eth2 + neutron_external_interface: eth3 diff --git a/ccp/patch1 b/ccp/patch1 deleted file mode 100644 index e98a2c463..000000000 --- a/ccp/patch1 +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/microservices/build.py b/microservices/build.py -index 1f26b5a..e419343 100644 ---- a/microservices/build.py -+++ b/microservices/build.py -@@ -84,7 +84,7 @@ def find_dockerfiles(repository_name, tmp_dir, match=True): - return dockerfiles - - --IMAGE_FULL_NAME_RE = "(([\\w_-]+)\\/)?([\\w_-]+)(:([\\w_.-]+))?" -+IMAGE_FULL_NAME_RE = "(.*\/)?(([\\w_-]+)\\/)?([\\w_-]+)(:([\\w_.-]+))?" - IMAGE_FULL_NAME_PATTERN = re.compile(IMAGE_FULL_NAME_RE) - - DOCKER_FILE_FROM_PATTERN = re.compile( - -diff --git a/microservices/common/jinja_utils.py b/microservices/common/jinja_utils.py -index c9c8cd2..37ff6f2 100644 ---- a/microservices/common/jinja_utils.py -+++ b/microservices/common/jinja_utils.py -@@ -16,6 +16,9 @@ def str_to_bool(text): - - def jinja_render(path): - variables = {k: v for k, v in CONF.images.items()} -+ if CONF.builder.push and CONF.registry.address: -+ variables['namespace'] = '%s/%s' % (CONF.registry.address, -+ variables['namespace']) - - env = jinja2.Environment(loader=jinja2.FileSystemLoader( - os.path.dirname(path))) diff --git a/playbooks/ccp-build.yaml b/playbooks/ccp-build.yaml index 07cdf99e1..c3e3d7881 100644 --- a/playbooks/ccp-build.yaml +++ b/playbooks/ccp-build.yaml @@ -1,31 +1,45 @@ -- hosts: all - tasks: - - lineinfile: - dest: /etc/hosts - regexp: 'registry01-bud.ng.mirantis.net' - line: '172.16.180.121 registry01-bud.ng.mirantis.net' - - hosts: kube-master pre_tasks: - - name: Rsync CCP repos - synchronize: src=../ccp/microservices-repos/ dest=/root/microservices-repos/ - - name: Rsync MCP scripts and repo + - name: Download fuel-ccp + shell: git clone https://git.openstack.org/openstack/fuel-ccp + args: + chdir: /usr/local/src + creates: /usr/local/src/fuel-ccp/setup.py + - name: Upload ccp configs to master nodes synchronize: src: ../ccp/ dest: /root/ccp/ - rsync_opts: - - "--exclude=/microservices-repos" tasks: - - name: Install MCP cli tool - shell: "{{ item }}" + - name: Install CCP cli tool + shell: pip install -U fuel-ccp/ args: - chdir: /root/ccp/microservices/ + chdir: /usr/local/src creates: /usr/local/bin/mcp-microservices - with_items: - - pip install . - - python setup.py develop - - name: Build CCP images - shell: ./ccp-build.sh + - name: Get pods + shell: kubectl get pods + register: get_pod + run_once: true + - name: Get services + shell: kubectl get svc + register: get_svc + run_once: true + - name: Create registry pod + shell: kubectl create -f registry_pod.yaml + args: + chdir: /root/ccp + run_once: true + - name: Create registry svc + shell: kubectl create -f registry_svc.yaml + args: + chdir: /root/ccp + run_once: true + when: get_svc.stdout.find('registry') == -1 + - name: Fetch CCP images + shell: mcp-microservices --config-file=/root/ccp/ccp.conf fetch + chdir: /usr/local/src + run_once: true + - name: Build CCP images + shell: mcp-microservices --config-file=/root/ccp/ccp.conf build args: chdir: /root/ccp run_once: true diff --git a/playbooks/ccp-deploy.yaml b/playbooks/ccp-deploy.yaml index 4c44c146b..961df55ba 100644 --- a/playbooks/ccp-deploy.yaml +++ b/playbooks/ccp-deploy.yaml @@ -1,14 +1,17 @@ - hosts: kube-master pre_tasks: - - name: Rsync MCP scripts and repo + - name: Rsync CCP configs synchronize: src: ../ccp/ dest: /root/ccp/ - rsync_opts: - - "--exclude=/microservices-repos" tasks: + - name: Get namespaces + shell: kubectl get namespace + register: get_ns + run_once: true - name: Deploy CCP - shell: ./ccp-deploy.sh + shell: mcp-microservices --config-file=/root/ccp/ccp.conf deploy args: chdir: /root/ccp run_once: true + when: get_ns.stdout.find('openstack') == -1