diff --git a/ansible/group_vars/all/kolla b/ansible/group_vars/all/kolla index 48c044e12..ac2703114 100644 --- a/ansible/group_vars/all/kolla +++ b/ansible/group_vars/all/kolla @@ -250,6 +250,10 @@ kolla_overcloud_inventory_kolla_top_level_groups: ############################################################################### # Kolla-ansible configuration. +# Virtualenv directory where Kolla-ansible's ansible modules will execute +# remotely on the target nodes. If None, no virtualenv will be used. +kolla_ansible_target_venv: "{{ virtualenv_path ~ '/kolla-ansible' }}" + # Password to use to encrypt the kolla-ansible passwords.yml file. kolla_ansible_vault_password: "{{ lookup('env', 'KAYOBE_VAULT_PASSWORD') | default }}" diff --git a/ansible/roles/kolla-ansible/defaults/main.yml b/ansible/roles/kolla-ansible/defaults/main.yml index 6d40e4f4a..8aa472f0d 100644 --- a/ansible/roles/kolla-ansible/defaults/main.yml +++ b/ansible/roles/kolla-ansible/defaults/main.yml @@ -15,6 +15,10 @@ kolla_ansible_source_version: # Virtualenv directory where Kolla-ansible will be installed. kolla_ansible_venv: "{{ ansible_env['PWD'] }}/kolla-venv" +# Virtualenv directory where Kolla-ansible's ansible modules will execute +# remotely on the target nodes. If None, no virtualenv will be used. +kolla_ansible_target_venv: + # Password to use to encrypt the passwords.yml file. kolla_ansible_vault_password: diff --git a/ansible/roles/kolla-ansible/templates/overcloud-top-level.j2 b/ansible/roles/kolla-ansible/templates/overcloud-top-level.j2 index d540371c5..8458f2a3a 100644 --- a/ansible/roles/kolla-ansible/templates/overcloud-top-level.j2 +++ b/ansible/roles/kolla-ansible/templates/overcloud-top-level.j2 @@ -30,6 +30,11 @@ [overcloud:vars] ansible_user=kolla ansible_become=true +{% if kolla_ansible_target_venv is not none %} +# Execute ansible modules on the remote target hosts using a virtualenv. +ansible_python_interpreter={{ kolla_ansible_target_venv }}/bin/python +{% endif %} + {% for kolla_group, kolla_group_config in kolla_overcloud_inventory_top_level_group_map.items() %} {% if 'groups' in kolla_group_config %} diff --git a/ansible/roles/kolla-ansible/templates/seed.j2 b/ansible/roles/kolla-ansible/templates/seed.j2 index 2d0e80ab6..20f826694 100644 --- a/ansible/roles/kolla-ansible/templates/seed.j2 +++ b/ansible/roles/kolla-ansible/templates/seed.j2 @@ -7,6 +7,10 @@ [seed:vars] ansible_user=kolla +{% if kolla_ansible_target_venv is not none %} +# Execute ansible modules on the remote target hosts using a virtualenv. +ansible_python_interpreter={{ kolla_ansible_target_venv }}/bin/python +{% endif %} [baremetal:children] seed diff --git a/etc/kayobe/kolla.yml b/etc/kayobe/kolla.yml index c27a199d4..ed3baeb09 100644 --- a/etc/kayobe/kolla.yml +++ b/etc/kayobe/kolla.yml @@ -131,6 +131,10 @@ ############################################################################### # Kolla-ansible configuration. +# Virtualenv directory where Kolla-ansible's ansible modules will execute +# remotely on the target nodes. If None, no virtualenv will be used. +#kolla_ansible_target_venv: + # Whether TLS is enabled for the external API endpoints. #kolla_enable_tls_external: