From 0d332a80cf731e5927c81c9f6929a8b83d43cddd Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Mon, 5 Feb 2018 10:45:46 -0800 Subject: Add proxy support In some cases the XCI development environment can be located behind a corporate proxy resulting in a additional layer to consider to configure. These changes pretend to include proxy support for all linux distros in all the posible flavors. Change-Id: Iab469268809ac471d09e244bb3ccd83de1a41b88 Signed-off-by: Victor Morales --- xci/files/requirements.yml | 10 ++++++++++ xci/infra/bifrost/playbooks/opnfv-virtual.yaml | 6 ++++++ xci/installer/osa/deploy.sh | 1 + xci/installer/osa/files/user_variables_proxy.yml | 22 ++++++++++++++++++++++ .../osa/playbooks/configure-opnfvhost.yml | 22 ++++++++++++++++++++++ .../osa/playbooks/configure-targethosts.yml | 12 ++++++++++++ xci/playbooks/roles/bootstrap-host/tasks/time.yml | 4 ++++ .../roles/clone-repository/tasks/main.yml | 4 ++++ 8 files changed, 81 insertions(+) create mode 100644 xci/files/requirements.yml create mode 100644 xci/installer/osa/files/user_variables_proxy.yml diff --git a/xci/files/requirements.yml b/xci/files/requirements.yml new file mode 100644 index 00000000..a1b7feb3 --- /dev/null +++ b/xci/files/requirements.yml @@ -0,0 +1,10 @@ +--- +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2018 Intel Corporation. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +- src: peru.proxy_settings diff --git a/xci/infra/bifrost/playbooks/opnfv-virtual.yaml b/xci/infra/bifrost/playbooks/opnfv-virtual.yaml index f44adb4d..3429f2e6 100644 --- a/xci/infra/bifrost/playbooks/opnfv-virtual.yaml +++ b/xci/infra/bifrost/playbooks/opnfv-virtual.yaml @@ -100,6 +100,7 @@ environment: http_proxy: "{{ lookup('env','http_proxy') }}" https_proxy: "{{ lookup('env','https_proxy') }}" + no_proxy: "{{ lookup('env','no_proxy') }}" - hosts: baremetal name: "Enrollment and Deployment" @@ -112,7 +113,12 @@ - role: ironic-enroll-dynamic - { role: ironic-inspect-node, when: inspect_nodes | default('false') | bool == true } - role: bifrost-configdrives-dynamic + ipv4_nameserver: 192.168.122.1 - role: bifrost-deploy-nodes-dynamic + environment: + http_proxy: "{{ lookup('env','http_proxy') }}" + https_proxy: "{{ lookup('env','https_proxy') }}" + no_proxy: "{{ lookup('env','no_proxy') }}" - hosts: baremetal name: "Deploy machines." diff --git a/xci/installer/osa/deploy.sh b/xci/installer/osa/deploy.sh index ce44626a..6dada3f5 100755 --- a/xci/installer/osa/deploy.sh +++ b/xci/installer/osa/deploy.sh @@ -57,6 +57,7 @@ echo "Info: Configured localhost host for openstack-ansible" echo "Info: Configuring opnfv deployment host for openstack-ansible" echo "-----------------------------------------------------------------------" cd $OSA_XCI_PLAYBOOKS +ansible-galaxy install -r ${XCI_PATH}/xci/files/requirements.yml -p $HOME/.ansible/roles ansible-playbook ${XCI_ANSIBLE_PARAMS} -i ${XCI_FLAVOR_ANSIBLE_FILE_PATH}/inventory \ configure-opnfvhost.yml echo "-----------------------------------------------------------------------" diff --git a/xci/installer/osa/files/user_variables_proxy.yml b/xci/installer/osa/files/user_variables_proxy.yml new file mode 100644 index 00000000..d25c3181 --- /dev/null +++ b/xci/installer/osa/files/user_variables_proxy.yml @@ -0,0 +1,22 @@ +--- +# Copyright 2018, Intel Corporation +# +# 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. + +http_proxy_env_url: "" +no_proxy_env: "localhost,127.0.0.1,{{ internal_lb_vip_address }},{{ external_lb_vip_address }},{% for host in groups['all_containers'] %}{{ hostvars[host]['container_address'] }}{% if not loop.last %},{% endif %}{% endfor %}" +global_environment_variables: + HTTP_PROXY: "{{ http_proxy_env_url }}" + NO_PROXY: "{{ no_proxy_env }}" + http_proxy: "{{ http_proxy_env_url }}" + no_proxy: "{{ no_proxy_env }}" diff --git a/xci/installer/osa/playbooks/configure-opnfvhost.yml b/xci/installer/osa/playbooks/configure-opnfvhost.yml index 4c30f4d1..647f175b 100644 --- a/xci/installer/osa/playbooks/configure-opnfvhost.yml +++ b/xci/installer/osa/playbooks/configure-opnfvhost.yml @@ -13,6 +13,13 @@ - "{{ XCI_PATH }}/xci/var/opnfv.yml" - "{{ XCI_PATH }}/xci/installer/osa/files/openstack_services.yml" + environment: + http_proxy: "{{ lookup('env','http_proxy') }}" + https_proxy: "{{ lookup('env','https_proxy') }}" + no_proxy: "{{ lookup('env','no_proxy') }}" + HTTP_PROXY: "{{ lookup('env','http_proxy') }}" + HTTPS_PROXY: "{{ lookup('env','https_proxy') }}" + NO_PROXY: "{{ lookup('env','no_proxy') }}" pre_tasks: - name: Load distribution variables include_vars: @@ -29,6 +36,11 @@ roles: - role: bootstrap-host configure_network: XCI_FLAVOR != 'aio' + - role: peru.proxy_settings + proxy_settings_http_proxy: "{{ lookup('env','http_proxy') }}" + proxy_settings_https_proxy: "{{ lookup('env','https_proxy') }}" + proxy_settings_ftp_proxy: "{{ lookup('env','ftp_proxy') }}" + proxy_settings_no_proxy: "{{ lookup('env','no_proxy') }}" tasks: - name: generate SSH keys @@ -75,6 +87,16 @@ - name: copy user_variables_ceph.yml shell: "/bin/cp -rf {{ remote_xci_flavor_files }}/user_variables_ceph.yml {{OPENSTACK_OSA_ETC_PATH}}/user_variables_ceph.yml" when: XCI_CEPH_ENABLED == "true" + - block: + - name: copy user_variables_proxy.yml + shell: "/bin/cp -rf {{ remote_xci_path }}/xci/installer/osa/files/user_variables_proxy.yml {{OPENSTACK_OSA_ETC_PATH}}/user_variables_proxy.yml" + - name: "Configure http_proxy_env_url" + lineinfile: + path: "{{OPENSTACK_OSA_ETC_PATH}}/user_variables_proxy.yml" + regexp: "^http_proxy_env_url:.*" + line: "{{ 'http_proxy_env_url: ' + lookup('env','http_proxy') }}" + when: + - lookup('env','http_proxy') != "randomfoobarstring" - name: copy OPNFV OpenStack playbook shell: "/bin/cp -rf {{ remote_xci_path }}/xci/installer/osa/files/setup-openstack.yml {{OPENSTACK_OSA_PATH}}/playbooks" - name: copy pinned versions of OSA Roles and global requirements diff --git a/xci/installer/osa/playbooks/configure-targethosts.yml b/xci/installer/osa/playbooks/configure-targethosts.yml index 31c3e02e..42822c96 100644 --- a/xci/installer/osa/playbooks/configure-targethosts.yml +++ b/xci/installer/osa/playbooks/configure-targethosts.yml @@ -1,5 +1,12 @@ --- - hosts: openstack + environment: + http_proxy: "{{ lookup('env','http_proxy') }}" + https_proxy: "{{ lookup('env','https_proxy') }}" + no_proxy: "{{ lookup('env','no_proxy') }}" + HTTP_PROXY: "{{ lookup('env','http_proxy') }}" + HTTPS_PROXY: "{{ lookup('env','https_proxy') }}" + NO_PROXY: "{{ lookup('env','no_proxy') }}" remote_user: root vars_files: - "{{ XCI_PATH }}/xci/var/opnfv.yml" @@ -12,6 +19,11 @@ - "{{ XCI_PATH }}/xci/var/{{ ansible_os_family }}.yml" - "{{ XCI_FLAVOR_ANSIBLE_FILE_PATH }}/flavor-vars.yml" roles: + - role: peru.proxy_settings + proxy_settings_http_proxy: "{{ lookup('env','http_proxy') }}" + proxy_settings_https_proxy: "{{ lookup('env','https_proxy') }}" + proxy_settings_ftp_proxy: "{{ lookup('env','ftp_proxy') }}" + proxy_settings_no_proxy: "{{ lookup('env','no_proxy') }}" - role: bootstrap-host - role: configure-nfs when: diff --git a/xci/playbooks/roles/bootstrap-host/tasks/time.yml b/xci/playbooks/roles/bootstrap-host/tasks/time.yml index 8f94d33f..4b3bf95a 100644 --- a/xci/playbooks/roles/bootstrap-host/tasks/time.yml +++ b/xci/playbooks/roles/bootstrap-host/tasks/time.yml @@ -21,3 +21,7 @@ until: chrony_got_time.rc == 0 retries: 5 delay: 5 + environment: + http_proxy: "{{ lookup('env','http_proxy') }}" + https_proxy: "{{ lookup('env','https_proxy') }}" + no_proxy: "{{ lookup('env','no_proxy') }}" diff --git a/xci/playbooks/roles/clone-repository/tasks/main.yml b/xci/playbooks/roles/clone-repository/tasks/main.yml index a124003d..0ba80c0a 100644 --- a/xci/playbooks/roles/clone-repository/tasks/main.yml +++ b/xci/playbooks/roles/clone-repository/tasks/main.yml @@ -13,3 +13,7 @@ dest: "{{ dest }}" version: "{{ version }}" force: yes + environment: + http_proxy: "{{ lookup('env','http_proxy') }}" + https_proxy: "{{ lookup('env','https_proxy') }}" + no_proxy: "{{ lookup('env','no_proxy') }}" -- cgit 1.2.3-korg