diff --git a/ansible/docker.yml b/ansible/docker.yml
index 567c788f7..e01fb8f64 100644
--- a/ansible/docker.yml
+++ b/ansible/docker.yml
@@ -3,4 +3,4 @@
   hosts: docker
   roles:
     - role: docker
-      docker_daemon_mtu: "{{ external_net_name | net_mtu | default }}"
+      docker_daemon_mtu: "{{ public_net_name | net_mtu | default }}"
diff --git a/ansible/group_vars/all/controllers b/ansible/group_vars/all/controllers
index 4cb87c28b..d9400e67a 100644
--- a/ansible/group_vars/all/controllers
+++ b/ansible/group_vars/all/controllers
@@ -15,6 +15,7 @@ controller_default_network_interfaces: >
       oob_wl_net_name,
       provision_wl_net_name,
       internal_net_name,
+      public_net_name,
       external_net_name,
       storage_net_name,
       storage_mgmt_net_name] | unique | list }}
diff --git a/ansible/group_vars/all/monitoring b/ansible/group_vars/all/monitoring
index 447259249..5a830c0ec 100644
--- a/ansible/group_vars/all/monitoring
+++ b/ansible/group_vars/all/monitoring
@@ -13,7 +13,7 @@ monitoring_bootstrap_user: "{{ controller_bootstrap_user }}"
 monitoring_default_network_interfaces: >
   {{ [provision_oc_net_name,
       internal_net_name,
-      external_net_name] | unique | list }}
+      public_net_name] | unique | list }}
 
 # List of extra networks to which monitoring nodes are attached.
 monitoring_extra_network_interfaces: []
diff --git a/ansible/group_vars/all/network b/ansible/group_vars/all/network
index ef2783540..c90bf29e4 100644
--- a/ansible/group_vars/all/network
+++ b/ansible/group_vars/all/network
@@ -25,6 +25,9 @@ internal_net_name: 'internal_net'
 # to provide external network access via Neutron.
 external_net_name: 'external_net'
 
+# Name of the network used to expose the public OpenStack API endpoints.
+public_net_name: "{{ external_net_name }}"
+
 # Name of the network used to carry storage data traffic.
 storage_net_name: 'storage_net'
 
diff --git a/ansible/kolla-ansible.yml b/ansible/kolla-ansible.yml
index f7d0cc51e..51895c2cb 100644
--- a/ansible/kolla-ansible.yml
+++ b/ansible/kolla-ansible.yml
@@ -33,23 +33,23 @@
           set_fact:
             kolla_internal_vip_address: "{{ internal_net_name | net_vip_address }}"
             kolla_internal_fqdn: "{{ internal_net_name | net_fqdn or internal_net_name | net_vip_address }}"
-            kolla_external_vip_address: "{{ external_net_name | net_vip_address }}"
-            kolla_external_fqdn: "{{ external_net_name | net_fqdn or external_net_name | net_vip_address }}"
+            kolla_external_vip_address: "{{ public_net_name | net_vip_address }}"
+            kolla_external_fqdn: "{{ public_net_name | net_fqdn or public_net_name | net_vip_address }}"
           when: "{{ kolla_enable_haproxy | bool }}"
 
         - name: Set facts containing the VIP addresses and FQDNs
           set_fact:
             kolla_internal_vip_address: "{{ internal_net_name | net_ip(controller_host) }}"
             kolla_internal_fqdn: "{{ internal_net_name | net_ip(controller_host) }}"
-            kolla_external_vip_address: "{{ external_net_name | net_ip(controller_host) }}"
-            kolla_external_fqdn: "{{ external_net_name | net_ip(controller_host) }}"
+            kolla_external_vip_address: "{{ public_net_name | net_ip(controller_host) }}"
+            kolla_external_fqdn: "{{ public_net_name | net_ip(controller_host) }}"
           when:
             - "{{ not kolla_enable_haproxy | bool }}"
 
         - name: Set facts containing the controller network interfaces
           set_fact:
             kolla_network_interface: "{{ internal_net_name | net_interface(controller_host) | replace('-', '_') }}"
-            kolla_external_vip_interface: "{{ external_net_name | net_interface(controller_host) | replace('-', '_') }}"
+            kolla_external_vip_interface: "{{ public_net_name | net_interface(controller_host) | replace('-', '_') }}"
             kolla_api_interface: "{{ internal_net_name | net_interface(controller_host) | replace('-', '_') }}"
             kolla_storage_interface: "{{ storage_net_name | net_interface(controller_host) | replace('-', '_') }}"
             kolla_cluster_interface: "{{ storage_mgmt_net_name | net_interface(controller_host) | replace('-', '_') }}"
