Infra: AWS Update to Ubuntu 20.04 62/31862/7
authorTomas Alexy <tomas.alexy@pantheon.tech>
Thu, 1 Apr 2021 13:44:14 +0000 (15:44 +0200)
committerPeter Mikus <pmikus@cisco.com>
Thu, 8 Apr 2021 07:37:15 +0000 (07:37 +0000)
- Change AMI image to Ubuntu 20.04
- Add calibration role
- Add AWS vfio-patch for kernel 5.8+
- Prepare root module's main.tf to be used with environment variables

Signed-off-by: Tomas Alexy <tomas.alexy@pantheon.tech>
Change-Id: I7db3f28ba573a5a8a1dc07179ef78ef34ce9ebf3

14 files changed:
fdio.infra.terraform/2n_aws_c5n/deploy/variables.tf
fdio.infra.terraform/2n_aws_c5n/main.tf
fdio.infra.terraform/2n_aws_c5n/variables.tf [new file with mode: 0644]
fdio.infra.terraform/3n_aws_c5n/deploy/variables.tf
fdio.infra.terraform/3n_aws_c5n/main.tf
fdio.infra.terraform/3n_aws_c5n/variables.tf [new file with mode: 0644]
resources/tools/testbed-setup/ansible/roles/aws/defaults/main.yaml
resources/tools/testbed-setup/ansible/roles/aws/tasks/main.yaml
resources/tools/testbed-setup/ansible/roles/aws/tasks/ubuntu_bionic.yaml
resources/tools/testbed-setup/ansible/roles/aws/tasks/ubuntu_focal.yaml [new file with mode: 0644]
resources/tools/testbed-setup/ansible/roles/calibration/defaults/main.yaml
resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
resources/tools/testbed-setup/ansible/sut.yaml
resources/tools/testbed-setup/ansible/tg.yaml

