aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/adapters
diff options
context:
space:
mode:
authorYifei Xue <xueyifei@huawei.com>2017-08-15 11:40:26 +0800
committerYifei Xue <xueyifei@huawei.com>2017-08-31 15:33:56 +0800
commit8c978370a123dccc0b93ee9bd2ba46f8167a2cc2 (patch)
treefe3b398de2de17e5c30ceea456dbe123bc1e6f69 /deploy/adapters
parent760c966b5095fb0cfe0a2ac4014a337531a8df1d (diff)
Support offline deployment for nosdn no feature scenario
JIRA: - Add a repo docker which includes ubuntu PPA and python packages used for offline deployment. Change-Id: Iad9b0df7f33f5a7ab974c5deffb408fc93b3f3ad Signed-off-by: Yifei Xue <xueyifei@huawei.com>
Diffstat (limited to 'deploy/adapters')
-rw-r--r--deploy/adapters/ansible/roles/config-compute/files/apt.conf3
-rw-r--r--deploy/adapters/ansible/roles/config-compute/tasks/Ubuntu.yml24
-rw-r--r--deploy/adapters/ansible/roles/config-compute/templates/pip.conf.j25
-rw-r--r--deploy/adapters/ansible/roles/config-compute/templates/sources.list.offline1
-rw-r--r--deploy/adapters/ansible/roles/config-controller/files/apt.conf3
-rw-r--r--deploy/adapters/ansible/roles/config-controller/tasks/Ubuntu.yml12
-rw-r--r--deploy/adapters/ansible/roles/config-controller/templates/sources.list.offline1
-rw-r--r--deploy/adapters/ansible/roles/config-osa/files/apt.conf3
-rw-r--r--deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh230
-rw-r--r--deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt314
-rwxr-xr-x[-rw-r--r--]deploy/adapters/ansible/roles/config-osa/tasks/main.yml173
-rw-r--r--deploy/adapters/ansible/roles/config-osa/templates/pip.conf.j229
12 files changed, 797 insertions, 1 deletions
diff --git a/deploy/adapters/ansible/roles/config-compute/files/apt.conf b/deploy/adapters/ansible/roles/config-compute/files/apt.conf
new file mode 100644
index 00000000..afe7ab9e
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-compute/files/apt.conf
@@ -0,0 +1,3 @@
+APT::Get::Assume-Yes "true";
+APT::Get::force-yes "true";
+APT::Get::AllowUnauthenticated "true";
diff --git a/deploy/adapters/ansible/roles/config-compute/tasks/Ubuntu.yml b/deploy/adapters/ansible/roles/config-compute/tasks/Ubuntu.yml
index 6e6cae85..c36a7c2e 100644
--- a/deploy/adapters/ansible/roles/config-compute/tasks/Ubuntu.yml
+++ b/deploy/adapters/ansible/roles/config-compute/tasks/Ubuntu.yml
@@ -16,6 +16,18 @@
- meta: flush_handlers
+- name: create pip conf directory
+ file:
+ path: "~/.pip/"
+ state: directory
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: add pip conf
+ template:
+ src: pip.conf.j2
+ dest: "~/.pip/pip.conf"
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
- name: check apt source
shell: "ping -c 2 {{ LOCAL_REPOSITORY_IP }} > /dev/null"
register: checkresult
@@ -33,6 +45,18 @@
dest: /etc/apt/sources.list
when: checkresult.rc != 0
+- name: change sources list(apt)
+ template:
+ src: sources.list.offline
+ dest: /etc/apt/sources.list
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: add apt.conf
+ copy:
+ src: apt.conf
+ dest: /etc/apt/apt.conf
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
- name: Install apt packages
apt:
pkg: "nfs-kernel-server"
diff --git a/deploy/adapters/ansible/roles/config-compute/templates/pip.conf.j2 b/deploy/adapters/ansible/roles/config-compute/templates/pip.conf.j2
new file mode 100644
index 00000000..1ada4763
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-compute/templates/pip.conf.j2
@@ -0,0 +1,5 @@
+[global]
+find-links = http://{{ offline_repo_ip }}:{{ offline_repo_port }}/pip_pkg
+no-index = true
+[install]
+trusted-host = {{ offline_repo_ip }}
diff --git a/deploy/adapters/ansible/roles/config-compute/templates/sources.list.offline b/deploy/adapters/ansible/roles/config-compute/templates/sources.list.offline
new file mode 100644
index 00000000..15aa736f
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-compute/templates/sources.list.offline
@@ -0,0 +1 @@
+deb [arch=amd64] http://{{ offline_repo_ip }}:{{ offline_repo_port }}/xenial-ocata-ppa xenial main
diff --git a/deploy/adapters/ansible/roles/config-controller/files/apt.conf b/deploy/adapters/ansible/roles/config-controller/files/apt.conf
new file mode 100644
index 00000000..afe7ab9e
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-controller/files/apt.conf
@@ -0,0 +1,3 @@
+APT::Get::Assume-Yes "true";
+APT::Get::force-yes "true";
+APT::Get::AllowUnauthenticated "true";
diff --git a/deploy/adapters/ansible/roles/config-controller/tasks/Ubuntu.yml b/deploy/adapters/ansible/roles/config-controller/tasks/Ubuntu.yml
index e3b467cf..c45980f7 100644
--- a/deploy/adapters/ansible/roles/config-controller/tasks/Ubuntu.yml
+++ b/deploy/adapters/ansible/roles/config-controller/tasks/Ubuntu.yml
@@ -32,3 +32,15 @@
src: sources.list.official
dest: /etc/apt/sources.list
when: checkresult.rc != 0
+
+- name: change sources list(apt)
+ template:
+ src: sources.list.offline
+ dest: /etc/apt/sources.list
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: add apt.conf
+ copy:
+ src: apt.conf
+ dest: /etc/apt/apt.conf
+ when: offline_deployment is defined and offline_deployment == "Enable"
diff --git a/deploy/adapters/ansible/roles/config-controller/templates/sources.list.offline b/deploy/adapters/ansible/roles/config-controller/templates/sources.list.offline
new file mode 100644
index 00000000..15aa736f
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-controller/templates/sources.list.offline
@@ -0,0 +1 @@
+deb [arch=amd64] http://{{ offline_repo_ip }}:{{ offline_repo_port }}/xenial-ocata-ppa xenial main
diff --git a/deploy/adapters/ansible/roles/config-osa/files/apt.conf b/deploy/adapters/ansible/roles/config-osa/files/apt.conf
new file mode 100644
index 00000000..afe7ab9e
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-osa/files/apt.conf
@@ -0,0 +1,3 @@
+APT::Get::Assume-Yes "true";
+APT::Get::force-yes "true";
+APT::Get::AllowUnauthenticated "true";
diff --git a/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh b/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh
new file mode 100644
index 00000000..c598027f
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh
@@ -0,0 +1,230 @@
+#!/usr/local/env bash
+
+set -ev
+
+function venv_create {
+ VENV_PATH="$1"
+ VENV_FILE="$2"
+ ROLE_VENV_WITH_INDEX="$3"
+ VENV_VALUES="$4"
+
+ # If the venv working directory already exists remove it
+ [[ -d "/tmp/${VENV_PATH}" ]] && rm -rf "/tmp/${VENV_PATH}"
+
+ # If the pip build directory already exists remove it
+ [[ -d "/tmp/${VENV_FILE}" ]] && rm -rf "/tmp/${VENV_FILE}"
+
+ # Create the virtualenv shell
+ /usr/local/bin/virtualenv --always-copy --extra-search-dir /var/www/repo/os-releases/15.1.4/ubuntu-16.04-x86_64 --never-download "${VENV_PATH}"
+
+ # Create the pip build directory
+ mkdir -p "/tmp/${VENV_FILE}"
+
+ # Activate the python virtual environment for good measure
+ source "${VENV_PATH}/bin/activate"
+
+ # Run the pip install within the venv and specify a specific build directory which
+ # resolves pip locking issues when run in parallel.
+
+ if [ "${ROLE_VENV_WITH_INDEX}" = false ]; then
+ ${VENV_PATH}/bin/pip install --build "/tmp/${VENV_FILE}" --timeout 120 --find-links /var/www/repo/os-releases/15.1.4/ubuntu-16.04-x86_64 --log /var/log/repo/repo_venv_builder.log --no-index ${VENV_VALUES}
+
+
+ else
+ ${VENV_PATH}/bin/pip install --build "/tmp/${VENV_FILE}" --timeout 120 --find-links /var/www/repo/os-releases/15.1.4/ubuntu-16.04-x86_64 --log /var/log/repo/repo_venv_builder.log ${VENV_VALUES}
+
+ fi
+
+ # Deactivate the venv for good measure
+ deactivate
+
+ # Find and remove all of the python pyc files
+ find "${VENV_PATH}" -type f -name '*.pyc' -delete
+
+ # Create the archive
+ tar czf "${VENV_FILE}.tgz" -C "${VENV_PATH}" .
+
+ # Create a checksum file for the archive
+ sha1sum "${VENV_FILE}.tgz" | awk '{print $1}' > "${VENV_FILE}.checksum"
+
+ # Remove the working directories
+ rm -rf "${VENV_PATH}"
+ rm -rf "/tmp/${VENV_FILE}"
+}
+
+# First operation is to sort and set the known os_* roles and create a unique dict.
+# NOTE: this is a Jinja loop and will not be rendered within the script. For debugging
+# purposes the group data will be rendered as a comment.
+# venv to build os_glance
+# * packages within the os_glance venv: [u'glance', u'keystonemiddleware', u'os-brick', u'pycrypto', u'pymysql', u'python-cinderclient', u'python-glanceclient', u'python-keystoneclient', u'python-memcached', u'python-swiftclient', u'warlock']
+# venv to build os_ceilometer
+# * packages within the os_ceilometer venv: [u'ceilometer', u'ceilometermiddleware', u'gnocchiclient', u'libvirt-python', u'pycrypto', u'pymongo', u'pymysql', u'python-ceilometerclient', u'python-memcached', u'tooz', u'warlock']
+# venv to build os_heat
+# * packages within the os_heat venv: [u'heat', u'keystonemiddleware', u'pycrypto', u'pymysql', u'python-ceilometerclient', u'python-cinderclient', u'python-glanceclient', u'python-heatclient', u'python-keystoneclient', u'python-memcached', u'python-neutronclient', u'python-novaclient', u'python-openstackclient', u'python-swiftclient', u'python-troveclient']
+# venv to build os_aodh
+# * packages within the os_aodh venv: [u'aodh[mysql]', u'ceilometermiddleware', u'gnocchiclient', u'pycrypto', u'pymysql', u'python-ceilometerclient', u'python-memcached', u'warlock']
+# venv to build os_neutron
+# * packages within the os_neutron venv: [u'cliff', u'configobj', u'keystonemiddleware', u'neutron', u'pycrypto', u'pymysql', u'python-glanceclient', u'python-keystoneclient', u'python-memcached', u'python-neutronclient', u'python-novaclient', u'repoze.lru']
+# venv to build os_cinder
+# * packages within the os_cinder venv: [u'cinder', u'ecdsa', u'httplib2', u'keystonemiddleware', u'pycrypto', u'pymysql', u'python-cinderclient', u'python-keystoneclient', u'python-memcached']
+# venv to build os_tempest
+# * packages within the os_tempest venv: [u'junitxml', u'nose', u'python-ceilometerclient', u'python-cinderclient', u'python-glanceclient', u'python-heatclient', u'python-keystoneclient', u'python-memcached', u'python-neutronclient', u'python-novaclient', u'python-openstackclient', u'python-saharaclient', u'python-subunit', u'python-swiftclient', u'tempest']
+# venv to build os_keystone
+# * packages within the os_keystone venv: [u'argparse', u'keystone', u'keystonemiddleware', u'ldappool', u'lxml', u'oslo.log', u'oslo.middleware', u'pbr', u'pycrypto', u'pymysql', u'pysaml2', u'python-keystoneclient', u'python-ldap', u'python-memcached', u'python-openstackclient', u'repoze.lru', u'uwsgi']
+# venv to build os_gnocchi
+# * packages within the os_gnocchi venv: [u'gnocchi[mysql,file,swift,ceph]', u'gnocchiclient', u'keystonemiddleware', u'pycrypto', u'python-memcached']
+# venv to build os_rally
+# * packages within the os_rally venv: [u'pymysql', u'rally', u'setuptools']
+# venv to build os_nova
+# * packages within the os_nova venv: [u'libvirt-python', u'nova-powervm', u'pyasn1-modules', u'keystonemiddleware', u'nova', u'pycrypto', u'pymysql', u'python-keystoneclient', u'python-memcached', u'python-novaclient', u'python-ironicclient', u'uwsgi', u'websockify', u'nova-lxd', u'pylxd', u'pyopenssl']
+# venv to build os_horizon
+# * packages within the os_horizon venv: [u'designate_dashboard', u'django-appconf', u'django-openstack-auth', u'greenlet', u'horizon', u'ironic-ui', u'keystonemiddleware', u'magnum-ui', u'mysql-python', u'neutron-lbaas-dashboard', u'oslo.config', u'ply', u'pycrypto', u'pymysql', u'python-keystoneclient', u'python-memcached', u'sahara_dashboard', u'trove_dashboard']
+
+PID=()
+# Run the venv create. This will loop over all of the os_group role packages and create a python virtual env.
+# Venv creation is done parallel at a count of the known "ansible_processor_count" or using a default of 5.
+# This loop will enter the venv build directory and create tagged venvs in a distribution directory
+# If the venv archive already exists the creation process will be skipped
+pushd "/var/www/repo/venvs/15.1.4/ubuntu-16.04-x86_64"
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/heat"
+ROLE_VENV_FILE="heat-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "heat keystonemiddleware pycrypto pymysql python-ceilometerclient python-cinderclient python-glanceclient python-heatclient python-keystoneclient python-memcached python-neutronclient python-novaclient python-openstackclient python-swiftclient python-troveclient" &
+ pid[1]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/nova"
+ROLE_VENV_FILE="nova-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "libvirt-python nova-powervm pyasn1-modules keystonemiddleware nova pycrypto pymysql python-keystoneclient python-memcached python-novaclient python-ironicclient uwsgi websockify nova-lxd pylxd pyopenssl" &
+ pid[2]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/keystone"
+ROLE_VENV_FILE="keystone-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "argparse keystone keystonemiddleware ldappool lxml oslo.log oslo.middleware pbr pycrypto pymysql pysaml2 python-keystoneclient python-ldap python-memcached python-openstackclient repoze.lru uwsgi" &
+ pid[3]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+#ROLE_VENV_WITH_INDEX=true
+#ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/rally"
+#ROLE_VENV_FILE="rally-15.1.4-x86_64"
+#if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+# venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "pbr pymysql rally setuptools" &
+# pid[4]=$!
+#fi
+#unset ROLE_VENV_PATH
+#unset ROLE_VENV_FILE
+#unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/gnocchi"
+ROLE_VENV_FILE="gnocchi-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "gnocchi[mysql,file,swift,ceph] gnocchiclient keystonemiddleware pycrypto python-memcached" &
+ pid[5]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/aodh"
+ROLE_VENV_FILE="aodh-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "aodh[mysql] ceilometermiddleware gnocchiclient pycrypto pymysql python-ceilometerclient python-memcached warlock" &
+ pid[6]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/neutron"
+ROLE_VENV_FILE="neutron-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "cliff configobj keystonemiddleware neutron pycrypto pymysql python-glanceclient python-keystoneclient python-memcached python-neutronclient python-novaclient repoze.lru" &
+ pid[7]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/cinder"
+ROLE_VENV_FILE="cinder-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "cinder ecdsa httplib2 keystonemiddleware pycrypto pymysql python-cinderclient python-keystoneclient python-memcached" &
+ pid[8]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+for job_pid in ${!pid[@]}; do
+ wait ${pid[$job_pid]} || exit 99
+done
+
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/glance"
+ROLE_VENV_FILE="glance-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "glance keystonemiddleware os-brick pycrypto pymysql python-cinderclient python-glanceclient python-keystoneclient python-memcached python-swiftclient warlock" &
+ pid[9]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+#ROLE_VENV_WITH_INDEX=true
+#ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/tempest"
+#ROLE_VENV_FILE="tempest-15.1.4-x86_64"
+#if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+# venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "junitxml nose python-ceilometerclient python-cinderclient python-glanceclient python-heatclient python-keystoneclient python-memcached python-neutronclient python-novaclient python-openstackclient python-saharaclient python-subunit python-swiftclient tempest" &
+# pid[10]=$!
+#fi
+#unset ROLE_VENV_PATH
+#unset ROLE_VENV_FILE
+#unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/horizon"
+ROLE_VENV_FILE="horizon-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "designate_dashboard django-appconf django-openstack-auth greenlet horizon ironic-ui keystonemiddleware magnum-ui mysql-python neutron-lbaas-dashboard oslo.config ply pycrypto pymysql python-keystoneclient python-memcached sahara_dashboard trove_dashboard" &
+ pid[11]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+
+ROLE_VENV_WITH_INDEX=false
+ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/ceilometer"
+ROLE_VENV_FILE="ceilometer-15.1.4-x86_64"
+if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then
+ venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "ceilometer ceilometermiddleware gnocchiclient libvirt-python pycrypto pymongo pymysql python-ceilometerclient python-memcached tooz warlock" &
+ pid[12]=$!
+fi
+unset ROLE_VENV_PATH
+unset ROLE_VENV_FILE
+unset ROLE_VENV_WITH_INDEX
+for job_pid in ${!pid[@]}; do
+ wait ${pid[$job_pid]} || exit 99
+done
+
+popd
+
diff --git a/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt b/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt
new file mode 100644
index 00000000..56067a6c
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt
@@ -0,0 +1,314 @@
+alabaster==0.7.9
+alembic==0.8.10
+amqp==1.4.9
+ansible==2.3.2.0
+anyjson==0.3.3
+aodh==4.0.1.dev5
+aodhclient==0.8.0
+appdirs==1.4.3
+argparse==1.4.0
+automaton==1.7.0
+babel==2.3.4
+beautifulsoup4==4.5.3
+boto==2.45.0
+cachetools==2.0.0
+cassandra_driver==3.7.1
+castellan==0.5.0
+ceilometer==8.0.2.dev15
+ceilometermiddleware==1.0.2
+cffi==1.9.1
+cinder==10.0.2.dev24
+cliff==2.4.0
+cmd2==0.6.9
+configobj==5.0.6
+contextlib2==0.5.4
+cotyledon==1.6.8
+crc16==0.1.1
+croniter==0.3.14
+cryptography==1.7.1
+cursive==0.1.1
+cython==0.26
+datrie==0.7.1
+debtcollector==1.11.0
+decorator==4.0.11
+designate_dashboard==4.0.1.dev3
+django==1.8.17
+django_appconf==1.0.2
+django_babel==0.5.1
+django_compressor==2.1
+django_openstack_auth==3.1.1
+django_pyscss==2.0.2
+dnspython==1.15.0
+docutils==0.12
+dogpile.cache==0.6.2
+dragonflow==3.0.1.dev41
+ecdsa==0.13
+enum34==1.1.6
+eventlet==0.19.0
+extras==1.0.0
+fasteners==0.14.1
+felix==1.4.4
+fixtures==3.0.0
+funcsigs==1.0.2
+functools32==3.2.3.post2
+futures==3.0.5
+futurist==0.21.0
+gevent==1.2.1
+glance==14.0.1.dev5
+glance_store==0.20.0
+gnocchi==3.1.4
+gnocchiclient==3.0.0
+google_api_python_client==1.6.1
+greenlet==0.4.11
+heat==8.0.2.dev4
+horizon==11.0.2.dev21
+httplib2==0.9.2
+idna==2.2
+ijson==2.3
+ipaddress==1.0.18
+ironic_ui==2.2.1.dev6
+iso8601==0.1.11
+jinja2==2.8.1
+jmespath==0.9.0
+jsonpatch==1.15
+jsonpath_rw==1.4.0
+jsonpath_rw_ext==1.0.0
+jsonpointer==1.10
+jsonschema==2.5.1
+junitxml==0.7
+kafka_python==1.3.2
+kazoo==2.2.1
+keystone==11.0.1
+keystoneauth1==2.18.0
+keystonemiddleware==4.14.0
+kombu==3.0.37
+ldappool==2.0.0
+libvirt_python==2.5.0
+linecache2==1.0.0
+logutils==0.3.3
+lxc_python2==0.1
+lxml==3.7.2
+lz4==0.8.2
+magnum_ui==2.2.1.dev4
+mako==1.0.6
+markupsafe==0.23
+microversion_parse==0.1.4
+monotonic==1.2
+msgpack_python==0.4.8
+munch==2.2.0
+murano_pkg_check==0.3.0
+mysql_python==1.2.5
+ndg_httpsclient==0.4.2
+netaddr==0.7.19
+netifaces==0.10.5
+networking_calico==1.3.2.dev3
+networkx==1.11
+neutron==10.0.2.dev45
+neutron_dynamic_routing==10.0.1.dev8
+neutron_fwaas==10.0.2.dev3
+neutron_lbaas==10.0.1
+neutron_lbaas_dashboard==2.0.1.dev7
+neutron_lib==1.1.0
+neutron_vpnaas==10.0.1.dev5
+nose==1.3.7
+nova==15.0.4
+nova_lxd==15.0.1
+nova_powervm==4.0.1.dev9
+numpy==1.12.0
+oauth2client==3.0.0
+oauthlib==2.0.1
+openstacksdk==0.9.13
+os_brick==1.11.0
+osc_lib==1.3.0
+os_client_config==1.26.0
+os_faults==0.1.9
+oslo.cache==1.17.0
+oslo.concurrency==3.18.0
+oslo.config==3.22.0
+oslo.context==2.12.1
+oslo.db==4.17.0
+oslo.i18n==3.12.0
+oslo.log==3.20.1
+oslo.messaging==5.17.1
+oslo.middleware==3.23.1
+oslo.policy==1.18.0
+oslo.privsep==1.16.0
+oslo.reports==1.17.0
+oslo.rootwrap==5.4.0
+oslo.serialization==2.16.0
+oslo.service==1.19.0
+oslo.utils==3.22.0
+oslo.versionedobjects==1.21.0
+oslo.vmware==2.17.0
+osprofiler==1.5.0
+os_testr==0.8.0
+os_vif==1.4.0
+os_win==1.4.1
+os_xenapi==0.1.1
+ovs==2.6.1
+pandas==0.20.3
+paramiko==2.1.1
+passlib==1.7.0
+paste==2.0.3
+pastedeploy==1.5.2
+pathlib==1.0.1
+pbr==1.10.0
+pecan==1.2.1
+pika==0.10.0
+pika_pool==0.1.3
+pint==0.7.2
+pip==9.0.1
+ply==3.9
+positional==1.1.1
+posix_spawn==0.2.post7
+prettytable==0.7.2
+prometheus_client==0.0.20
+psutil==5.0.1
+pyasn1==0.1.9
+pyasn1_modules==0.0.8
+pycadf==2.5.0
+pycparser==2.17
+pycrypto==2.6.1
+pyghmi==1.0.16
+pygments==2.2.0
+pyinotify==0.9.6
+pyldap==2.4.28
+pylxd==2.2.2
+pymongo==3.4.0
+pymysql==0.7.9
+pyopenssl==16.2.0
+pyparsing==2.1.10
+pypowervm==1.0.0.4
+pyroute2==0.4.12
+pysaml2==4.0.2
+pyscss==1.3.4
+pysmi==0.0.7
+pysnmp==4.3.2
+python_barbicanclient==4.2.0
+python_ceilometerclient==2.8.1
+python_cinderclient==1.11.0
+python_dateutil==2.6.0
+python_designateclient==2.6.0
+python_editor==1.0.3
+python_etcd==0.4.4
+python_glanceclient==2.6.0
+python_heatclient==1.8.0
+python_ironicclient==1.11.1
+python_keystoneclient==3.10.0
+python_ldap==2.4.41
+python_magnumclient==2.5.0
+python_manilaclient==1.14.0
+python_memcached==1.58
+python_mimeparse==1.6.0
+python_mistralclient==3.0.0
+python_monascaclient==1.5.0
+python_muranoclient==0.12.0
+python_neutronclient==6.1.0
+python_novaclient==7.1.0
+python_openstackclient==3.8.1
+python_saharaclient==1.1.0
+python_senlinclient==1.2.0
+python_subunit==1.2.0
+python_swiftclient==3.3.0
+python_troveclient==2.8.0
+python_watcherclient==1.0.0
+python_zaqarclient==1.4.0
+pytz==2016.10
+pyudev==0.21.0
+pyyaml==3.12
+pyzmq==16.0.2
+rally==0.8.2.dev10
+rcssmin==1.0.6
+repoze.lru==0.6
+repoze.who==2.3
+requests==2.12.5
+requestsexceptions==1.1.3
+requests_unixsocket==0.1.5
+retrying==1.3.3
+rfc3986==0.4.1
+rjsmin==1.0.12
+routes==2.4.1
+rsa==3.4.2
+rtslib_fb==2.1.62
+ryu==4.10
+sahara_dashboard==6.0.1.dev7
+scipy==0.18.1
+semantic_version==2.6.0
+setproctitle==1.1.10
+setuptools==33.1.1
+shade==1.22.2
+simplegeneric==0.8.1
+simplejson==3.10.0
+singledispatch==3.4.0.3
+six==1.10.0
+snowballstemmer==1.2.1
+sphinx==1.3.6
+sphinx_rtd_theme==0.1.9
+sqlalchemy==1.0.17
+sqlalchemy_migrate==0.10.0
+sqlalchemy_utils==0.32.12
+sqlparse==0.2.2
+statsd==3.2.1
+stevedore==1.20.0
+suds_jurko==0.6
+taskflow==2.9.0
+tempest==14.0.1.dev142
+tempita==0.5.2
+tenacity==3.7.1
+testrepository==0.0.20
+testtools==2.2.0
+tinyrpc==0.5
+tooz==1.48.0
+traceback2==1.4.0
+trollius==2.1
+trove_dashboard==8.0.1.dev1
+ujson==1.35
+unicodecsv==0.14.1
+unittest2==1.1.0
+uritemplate==3.0.0
+urllib3==1.20
+uwsgi==2.0.15
+virtualenv==15.1.0
+virtualenv_tools==1.0
+voluptuous==0.9.3
+waitress==1.0.1
+warlock==1.2.0
+weakrefmethod==1.0.3
+webob==1.6.3
+websockify==0.8.0
+webtest==2.0.24
+werkzeug==0.11.15
+wheel==0.29.0
+wrapt==1.10.8
+ws4py==0.3.4
+wsme==0.9.1
+xstatic==1.0.1
+xstatic_angular==1.5.8.0
+xstatic_angular_bootstrap==2.2.0.0
+xstatic_angular_fileupload==12.0.4.0
+xstatic_angular_gettext==2.3.8.0
+xstatic_angular_lrdragndrop==1.0.2.2
+xstatic_angular_schema_form==0.8.13.0
+xstatic_bootstrap_datepicker==1.3.1.0
+xstatic_bootstrap_scss==3.3.7.1
+xstatic_bootswatch==3.3.7.0
+xstatic_d3==3.5.17.0
+xstatic_font_awesome==4.7.0.0
+xstatic_hogan==2.0.0.2
+xstatic_jasmine==2.4.1.1
+xstatic_jquery==1.10.2.1
+xstatic_jquery_migrate==1.2.1.1
+xstatic_jquery.quicksearch==2.0.3.1
+xstatic_jquery.tablesorter==2.14.5.1
+xstatic_jquery_ui==1.12.0.1
+xstatic_jsencrypt==2.3.1.1
+xstatic_mdi==1.4.57.0
+xstatic_objectpath==1.2.1.0
+xstatic_rickshaw==1.5.0.0
+xstatic_roboto_fontface==0.5.0.0
+xstatic_smart_table==1.4.13.2
+xstatic_spin==1.2.5.2
+xstatic_term.js==0.0.7.0
+xstatic_tv4==1.2.7.0
+yaql==1.1.3
+zope.interface==4.3.3
diff --git a/deploy/adapters/ansible/roles/config-osa/tasks/main.yml b/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
index a96e62ce..2cb79a94 100644..100755
--- a/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
+++ b/deploy/adapters/ansible/roles/config-osa/tasks/main.yml
@@ -41,7 +41,178 @@
galera_client_apt_repo_url: "http://192.168.137.222/mariadb"
galera_repo_url: "[ arch=amd64 ] http://192.168.137.222/mariadb"
uca_apt_repo_url: "[ arch=amd64 ] http://192.168.137.222/ubuntu-cloud"
- when: checkresult.rc == 0
+ when:
+ - checkresult.rc == 0
+ - offline_deployment is defined and offline_deployment == "Disable"
+
+# yamllint disable rule:line-length
+- name: add mariadb local repository
+ blockinfile:
+ dest: /etc/openstack_deploy/user_variables.yml
+ block: |
+ galera_client_apt_repo_url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/xenial-ocata-ppa xenial main"
+ galera_repo_url: "[ arch=amd64 ] http://{{ offline_repo_ip }}:{{ offline_repo_port }}/xenial-ocata-ppa xenial main"
+ uca_apt_repo_url: "[ arch=amd64 ] http://{{ offline_repo_ip }}:{{ offline_repo_port }}/xenial-ocata-ppa xenial main"
+ _rabbitmq_package_url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/rabbitmq-server_3.6.9-1_all.deb"
+ percona_package_url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/percona-xtrabackup-24_2.4.5-1.xenial_amd64.deb"
+ qpress_package_url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/qpress_11-1.xenial_amd64.deb"
+ haproxy_hatop_download_url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/hatop-0.7.7.tar.gz"
+ pip_upstream_url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/get-pip.py"
+ ceph_stable_repo: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/xenial-ocata-ppa"
+ ceph_pkg_source: "uca"
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: ignore galera client key
+ shell: |
+ sed -i '/galera-client-apt-keys/a\ when: offline_deployment is defined and offline_deployment == "Disable"' /etc/ansible/roles/galera_client/tasks/galera_client_install_apt.yml
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: ignore galera server key
+ shell: |
+ sed -i '/galera-apt-keys/a\ when: offline_deployment is defined and offline_deployment == "Disable"' /etc/ansible/roles/galera_server/tasks/galera_install_apt.yml
+ when: offline_deployment is defined and offline_deployment == "Enable"
+# yamllint enable rule:line-length
+
+- name: ignore git clone
+ lineinfile:
+ dest: /etc/ansible/roles/repo_build/tasks/repo_clone_git.yml
+ insertbefore: '^ async_status:'
+ line: ' ignore_errors: true'
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: add pbr to repo_pip_packages
+ lineinfile:
+ dest: /etc/ansible/roles/repo_build/defaults/main.yml
+ insertafter: '^ - cython'
+ line: ' - pbr'
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: ignore ceph special ppa
+ lineinfile:
+ dest: /etc/ansible/roles/ceph.ceph-common/tasks/installs/debian_ceph_repository.yml
+ insertafter: '^ - ppa:gluster/nfs-ganesha'
+ line: ' ignore_errors: true'
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: remove repo_build_pip_no_binary
+ lineinfile:
+ dest: /opt/openstack-ansible/playbooks/inventory/group_vars/repo_all.yml
+ state: absent
+ regexp: "{{ item }}"
+ with_items: ['^repo_build_pip_no_binary:', '^ - libvirt-python']
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: copy venv script
+ copy:
+ src: "op-venv-script.sh"
+ dest: "/opt/op-venv-script.sh"
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: update venv script
+ blockinfile:
+ dest: /etc/ansible/roles/repo_build/tasks/repo_venv_build.yml
+ insertbefore: '^- name: Run venv process script'
+ block: |
+ - name: update venv script
+ copy:
+ src: "/opt/op-venv-script.sh"
+ dest: "/opt/op-venv-script.sh"
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: copy absolute requirement
+ copy:
+ src: "requirements_absolute_requirements.txt"
+ dest: "/opt/requirements_absolute_requirements.txt"
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: update absolute requirements
+ blockinfile:
+ dest: /etc/ansible/roles/repo_build/tasks/repo_post_build.yml
+ insertbefore: '^- name: Copy get-pip script into release folder'
+ block: |
+ {% raw %}
+ - name: update absolute requirements
+ copy:
+ src: "/opt/requirements_absolute_requirements.txt"
+ dest: "{{ repo_build_release_path }}/requirements_absolute_requirements.txt"
+ {% endraw %}
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: add rally and tempest to requirement.txt
+ blockinfile:
+ dest: /etc/ansible/roles/repo_build/tasks/repo_pre_build.yml
+ insertbefore: '^- include: repo_clone_git.yml'
+ block: |
+ {% raw %}
+ - name: add rally and tempest
+ blockinfile:
+ dest: "{{ repo_build_release_path }}/requirements.txt"
+ insertafter: '^wheel'
+ block: |
+ rally
+ tempest
+ {% endraw %}
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: add lxc image for offline deloyment
+ blockinfile:
+ dest: /etc/ansible/roles/lxc_hosts/tasks/main.yml
+ insertbefore: '^- include: lxc_post_install.yml'
+ block: |
+ - name: add lxc image to the lxc cache dir
+ get_url:
+ url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/download.tar.gz"
+ dest: "/opt/download.tar.gz"
+
+ - name: unarchive lxc image tarball
+ command: su -s /bin/sh -c "tar -zxf /opt/download.tar.gz -C /var/cache/lxc/"
+
+ - name: clear tarball
+ file:
+ path: "/opt/download.tar.gz"
+ state: absent
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: configure pip.conf for lxc hosts and repo lxc
+ template:
+ src: pip.conf.j2
+ dest: "/etc/ansible/roles/pip_install/templates/pip.conf.j2"
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: set set-upper-constraints downloading
+ blockinfile:
+ dest: /opt/openstack-ansible/playbooks/common-tasks/set-upper-constraints.yml
+ insertafter: '^# Use https'
+ block: |
+ - name: download upper-constraints.txt
+ get_url:
+ url: "http://{{ offline_repo_ip }}:{{ offline_repo_port }}/upper-constraints.txt"
+ dest: /opt/
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: modify set-upper-constraints
+ shell: |
+ sed -i 's#\(--constraint\).*$#\1 /opt/upper-constraints.txt#g' \
+ /opt/openstack-ansible/playbooks/common-tasks/set-upper-constraints.yml ;
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: copy apt.conf for lxc
+ copy:
+ src: apt.conf
+ dest: "/etc/ansible/roles/lxc_container_create/files/apt.conf"
+ when: offline_deployment is defined and offline_deployment == "Enable"
+
+- name: add apt.conf for lxc
+ blockinfile:
+ dest: "/etc/ansible/roles/lxc_container_create/tasks/container_create.yml"
+ insertbefore: '^- name: Create hostname'
+ block: |
+ - name: add apt.conf
+ copy:
+ src: apt.conf
+ dest: "/etc/apt/apt.conf"
+
+ when: offline_deployment is defined and offline_deployment == "Enable"
- name: copy cinder.yml
copy:
diff --git a/deploy/adapters/ansible/roles/config-osa/templates/pip.conf.j2 b/deploy/adapters/ansible/roles/config-osa/templates/pip.conf.j2
new file mode 100644
index 00000000..15650561
--- /dev/null
+++ b/deploy/adapters/ansible/roles/config-osa/templates/pip.conf.j2
@@ -0,0 +1,29 @@
+# {{ ansible_managed }}
+
+[global]
+{% raw %}
+pre = {{ pip_enable_pre_releases }}
+{% if not pip_lock_to_internal_repo %}
+{% endraw %}
+index-url = http://{{ offline_repo_ip }}:{{ offline_repo_port }}/pip_pkg/simple
+trusted-host = {{ offline_repo_ip }}
+{% raw %}
+{% endif %}
+timeout = {{ pip_timeout }}
+{% if pip_lock_to_internal_repo and pip_links | length > 0 %}
+no-index = true
+trusted-host =
+{% for pip_link in pip_links %}
+ {{ pip_link.link | netloc_no_port }}
+{% endfor %}
+{% endif %}
+
+[install]
+upgrade = {{ pip_upgrade }}
+{% if pip_lock_to_internal_repo and pip_links | length > 0 %}
+find-links =
+{% for pip_link in pip_links %}
+ {{ pip_link.link }}
+{% endfor %}
+{% endif %}
+{% endraw %}