2018-06-07 14:44:04 +02:00
|
|
|
---
|
|
|
|
# tasks file for aws_eks modules
|
|
|
|
|
|
|
|
- block:
|
2019-08-13 15:11:21 +02:00
|
|
|
# If us-west-1 does become supported, change this test to use an unsupported region
|
2018-06-07 14:44:04 +02:00
|
|
|
# or if all regions are supported, delete this test
|
|
|
|
- name: attempt to use eks in unsupported region
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
state: absent
|
|
|
|
aws_access_key: "{{ aws_access_key }}"
|
|
|
|
aws_secret_key: "{{ aws_secret_key }}"
|
|
|
|
security_token: "{{ security_token }}"
|
2019-08-13 15:11:21 +02:00
|
|
|
region: us-west-1
|
2018-06-07 14:44:04 +02:00
|
|
|
register: aws_eks_unsupported_region
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: check that aws_eks_cluster did nothing
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- aws_eks_unsupported_region is failed
|
|
|
|
- '"msg" in aws_eks_unsupported_region'
|
|
|
|
|
|
|
|
- name: set up aws connection info
|
|
|
|
set_fact:
|
|
|
|
aws_connection_info: &aws_connection_info
|
|
|
|
aws_access_key: "{{ aws_access_key }}"
|
|
|
|
aws_secret_key: "{{ aws_secret_key }}"
|
|
|
|
security_token: "{{ security_token }}"
|
|
|
|
region: "{{ aws_region }}"
|
|
|
|
no_log: yes
|
|
|
|
|
|
|
|
- name: delete an as yet non-existent EKS cluster
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
state: absent
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: aws_eks_delete_non_existent
|
|
|
|
|
|
|
|
- name: check that aws_eks_cluster did nothing
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- aws_eks_delete_non_existent is not changed
|
|
|
|
|
|
|
|
- name: ensure IAM instance role exists
|
|
|
|
iam_role:
|
|
|
|
name: aws_eks_cluster_role
|
|
|
|
assume_role_policy_document: "{{ lookup('file','eks-trust-policy.json') }}"
|
|
|
|
state: present
|
|
|
|
create_instance_profile: no
|
|
|
|
managed_policies:
|
|
|
|
- AmazonEKSServicePolicy
|
|
|
|
- AmazonEKSClusterPolicy
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: iam_role
|
|
|
|
|
|
|
|
- name: create a VPC to work in
|
|
|
|
ec2_vpc_net:
|
|
|
|
cidr_block: 10.0.0.0/16
|
|
|
|
state: present
|
|
|
|
name: '{{ resource_prefix }}_aws_eks'
|
|
|
|
resource_tags:
|
|
|
|
Name: '{{ resource_prefix }}_aws_eks'
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: setup_vpc
|
|
|
|
|
|
|
|
- name: create subnets
|
|
|
|
ec2_vpc_subnet:
|
|
|
|
az: '{{ aws_region }}{{ item.zone }}'
|
|
|
|
tags:
|
|
|
|
Name: '{{ resource_prefix }}_aws_eks-subnet-{{ item.zone }}'
|
|
|
|
vpc_id: '{{ setup_vpc.vpc.id }}'
|
|
|
|
cidr: "{{ item.cidr }}"
|
|
|
|
state: present
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: setup_subnets
|
|
|
|
with_items:
|
|
|
|
- "{{ eks_subnets }}"
|
|
|
|
|
|
|
|
- name: create security groups to use for EKS
|
|
|
|
ec2_group:
|
|
|
|
name: "{{ item.name }}"
|
|
|
|
description: "{{ item.description }}"
|
|
|
|
state: present
|
|
|
|
rules: "{{ item.rules }}"
|
|
|
|
rules_egress: "{{ item.rules_egress|default(omit) }}"
|
|
|
|
vpc_id: '{{ setup_vpc.vpc.id }}'
|
|
|
|
<<: *aws_connection_info
|
|
|
|
with_items: "{{ eks_security_groups }}"
|
|
|
|
register: setup_security_groups
|
|
|
|
|
|
|
|
- name: create EKS cluster
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
security_groups: "{{ eks_security_groups | json_query('[].name') }}"
|
|
|
|
subnets: "{{ setup_subnets.results | json_query('[].subnet.id') }}"
|
|
|
|
role_arn: "{{ iam_role.arn }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: eks_create
|
|
|
|
|
|
|
|
- name: check that EKS cluster was created
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- eks_create is changed
|
|
|
|
- eks_create.name == eks_cluster_name
|
|
|
|
|
2018-07-04 14:30:57 +02:00
|
|
|
- name: create EKS cluster with same details but wait for it to become active
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
security_groups: "{{ eks_security_groups | json_query('[].name') }}"
|
|
|
|
subnets: "{{ setup_subnets.results | json_query('[].subnet.id') }}"
|
|
|
|
role_arn: "{{ iam_role.arn }}"
|
|
|
|
wait: yes
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: eks_create
|
|
|
|
|
|
|
|
- name: Check that EKS cluster is active and has CA and endpoint data
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- eks_create is not changed
|
|
|
|
- eks_create.name == eks_cluster_name
|
|
|
|
- eks_create.status == "ACTIVE"
|
|
|
|
- eks_create.certificate_authority.data is defined
|
|
|
|
- eks_create.certificate_authority.data != ""
|
|
|
|
- eks_create.endpoint is defined
|
|
|
|
- eks_create.endpoint != ""
|
|
|
|
|
2018-06-07 14:44:04 +02:00
|
|
|
- name: create EKS cluster with same details but using SG ids
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
security_groups: "{{ setup_security_groups.results | json_query('[].group_id') }}"
|
|
|
|
subnets: "{{ setup_subnets.results | json_query('[].subnet.id') }}"
|
|
|
|
role_arn: "{{ iam_role.arn }}"
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: eks_create
|
|
|
|
|
|
|
|
- name: check that EKS cluster did not change
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- eks_create is not changed
|
|
|
|
- eks_create.name == eks_cluster_name
|
|
|
|
|
2019-08-13 15:11:21 +02:00
|
|
|
- name: remove EKS cluster, waiting until complete
|
2018-06-07 14:44:04 +02:00
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
state: absent
|
2019-08-13 15:11:21 +02:00
|
|
|
wait: yes
|
2018-06-07 14:44:04 +02:00
|
|
|
<<: *aws_connection_info
|
|
|
|
register: eks_delete
|
|
|
|
|
2019-08-13 15:11:21 +02:00
|
|
|
- name: check that EKS cluster was removed
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- eks_delete is changed
|
|
|
|
|
|
|
|
- name: create EKS cluster with same details but wait for it to become active
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
security_groups: "{{ eks_security_groups | json_query('[].name') }}"
|
|
|
|
subnets: "{{ setup_subnets.results | json_query('[].subnet.id') }}"
|
|
|
|
role_arn: "{{ iam_role.arn }}"
|
|
|
|
wait: yes
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: eks_create
|
|
|
|
|
2018-06-07 14:44:04 +02:00
|
|
|
- name: check that EKS cluster was created
|
2019-08-13 15:11:21 +02:00
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- eks_create is changed
|
|
|
|
- eks_create.name == eks_cluster_name
|
|
|
|
|
|
|
|
- name: remove EKS cluster, without waiting this time
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
state: absent
|
|
|
|
<<: *aws_connection_info
|
|
|
|
register: eks_delete
|
|
|
|
|
|
|
|
- name: check that EKS cluster remove has started
|
2018-06-07 14:44:04 +02:00
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- eks_delete is changed
|
|
|
|
|
|
|
|
always:
|
|
|
|
- name: Announce teardown start
|
|
|
|
debug:
|
|
|
|
msg: "***** TESTING COMPLETE. COMMENCE TEARDOWN *****"
|
|
|
|
|
|
|
|
- name: remove EKS cluster
|
|
|
|
aws_eks_cluster:
|
|
|
|
name: "{{ eks_cluster_name }}"
|
|
|
|
state: absent
|
2019-08-13 15:11:21 +02:00
|
|
|
wait: yes
|
2018-06-07 14:44:04 +02:00
|
|
|
<<: *aws_connection_info
|
|
|
|
register: eks_delete
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: "{{ eks_security_groups|reverse|list }}"
|
|
|
|
|
|
|
|
- name: create list of all additional EKS security groups
|
|
|
|
set_fact:
|
|
|
|
additional_eks_sg:
|
|
|
|
- name: "{{ eks_cluster_name }}-workers-sg"
|
|
|
|
|
2018-07-04 14:30:57 +02:00
|
|
|
- name: set all security group rule lists to empty to remove circular dependency
|
|
|
|
ec2_group:
|
|
|
|
name: "{{ item.name }}"
|
|
|
|
description: "{{ item.description }}"
|
|
|
|
state: present
|
|
|
|
rules: []
|
|
|
|
rules_egress: []
|
|
|
|
purge_rules: yes
|
|
|
|
purge_rules_egress: yes
|
|
|
|
vpc_id: '{{ setup_vpc.vpc.id }}'
|
|
|
|
<<: *aws_connection_info
|
|
|
|
with_items: "{{ eks_security_groups }}"
|
2019-08-13 15:11:21 +02:00
|
|
|
ignore_errors: yes
|
2018-07-04 14:30:57 +02:00
|
|
|
|
2018-06-07 14:44:04 +02:00
|
|
|
- name: remove security groups
|
|
|
|
ec2_group:
|
|
|
|
name: '{{ item.name }}'
|
|
|
|
state: absent
|
|
|
|
vpc_id: '{{ setup_vpc.vpc.id }}'
|
|
|
|
<<: *aws_connection_info
|
|
|
|
with_items: "{{ eks_security_groups|reverse|list + additional_eks_sg }}"
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: remove setup subnet
|
|
|
|
ec2_vpc_subnet:
|
|
|
|
az: '{{ aws_region }}{{ item.zone }}'
|
|
|
|
vpc_id: '{{ setup_vpc.vpc.id }}'
|
|
|
|
cidr: "{{ item.cidr}}"
|
|
|
|
state: absent
|
|
|
|
<<: *aws_connection_info
|
|
|
|
with_items: "{{ eks_subnets }}"
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: remove setup VPC
|
|
|
|
ec2_vpc_net:
|
|
|
|
cidr_block: 10.0.0.0/16
|
|
|
|
state: absent
|
|
|
|
name: '{{ resource_prefix }}_aws_eks'
|
|
|
|
<<: *aws_connection_info
|
|
|
|
ignore_errors: yes
|