Run ansible tests against specific public cloud

We want to run ansible tests against some public cloud, but
there are always some API policy limits for regular users in
public cloud, like: can not create external network. So we define
some variables that can be changed for different limit scenairoes.

1. Create port in external or internal network.
2. Specified public pool name when launching server.
3. Create simple router, then add interface and external gateway,
   change test step order, so that do not create external network
   when network_external=false.
4. Create subnet with enable_dhcp true or false.
5. Make ANSIBLE_VAR_* environment variables can be passed into virtual
   env.

Change-Id: I69473756b23a6cb525e0f9bb40d09e6ed9880782
This commit is contained in:
Rui Chen
2018-07-13 14:57:07 +08:00
parent 2fa2720eeb
commit 722d8136b2
9 changed files with 46 additions and 23 deletions

View File

@@ -1,4 +1,5 @@
network_name: ansible_port_network network_name: ansible_port_network
network_external: true
subnet_name: ansible_port_subnet subnet_name: ansible_port_subnet
port_name: ansible_port port_name: ansible_port
secgroup_name: ansible_port_secgroup secgroup_name: ansible_port_secgroup

View File

@@ -4,7 +4,7 @@
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
state: present state: present
name: "{{ network_name }}" name: "{{ network_name }}"
external: True external: "{{ network_external }}"
- name: Create subnet - name: Create subnet
os_subnet: os_subnet:

View File

@@ -1,2 +1,3 @@
external_network_name: ansible_external_net external_network_name: ansible_external_net
network_external: true
router_name: ansible_router router_name: ansible_router

View File

@@ -1,11 +1,5 @@
--- ---
- name: Create external network # Regular user operation
os_network:
cloud: "{{ cloud }}"
state: present
name: "{{ external_network_name }}"
external: true
- name: Create internal network - name: Create internal network
os_network: os_network:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
@@ -14,19 +8,11 @@
external: false external: false
- name: Create subnet1 - name: Create subnet1
os_subnet:
cloud: "{{ cloud }}"
state: present
network_name: "{{ external_network_name }}"
name: shade_subnet1
cidr: 10.6.6.0/24
- name: Create subnet2
os_subnet: os_subnet:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
state: present state: present
network_name: "{{ network_name }}" network_name: "{{ network_name }}"
name: shade_subnet2 name: shade_subnet1
cidr: 10.7.7.0/24 cidr: 10.7.7.0/24
- name: Create router - name: Create router
@@ -34,16 +20,45 @@
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
state: present state: present
name: "{{ router_name }}" name: "{{ router_name }}"
network: "{{ external_network_name }}"
- name: Update router - name: Update router (add interface)
os_router:
cloud: "{{ cloud }}"
state: present
name: "{{ router_name }}"
interfaces:
- shade_subnet1
# Admin operation
- name: Create external network
os_network:
cloud: "{{ cloud }}"
state: present
name: "{{ external_network_name }}"
external: "{{ network_external }}"
when:
- network_external
- name: Create subnet2
os_subnet:
cloud: "{{ cloud }}"
state: present
network_name: "{{ external_network_name }}"
name: shade_subnet2
cidr: 10.6.6.0/24
when:
- network_external
- name: Update router (add external gateway)
os_router: os_router:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
state: present state: present
name: "{{ router_name }}" name: "{{ router_name }}"
network: "{{ external_network_name }}" network: "{{ external_network_name }}"
interfaces: interfaces:
- shade_subnet2 - shade_subnet1
when:
- network_external
- name: Delete router - name: Delete router
os_router: os_router:
@@ -62,6 +77,8 @@
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
state: absent state: absent
name: shade_subnet2 name: shade_subnet2
when:
- network_external
- name: Delete internal network - name: Delete internal network
os_network: os_network:
@@ -74,3 +91,5 @@
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
state: absent state: absent
name: "{{ external_network_name }}" name: "{{ external_network_name }}"
when:
- network_external

View File

@@ -1,3 +1,4 @@
server_network: private server_network: private
server_name: ansible_server server_name: ansible_server
flavor: m1.tiny flavor: m1.tiny
floating_ip_pool_name: public

View File

@@ -54,7 +54,7 @@
flavor: "{{ flavor }}" flavor: "{{ flavor }}"
network: "{{ server_network }}" network: "{{ server_network }}"
floating_ip_pools: floating_ip_pools:
- public - "{{ floating_ip_pool_name }}"
wait: true wait: true
register: server register: server

View File

@@ -1 +1,2 @@
subnet_name: shade_subnet subnet_name: shade_subnet
enable_subnet_dhcp: false

View File

@@ -11,7 +11,7 @@
network_name: "{{ network_name }}" network_name: "{{ network_name }}"
name: "{{ subnet_name }}" name: "{{ subnet_name }}"
state: present state: present
enable_dhcp: false enable_dhcp: "{{ enable_subnet_dhcp }}"
dns_nameservers: dns_nameservers:
- 8.8.8.7 - 8.8.8.7
- 8.8.8.8 - 8.8.8.8

View File

@@ -75,7 +75,7 @@ commands =
[testenv:ansible] [testenv:ansible]
# Need to pass some env vars for the Ansible playbooks # Need to pass some env vars for the Ansible playbooks
basepython = {env:OPENSTACKSDK_TOX_PYTHON:python2} basepython = {env:OPENSTACKSDK_TOX_PYTHON:python2}
passenv = HOME USER passenv = HOME USER ANSIBLE_VAR_*
deps = deps =
{[testenv]deps} {[testenv]deps}
ansible ansible