index d1ff1d6..53efe6f 100644 (file)
@@ -1,37 +1,32 @@
 variable "region" {
   description = "AWS Region"
   type = string
 variable "region" {
   description = "AWS Region"
   type = string
-  default = "eu-central-1"
 }
 
 variable "ami_image" {
   description = "AWS AMI image name"
   type = string
 }
 
 variable "ami_image" {
   description = "AWS AMI image name"
   type = string
-  default = "ami-0b418580298265d5c"
 }
 
 variable "testbed_name" {
   description = "Testbed name"
   type = string
 }
 
 variable "testbed_name" {
   description = "Testbed name"
   type = string
-  default = "testbed1"
-}
-
-variable "topology_name" {
-  description = "Prefix used when creating a topology file"
-  type = string
-  default = "2n_aws_c5n"
 }
 
 variable "instance_type" {
   description = "AWS instance type"
   type = string
 }
 
 variable "instance_type" {
   description = "AWS instance type"
   type = string
-  default = "c5n.4xlarge"
 }
 
 variable "avail_zone" {
   description = "AWS availability zone"
   type = string
 }
 
 variable "avail_zone" {
   description = "AWS availability zone"
   type = string
-  default = "eu-central-1a"
+}
+
+variable "topology_name" {
+  description = "Prefix used when creating a topology file"
+  type = string
+  default = "2n_aws_c5n"
 }
 
 variable "environment_name" {
 }
 
 variable "environment_name" {
index a73288d..7a09067 100644 (file)
@@ -1,19 +1,18 @@
 module "deploy" {
   source                    = "./deploy"
 
 module "deploy" {
   source                    = "./deploy"
 
-  # TODO: Use ENV variable for testbed_name for dynamic deployment
-  testbed_name              = "testbed1"
+  # Parameters starting with var. can be set using "TF_VAR_*" environment variables
+  # or -var parameter when running "terraform apply", for default values see ./variables.tf
+  testbed_name              = var.testbed_name
   topology_name             = "2n_aws_c5n"
   environment_name          = "CSIT-AWS"
   resources_name_prefix     = "CSIT_2n_aws_c5n"
 
   # AWS general
   topology_name             = "2n_aws_c5n"
   environment_name          = "CSIT-AWS"
   resources_name_prefix     = "CSIT_2n_aws_c5n"
 
   # AWS general
-  region                    = "eu-central-1"
-  avail_zone                = "eu-central-1a"
-  instance_type             = "c5n.4xlarge"
-  ami_image                 = "ami-0b418580298265d5c"
-  # eu-central-1/bionic-18.04-amd64-hvm-ssd-20200112
-  # kernel 4.15.0-1057-aws (~4.15.0-74)
+  region                    = var.region
+  avail_zone                = var.avail_zone
+  instance_type             = var.instance_type
+  ami_image                 = var.ami_image
 
   # AWS Network
   vpc_cidr_mgmt             = "192.168.0.0/24"
 
   # AWS Network
   vpc_cidr_mgmt             = "192.168.0.0/24"
diff --git a/fdio.infra.terraform/2n_aws_c5n/variables.tf b/fdio.infra.terraform/2n_aws_c5n/variables.tf
new file mode 100644 (file)
index 0000000..15e718b
--- /dev/null
@@ -0,0 +1,31 @@
+variable "region" {
+  description = "AWS Region"
+  type = string
+  default = "eu-central-1"
+}
+
+variable "avail_zone" {
+  description = "AWS availability zone"
+  type = string
+  default = "eu-central-1a"
+}
+
+variable "ami_image" {
+  # eu-central-1/focal-20.04-amd64-hvm-ssd-20210119.1
+  # kernel 5.4.0-1035-aws (~5.4.0-65)
+  description = "AWS AMI image ID"
+  type = string
+  default = "ami-0a875db8a031a9efb"
+}
+
+variable "instance_type" {
+  description = "AWS instance type"
+  type = string
+  default = "c5n.4xlarge"
+}
+
+variable "testbed_name" {
+  description = "Testbed name"
+  type = string
+  default = "testbed1"
+}
index f6fa831..38a9133 100644 (file)
@@ -1,37 +1,32 @@
 variable "region" {
   description = "AWS Region"
   type = string
 variable "region" {
   description = "AWS Region"
   type = string
-  default = "eu-central-1"
 }
 
 variable "ami_image" {
   description = "AWS AMI image name"
   type = string
 }
 
 variable "ami_image" {
   description = "AWS AMI image name"
   type = string
-  default = "ami-0b418580298265d5c"
 }
 
 variable "testbed_name" {
   description = "Testbed name"
   type = string
 }
 
 variable "testbed_name" {
   description = "Testbed name"
   type = string
-  default = "testbed1"
-}
-
-variable "topology_name" {
-  description = "Prefix used when creating a topology file"
-  type = string
-  default = "3n_aws_c5n"
 }
 
 variable "instance_type" {
   description = "AWS instance type"
   type = string
 }
 
 variable "instance_type" {
   description = "AWS instance type"
   type = string
-  default = "c5n.4xlarge"
 }
 
 variable "avail_zone" {
   description = "AWS availability zone"
   type = string
 }
 
 variable "avail_zone" {
   description = "AWS availability zone"
   type = string
-  default = "eu-central-1a"
+}
+
+variable "topology_name" {
+  description = "Prefix used when creating a topology file"
+  type = string
+  default = "3n_aws_c5n"
 }
 
 variable "environment_name" {
 }
 
 variable "environment_name" {
index 0e757b8..0aca7af 100644 (file)
@@ -1,19 +1,18 @@
 module "deploy" {
   source                    = "./deploy"
 
 module "deploy" {
   source                    = "./deploy"
 
-  # TODO: Use ENV variable for testbed_name for dynamic deployment
-  testbed_name              = "testbed1"
+  # Parameters starting with var. can be set using "TF_VAR_*" environment variables
+  # or -var parameter when running "terraform apply", for default values see ./variables.tf
+  testbed_name              = var.testbed_name
   topology_name             = "3n_aws_c5n"
   environment_name          = "CSIT-AWS"
   resources_name_prefix     = "CSIT_3n_aws_c5n"
 
   # AWS general
   topology_name             = "3n_aws_c5n"
   environment_name          = "CSIT-AWS"
   resources_name_prefix     = "CSIT_3n_aws_c5n"
 
   # AWS general
-  region                    = "eu-central-1"
-  avail_zone                = "eu-central-1a"
-  instance_type             = "c5n.4xlarge"
-  ami_image                 = "ami-0b418580298265d5c"
-  # eu-central-1/bionic-18.04-amd64-hvm-ssd-20200112
-  # kernel 4.15.0-1057-aws (~4.15.0-74)
+  region                    = var.region
+  avail_zone                = var.avail_zone
+  instance_type             = var.instance_type
+  ami_image                 = var.ami_image
 
   # AWS Network
   vpc_cidr_mgmt             = "192.168.0.0/24"
 
   # AWS Network
   vpc_cidr_mgmt             = "192.168.0.0/24"
diff --git a/fdio.infra.terraform/3n_aws_c5n/variables.tf b/fdio.infra.terraform/3n_aws_c5n/variables.tf
new file mode 100644 (file)
index 0000000..15e718b
--- /dev/null
@@ -0,0 +1,31 @@
+variable "region" {
+  description = "AWS Region"
+  type = string
+  default = "eu-central-1"
+}
+
+variable "avail_zone" {
+  description = "AWS availability zone"
+  type = string
+  default = "eu-central-1a"
+}
+
+variable "ami_image" {
+  # eu-central-1/focal-20.04-amd64-hvm-ssd-20210119.1
+  # kernel 5.4.0-1035-aws (~5.4.0-65)
+  description = "AWS AMI image ID"
+  type = string
+  default = "ami-0a875db8a031a9efb"
+}
+
+variable "instance_type" {
+  description = "AWS instance type"
+  type = string
+  default = "c5n.4xlarge"
+}
+
+variable "testbed_name" {
+  description = "Testbed name"
+  type = string
+  default = "testbed1"
+}
index deca067..2d20976 100644 (file)
@@ -4,7 +4,7 @@
 - name: Edit repositories
   include_tasks: "{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml"
   tags:
 - name: Edit repositories
   include_tasks: "{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml"
   tags:
-    - edit-repo
+    - aws-edit-repo
 
 - name: Get vfio-pci With WC Patcher
   get_url:
 
 - name: Get vfio-pci With WC Patcher
   get_url:
     dest: "/opt/get-vfio-with-wc.sh"
     mode: "744"
   tags:
     dest: "/opt/get-vfio-with-wc.sh"
     mode: "744"
   tags:
-    - vfio-aws-patch
+    - aws-vfio-patch
 
 - name: Create vfio-pci Patch Directory
   file:
     path: "/opt/patches/"
     state: "directory"
   tags:
 
 - name: Create vfio-pci Patch Directory
   file:
     path: "/opt/patches/"
     state: "directory"
   tags:
-    - vfio-aws-patch
+    - aws-vfio-patch
 
 
-- name: Get vfio-pci WC Patch
+- name: Get vfio-pci WC Patch >=4.10
   get_url:
     url: "https://github.com/amzn/amzn-drivers/raw/master/userspace/dpdk/enav2-vfio-patch/patches/linux-4.10-vfio-wc.patch"
     dest: "/opt/patches/linux-4.10-vfio-wc.patch"
     mode: "744"
   tags:
   get_url:
     url: "https://github.com/amzn/amzn-drivers/raw/master/userspace/dpdk/enav2-vfio-patch/patches/linux-4.10-vfio-wc.patch"
     dest: "/opt/patches/linux-4.10-vfio-wc.patch"
     mode: "744"
   tags:
-    - vfio-aws-patch
+    - aws-vfio-patch
+
+- name: Get vfio-pci WC Patch >=5.8
+  get_url:
+    url: "https://github.com/amzn/amzn-drivers/raw/master/userspace/dpdk/enav2-vfio-patch/patches/linux-5.8-vfio-wc.patch"
+    dest: "/opt/patches/linux-5.8-vfio-wc.patch"
+    mode: "744"
+  tags:
+    - aws-vfio-patch
 
 - name: Compile vfio-pci With WC Patch
   shell: "/bin/bash /opt/get-vfio-with-wc.sh"
   tags:
 
 - name: Compile vfio-pci With WC Patch
   shell: "/bin/bash /opt/get-vfio-with-wc.sh"
   tags:
-    - vfio-aws-patch
+    - aws-vfio-patch
 
 - name: Load Kernel Modules By Default
   lineinfile:
 
 - name: Load Kernel Modules By Default
   lineinfile:
@@ -43,7 +51,7 @@
     - "vfio-pci"
     - "igb_uio"
   tags:
     - "vfio-pci"
     - "igb_uio"
   tags:
-    - load-kernel-modules
+    - aws-load-kernel-modules
 
 - name: Add Kernel Modules Options (igb_uio)
   lineinfile:
 
 - name: Add Kernel Modules Options (igb_uio)
   lineinfile:
@@ -54,7 +62,7 @@
   with_items:
     - "options igb_uio wc_activate=1"
   tags:
   with_items:
     - "options igb_uio wc_activate=1"
   tags:
-    - load-kernel-modules
+    - aws-load-kernel-modules
 
 - name: Add Kernel Modules Options (vfio-pci)
   lineinfile:
 
 - name: Add Kernel Modules Options (vfio-pci)
   lineinfile:
   with_items:
     - "options vfio enable_unsafe_noiommu_mode=1"
   tags:
   with_items:
     - "options vfio enable_unsafe_noiommu_mode=1"
   tags:
-    - load-kernel-modules
+    - aws-load-kernel-modules
 
 - name: Reload systemd-modules
   systemd:
     name: "systemd-modules-load"
     state: "restarted"
   tags:
 
 - name: Reload systemd-modules
   systemd:
     name: "systemd-modules-load"
     state: "restarted"
   tags:
-    - reload-systemd-modules
+    - aws-reload-systemd-modules
 
 - name: Performance Tuning - Adjust nr_hugepages
   sysctl:
 
 - name: Performance Tuning - Adjust nr_hugepages
   sysctl:
@@ -82,4 +90,4 @@
     sysctl_file: "/etc/sysctl.d/90-csit.conf"
     reload: "yes"
   tags:
     sysctl_file: "/etc/sysctl.d/90-csit.conf"
     reload: "yes"
   tags:
-    - set-sysctl
+    - aws-set-hugepages
index ba6e107..bca1cf5 100644 (file)
@@ -7,4 +7,4 @@
     state: "present"
     update_cache: yes
   tags:
     state: "present"
     update_cache: yes
   tags:
-    - enable-src-repo
\ No newline at end of file
+    - aws-enable-src-repo
diff --git a/resources/tools/testbed-setup/ansible/roles/aws/tasks/ubuntu_focal.yaml b/resources/tools/testbed-setup/ansible/roles/aws/tasks/ubuntu_focal.yaml
new file mode 100644 (file)
index 0000000..a8cc56c
--- /dev/null
@@ -0,0 +1,10 @@
+---
+# file: roles/aws/tasks/ubuntu_focal.yaml.yaml
+
+- name: Enable deb-src APT Repository
+  apt_repository:
+    repo: "deb-src http://archive.ubuntu.com/ubuntu focal main"
+    state: "present"
+    update_cache: yes
+  tags:
+    - aws-enable-src-repo
index 5eb9453..020c011 100644 (file)
@@ -38,7 +38,7 @@ kernel_version_by_distro_by_arch:
       x86_64:
         - "5.4.0-65-generic"
         - "5.3.0-1020-azure"
       x86_64:
         - "5.4.0-65-generic"
         - "5.3.0-1020-azure"
-        - "5.3.0-1017-aws"
+        - "5.4.0-1035-aws"
       aarch64:
         - "5.4.0-65-generic"
 
       aarch64:
         - "5.4.0-65-generic"
 
index 5d0c3b1..696f1c9 100644 (file)
@@ -40,6 +40,8 @@
     fail_msg: "Kernel parameters!"
     success_msg: "Kernel parameters match."
   loop: "{{ grub.keys()|sort }}"
     fail_msg: "Kernel parameters!"
     success_msg: "Kernel parameters match."
   loop: "{{ grub.keys()|sort }}"
+  when:
+    - grub is defined
   tags:
     - check-kernel-params
 
   tags:
     - check-kernel-params
 
index abc25a2..37a96c2 100644 (file)
       tags: aws
     - role: cleanup
       tags: cleanup
       tags: aws
     - role: cleanup
       tags: cleanup
-    # TODO: 'Check Kernel Parameters' failing in
-    # resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
-    # - role: calibration
-    #   tags: calibration
+    - role: calibration
+      tags: calibration
 
 - hosts: sut_azure
   become: yes
 
 - hosts: sut_azure
   become: yes
index 69728a6..3d5137f 100644 (file)
       tags: aws
     - role: cleanup
       tags: cleanup
       tags: aws
     - role: cleanup
       tags: cleanup
-    # TODO: 'Check Kernel Parameters' failing in
-    # resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
-    # - role: calibration
-    #   tags: calibration
+    - role: calibration
+      tags: calibration
 
 - hosts: tg_azure
   become: yes
 
 - hosts: tg_azure
   become: yes