From: pmikus Date: Wed, 21 Sep 2022 10:36:29 +0000 (+0200) Subject: feat(packer): Migrate AWS images X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=26f0801f182fbc2d7f4502b69771cef2f3f6010d;hp=28964faec0f8864de45446245e3e9431de394150 feat(packer): Migrate AWS images Signed-off-by: pmikus Change-Id: Ia1940e18b60e38ba559f0ebf1a8d72a4d18cebdb --- diff --git a/fdio.infra.ansible/roles/aws/tasks/main.yaml b/fdio.infra.ansible/roles/aws/tasks/main.yaml index 2b8c22ccce..321f2f64f2 100644 --- a/fdio.infra.ansible/roles/aws/tasks/main.yaml +++ b/fdio.infra.ansible/roles/aws/tasks/main.yaml @@ -7,7 +7,7 @@ - aws-edit-repo - name: Get vfio-pci With WC Patcher - get_url: + ansible.builtin.get_url: url: "https://github.com/amzn/amzn-drivers/raw/master/userspace/dpdk/enav2-vfio-patch/get-vfio-with-wc.sh" dest: "/opt/get-vfio-with-wc.sh" mode: "744" @@ -15,35 +15,46 @@ - aws-vfio-patch - name: Create vfio-pci Patch Directory - file: + ansible.builtin.file: path: "/opt/patches/" state: "directory" tags: - aws-vfio-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" +- name: Get vfio-pci WC Patch >=5.15 + ansible.builtin.get_url: + url: "https://github.com/amzn/amzn-drivers/raw/master/userspace/dpdk/enav2-vfio-patch/patches/linux-5.15-vfio-wc.patch" + dest: "/opt/patches/linux-5.15-vfio-wc.patch" mode: "744" tags: - 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" +- name: Patch WC Patch Script + ansible.builtin.lineinfile: + path: "/opt/get-vfio-with-wc.sh" + regexp: '^ rm -f linux-' + line: " rm -f linux-*.dsc linux-*.gz linux-*.xz" tags: - aws-vfio-patch -- name: Compile vfio-pci With WC Patch - shell: "/bin/bash /opt/get-vfio-with-wc.sh" +- name: Patch WC Patch Script II + ansible.builtin.replace: + path: "/opt/get-vfio-with-wc.sh" + regexp: 'linux-image-' + replace: 'linux-image-unsigned-' tags: - aws-vfio-patch +#- name: Compile vfio-pci With WC Patch +# ansible.builtin.shell: "/bin/bash /opt/get-vfio-with-wc.sh" +# environment: +# DEBIAN_FRONTEND: "noninteractive" +# TERM: "vt100" +# tags: +# - aws-vfio-patch + - name: Load Kernel Modules By Default - lineinfile: + ansible.builtin.lineinfile: path: "/etc/modules" state: "present" line: "{{ item }}" @@ -54,7 +65,7 @@ - aws-load-kernel-modules - name: Add Kernel Modules Options (igb_uio) - lineinfile: + ansible.builtin.lineinfile: path: "/etc/modprobe.d/igb_uio.conf" state: "present" line: "{{ item }}" @@ -65,7 +76,7 @@ - aws-load-kernel-modules - name: Add Kernel Modules Options (vfio-pci) - lineinfile: + ansible.builtin.lineinfile: path: "/etc/modprobe.d/vfio-noiommu.conf" state: "present" line: "{{ item }}" @@ -76,14 +87,14 @@ - aws-load-kernel-modules - name: Reload systemd-modules - systemd: + ansible.builtin.systemd: name: "systemd-modules-load" state: "restarted" tags: - aws-reload-systemd-modules - name: Adjust nr_hugepages - sysctl: + ansible.builtin.sysctl: name: "vm.nr_hugepages" value: "8192" state: "present" @@ -93,6 +104,6 @@ - aws-set-hugepages - name: Shutdown host with delay - command: "/sbin/shutdown -P +720" + ansible.builtin.command: "/sbin/shutdown -P +720" tags: - aws-set-self-terminate diff --git a/fdio.infra.ansible/roles/aws/tasks/ubuntu_focal.yaml b/fdio.infra.ansible/roles/aws/tasks/ubuntu_focal.yaml deleted file mode 100644 index 60302f2309..0000000000 --- a/fdio.infra.ansible/roles/aws/tasks/ubuntu_focal.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# 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: true - tags: - - aws-enable-src-repo diff --git a/fdio.infra.ansible/roles/aws/tasks/ubuntu_jammy.yaml b/fdio.infra.ansible/roles/aws/tasks/ubuntu_jammy.yaml index 4ee1545baf..28e852476a 100644 --- a/fdio.infra.ansible/roles/aws/tasks/ubuntu_jammy.yaml +++ b/fdio.infra.ansible/roles/aws/tasks/ubuntu_jammy.yaml @@ -1,8 +1,8 @@ --- -# file: roles/aws/tasks/ubuntu_jammy.yaml.yaml +# file: roles/aws/tasks/ubuntu_jammy.yaml - name: Enable deb-src APT Repository - apt_repository: + ansible.builtin.apt_repository: repo: "deb-src http://archive.ubuntu.com/ubuntu jammy main" state: "present" update_cache: true diff --git a/fdio.infra.packer/aws_c5n/ubuntu_jammy.pkr.hcl b/fdio.infra.packer/aws_c5n/ubuntu_jammy.pkr.hcl new file mode 100644 index 0000000000..e21782f3ac --- /dev/null +++ b/fdio.infra.packer/aws_c5n/ubuntu_jammy.pkr.hcl @@ -0,0 +1,128 @@ +packer { + required_plugins { + amazon = { + version = ">= 1.0.1" + source = "github.com/hashicorp/amazon" + } + } +} + +variable "first_run_commands" { + description = "Commands to run before deployment via remote-exec" + type = list(string) + default = [ + "" + ] +} + +variable "last_run_commands" { + description = "Commands to run after deployment via remote-exec" + type = list(string) + default = [ + "sudo sed -i 's/Unattended-Upgrade \"1\"/Unattended-Upgrade \"0\"/g' /etc/apt/apt.conf.d/20auto-upgrades" + ] +} + +variable "ansible_file_path" { + description = "Path to Ansible playbook" + type = string + default = "../../fdio.infra.ansible/site.yaml" +} + +variable "ansible_python_executable" { + description = "Path to Python interpreter" + type = string + default = "/usr/bin/python3" +} + +variable "ansible_topology_path" { + description = "Path to Ansible playbook which creates a topology file" + type = string + default = "../../fdio.infra.ansible/cloud_topology.yaml" +} + +variable "ansible_provision_pwd" { + description = "Password used for ansible provisioning (ansible_ssh_pass)" + type = string + default = "Csit1234" +} + +source "amazon-ebs" "csit_c5n_ubuntu_jammy_sut" { + ami_name = "csit_c5n_ubuntu_jammy_sut" + ami_description = "CSIT SUT image based on Ubuntu Jammy" + ena_support = true + instance_type = "c5n.4xlarge" + launch_block_device_mappings { + device_name = "/dev/sda1" + volume_size = 40 + volume_type = "gp2" + } + force_deregister = true + region = "eu-central-1" + skip_create_ami = false + source_ami = "ami-065deacbcaac64cf2" + ssh_username = "ubuntu" +} + +source "amazon-ebs" "csit_c5n_ubuntu_jammy_tg" { + ami_name = "csit_c5n_ubuntu_jammy_tg" + ami_description = "CSIT TG image based on Ubuntu Jammy" + ena_support = true + instance_type = "c5n.4xlarge" + launch_block_device_mappings { + device_name = "/dev/sda1" + volume_size = 40 + volume_type = "gp2" + } + force_deregister = true + region = "eu-central-1" + skip_create_ami = false + source_ami = "ami-065deacbcaac64cf2" + ssh_username = "ubuntu" +} + +build { + name = "csit_c5n_ubuntu_jammy_sut-packer" + sources = [ + "source.amazon-ebs.csit_c5n_ubuntu_jammy_sut" + ] + provisioner "shell" { + inline = var.first_run_commands + } + provisioner "ansible" { + playbook_file = var.ansible_file_path + user = "ubuntu" + groups = ["sut_aws"] + extra_arguments = [ + "--extra-vars", "ansible_ssh_pass=${var.ansible_provision_pwd}", + "--extra-vars", "ansible_python_interpreter=${var.ansible_python_executable}", + "--extra-vars", "aws=true" + ] + } + provisioner "shell" { + inline = var.last_run_commands + } +} + +build { + name = "csit_c5n_ubuntu_jammy_tg-packer" + sources = [ + "source.amazon-ebs.csit_c5n_ubuntu_jammy_tg" + ] + provisioner "shell" { + inline = var.first_run_commands + } + provisioner "ansible" { + playbook_file = var.ansible_file_path + user = "ubuntu" + groups = ["tg_aws"] + extra_arguments = [ + "--extra-vars", "ansible_ssh_pass=${var.ansible_provision_pwd}", + "--extra-vars", "ansible_python_interpreter=${var.ansible_python_executable}", + "--extra-vars", "aws=true" + ] + } + provisioner "shell" { + inline = var.last_run_commands + } +} diff --git a/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf index e2ec8aa70c..e809feb90c 100644 --- a/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf +++ b/fdio.infra.terraform/terraform-aws-2n-aws-c5n/variables.tf @@ -50,7 +50,7 @@ variable "placement_group_strategy" { variable "tg_ami" { description = "AMI to use for the instance." type = string - default = "ami-01d1d62914ef00b25" + default = "ami-0c8a3d7a52942c322" } variable "tg_associate_public_ip_address" { @@ -86,7 +86,7 @@ variable "tg_source_dest_check" { variable "sut1_ami" { description = "AMI to use for the instance." type = string - default = "ami-0bfdf32a014984d8a" + default = "ami-0f0ea5b110cddccb1" } variable "sut1_associate_public_ip_address" {