From 005b91da7f106b7daf07bc2f298ba264511de59b Mon Sep 17 00:00:00 2001 From: Olivier Bourdon Date: Wed, 4 Jul 2018 14:30:19 +0200 Subject: [PATCH] Fix openstack CLI calls environment when using venv Without this fix the calls to openstack CLI will return code 2 + error 'No such file or directories' because the virtual env has not been propagated as part of the execution PATH Furthermore this is quite disturbing due to the fact that some of the failing tasks are marked as ignore_errors: true. Change-Id: Iadd3ec14bfd4765488937ea7aa64d296fb129988 --- .../bifrost-ironic-install/tasks/keystone_setup.yml | 11 +++++++++++ .../tasks/keystone_setup_inspector.yml | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup.yml b/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup.yml index f7b960893..9b0af5024 100644 --- a/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup.yml +++ b/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup.yml @@ -16,6 +16,11 @@ # We should likely address that at some point, however I think a user # should be the driver of that work. +- name: "If VENV is set in the environment, enable installation into venv" + set_fact: + enable_venv: true + when: lookup('env', 'VENV') | length > 0 + - name: "Error if credentials are undefined." fail: msg: | @@ -119,6 +124,7 @@ no_log: true register: test_ironic_admin_endpoint ignore_errors: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" - name: "Check ironic public endpoint exists" command: | @@ -133,6 +139,7 @@ no_log: true register: test_ironic_public_endpoint ignore_errors: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" - name: "Check ironic internal endpoint exists" command: | @@ -147,6 +154,7 @@ no_log: true register: test_ironic_internal_endpoint ignore_errors: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" - name: "Create ironic admin endpoint" command: | @@ -159,6 +167,7 @@ endpoint create --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" baremetal admin "{{ ironic.keystone.admin_url | default('http://127.0.0.1:6385/') }}" no_log: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" when: test_ironic_admin_endpoint.rc != 0 or test_ironic_admin_endpoint.stdout == '[]' - name: "Create ironic public endpoint" @@ -172,6 +181,7 @@ endpoint create --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" baremetal public "{{ ironic.keystone.public_url | default('http://127.0.0.1:6385/') }}" no_log: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" when: test_ironic_public_endpoint.rc != 0 or test_ironic_public_endpoint.stdout == '[]' - name: "Create ironic internal endpoint" @@ -185,6 +195,7 @@ endpoint create --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" baremetal internal "{{ ironic.keystone.internal_url | default('http://127.0.0.1:6385/') }}" no_log: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" when: test_ironic_internal_endpoint.rc != 0 or test_ironic_internal_endpoint.stdout == '[]' - name: "Create baremetal_admin role" diff --git a/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup_inspector.yml b/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup_inspector.yml index d5e124065..e58a85388 100644 --- a/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup_inspector.yml +++ b/playbooks/roles/bifrost-ironic-install/tasks/keystone_setup_inspector.yml @@ -16,6 +16,11 @@ # We should likely address that at some point, however I think a user # should be the driver of that work. +- name: "If VENV is set in the environment, enable installation into venv" + set_fact: + enable_venv: true + when: lookup('env', 'VENV') | length > 0 + - name: "Error if credentials are undefined." fail: msg: | @@ -99,6 +104,7 @@ --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" no_log: true register: test_ironic_inspector_admin_endpoint + environment: "{{ bifrost_venv_env if enable_venv else {} }}" - name: "Check ironic-inspector public endpoint exists" command: | @@ -112,6 +118,7 @@ --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" no_log: true register: test_ironic_inspector_public_endpoint + environment: "{{ bifrost_venv_env if enable_venv else {} }}" - name: "Check ironic-inspector internal endpoint exists" command: | @@ -125,6 +132,7 @@ --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" no_log: true register: test_ironic_inspector_internal_endpoint + environment: "{{ bifrost_venv_env if enable_venv else {} }}" - name: "Create ironic-inspector admin endpoint" command: | @@ -137,6 +145,7 @@ endpoint create --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" baremetal-introspection admin "{{ ironic_inspector.keystone.admin_url | default('http://127.0.0.1:5050/') }}" no_log: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" when: test_ironic_inspector_admin_endpoint.rc != 0 or test_ironic_inspector_admin_endpoint.stdout == '[]' # NOTE(TheJulia): This seems like something that should be @@ -153,6 +162,7 @@ endpoint create --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" baremetal-introspection public "{{ ironic_inspector.keystone.public_url | default('http://127.0.0.1:5050/') }}" no_log: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" when: test_ironic_inspector_public_endpoint.rc != 0 or test_ironic_inspector_public_endpoint.stdout == '[]' - name: "Create ironic-inspector internal endpoint" @@ -166,6 +176,7 @@ endpoint create --region "{{ keystone.bootstrap.region_name | default('RegionOne') }}" baremetal-introspection internal "{{ ironic_inspector.keystone.internal_url | default('http://127.0.0.1:5050/') }}" no_log: true + environment: "{{ bifrost_venv_env if enable_venv else {} }}" when: test_ironic_inspector_internal_endpoint.rc != 0 or test_ironic_inspector_internal_endpoint.stdout == '[]' - name: "Create inspector_user user"