diff --git a/ansible/public-openrc.yml b/ansible/public-openrc.yml
index 41285da88..6934a1810 100644
--- a/ansible/public-openrc.yml
+++ b/ansible/public-openrc.yml
@@ -5,10 +5,10 @@
 - name: Ensure a public OpenStack API environment file exists
   hosts: config-mgmt
   vars:
-    external_api_proto: "{% if kolla_enable_tls_external | bool %}https{% else %}http{% endif %}"
-    external_api_vip_address: "{{ external_net_name | net_vip_address }}"
-    external_api_keystone_port: 5000
+    public_api_proto: "{% if kolla_enable_tls_external | bool %}https{% else %}http{% endif %}"
+    public_api_vip_address: "{{ public_net_name | net_vip_address }}"
+    public_api_keystone_port: 5000
   roles:
     - role: public-openrc
       public_openrc_kolla_config_path: "{{ kolla_config_path }}"
-      public_openrc_auth_url: "{{ external_api_proto }}://{{ external_api_vip_address }}:{{ external_api_keystone_port }}"
+      public_openrc_auth_url: "{{ public_api_proto }}://{{ public_api_vip_address }}:{{ public_api_keystone_port }}"
diff --git a/dev/dev-vagrant.yml b/dev/dev-vagrant.yml
index 5db95335d..95b9783ec 100644
--- a/dev/dev-vagrant.yml
+++ b/dev/dev-vagrant.yml
@@ -44,6 +44,7 @@ provision_oc_net_name: aio
 oob_wl_net_name: aio
 provision_wl_net_name: aio
 internal_net_name: aio
+public_net_name: aio
 external_net_name: aio
 storage_net_name: aio
 storage_mgmt_net_name: aio
diff --git a/doc/source/architecture.rst b/doc/source/architecture.rst
index 3f33b430a..817ab434e 100644
--- a/doc/source/architecture.rst
+++ b/doc/source/architecture.rst
@@ -49,6 +49,8 @@ Workload provisioning network
     the bare metal compute hosts.
 Internal network
     The internal network hosts the internal and admin OpenStack API endpoints.
+Public network
+    The public network hosts the public OpenStack API endpoints.
 External network
-    The external network hosts the public OpenStack API endpoints and provides
-    external network access for the hosts in the system.
+    The external network provides external network access for the hosts in the
+    system.
diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst
index 246bfddcb..7db44316d 100644
--- a/doc/source/configuration.rst
+++ b/doc/source/configuration.rst
@@ -197,9 +197,10 @@ perform multiple roles, or even none at all.  The available roles are:
     workload hosts.
 ``internal_net_name``
     Name of the network used to expose the internal OpenStack API endpoints.
+``public_net_name``
+    Name of the network used to expose the public OpenStack API endpoints.
 ``external_net_name``
-    Name of the network used to expose the external OpenStack API endpoints and
-    to provide external network access via Neutron.
+    Name of the network used to provide external network access via Neutron.
 ``storage_net_name``
     Name of the network used to carry storage data traffic.
 ``storage_mgmt_net_name``
@@ -262,6 +263,7 @@ We could describe such a network as follows:
    provision_oc_net_name: management
    provision_wl_net_name: cloud
    internal_net_name: cloud
+   public_net_name: external
    external_net_name: external
    storage_net_name: cloud
    storage_mgmt_net_name: cloud
diff --git a/etc/kayobe/networks.yml b/etc/kayobe/networks.yml
index 4a03e6354..0d43d5ec0 100644
--- a/etc/kayobe/networks.yml
+++ b/etc/kayobe/networks.yml
@@ -27,6 +27,9 @@
 # to provide external network access via Neutron.
 #external_net_name:
 
+# Name of the network used to expose the public OpenStack API endpoints.
+#public_net_name:
+
 # Name of the network used to carry storage data traffic.
 #storage_net_name:
 
diff --git a/tools/configure-kayobe.sh b/tools/configure-kayobe.sh
index c11090943..4ba068f91 100755
--- a/tools/configure-kayobe.sh
+++ b/tools/configure-kayobe.sh
@@ -28,6 +28,7 @@ EOF
 provision_oc_net_name: 'the_net'
 provision_wl_net_name: 'the_net'
 internal_net_name: 'the_net'
+public_net_name: 'the_net'
 external_net_name: 'the_net'
 storage_net_name: 'the_net'
 storage_mgmt_net_name: 'the_net'