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_external: true
subnet_name: ansible_port_subnet
port_name: ansible_port
secgroup_name: ansible_port_secgroup

View File

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

View File

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

View File

@ -1,11 +1,5 @@
---
- name: Create external network
os_network:
cloud: "{{ cloud }}"
state: present
name: "{{ external_network_name }}"
external: true
# Regular user operation
- name: Create internal network
os_network:
cloud: "{{ cloud }}"
@ -14,19 +8,11 @@
external: false
- 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:
cloud: "{{ cloud }}"
state: present
network_name: "{{ network_name }}"
name: shade_subnet2
name: shade_subnet1
cidr: 10.7.7.0/24
- name: Create router
@ -34,16 +20,45 @@
cloud: "{{ cloud }}"
state: present
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:
cloud: "{{ cloud }}"
state: present
name: "{{ router_name }}"
network: "{{ external_network_name }}"
interfaces:
- shade_subnet2
- shade_subnet1
when:
- network_external
- name: Delete router
os_router:
@ -62,6 +77,8 @@
cloud: "{{ cloud }}"
state: absent
name: shade_subnet2
when:
- network_external
- name: Delete internal network
os_network:
@ -74,3 +91,5 @@
cloud: "{{ cloud }}"
state: absent
name: "{{ external_network_name }}"
when:
- network_external

View File

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

View File

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

View File

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

View File

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

View File

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