From 6bc0123c235171918a6193b1551ed4d4d82c2fec Mon Sep 17 00:00:00 2001 From: Maros Mullner Date: Thu, 13 Feb 2020 10:57:02 +0100 Subject: AWS terraform automation scripts Change-Id: I050fe466dd006d330d1bb29cc6ccba8ae4681f01 Signed-off-by: Maros Mullner --- .../testbed-setup/ansible/cloud_topology.yaml | 9 +++ .../ansible/roles/aws/defaults/main.yaml | 3 + .../ansible/roles/aws/handlers/main.yaml | 8 +++ .../ansible/roles/aws/tasks/main.yaml | 24 +++++++ .../ansible/roles/iperf/tasks/main.yaml | 2 +- .../ansible/roles/topology/tasks/main.yaml | 9 +++ .../ansible/roles/user_add/defaults/main.yaml | 5 ++ .../ansible/roles/user_add/handlers/main.yaml | 10 +++ .../ansible/roles/user_add/tasks/main.yaml | 31 ++++++++ .../tools/testbed-setup/ansible/site_aws.yaml | 8 +++ resources/tools/testbed-setup/ansible/sut_aws.yaml | 23 ++++++ .../tools/testbed-setup/ansible/sut_azure.yaml | 3 +- .../ansible/templates/topology_aws.j2 | 83 ++++++++++++++++++++++ .../ansible/templates/topology_azure.j2 | 6 +- resources/tools/testbed-setup/ansible/tg_aws.yaml | 27 +++++++ .../tools/testbed-setup/ansible/tg_azure.yaml | 3 +- 16 files changed, 248 insertions(+), 6 deletions(-) create mode 100644 resources/tools/testbed-setup/ansible/cloud_topology.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/aws/defaults/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/aws/handlers/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/aws/tasks/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/topology/tasks/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/user_add/defaults/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/user_add/handlers/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/roles/user_add/tasks/main.yaml create mode 100644 resources/tools/testbed-setup/ansible/site_aws.yaml create mode 100644 resources/tools/testbed-setup/ansible/sut_aws.yaml create mode 100644 resources/tools/testbed-setup/ansible/templates/topology_aws.j2 create mode 100644 resources/tools/testbed-setup/ansible/tg_aws.yaml (limited to 'resources/tools/testbed-setup') diff --git a/resources/tools/testbed-setup/ansible/cloud_topology.yaml b/resources/tools/testbed-setup/ansible/cloud_topology.yaml new file mode 100644 index 0000000000..083a3bd368 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/cloud_topology.yaml @@ -0,0 +1,9 @@ +--- +# file: cloud_topology.yaml + +- hosts: localhost + gather_facts: false + roles: + - role: topology + tags: topology + diff --git a/resources/tools/testbed-setup/ansible/roles/aws/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/aws/defaults/main.yaml new file mode 100644 index 0000000000..706e552f96 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/aws/defaults/main.yaml @@ -0,0 +1,3 @@ +--- +# file: roles/aws/defaults/main.yaml + diff --git a/resources/tools/testbed-setup/ansible/roles/aws/handlers/main.yaml b/resources/tools/testbed-setup/ansible/roles/aws/handlers/main.yaml new file mode 100644 index 0000000000..b155b4b246 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/aws/handlers/main.yaml @@ -0,0 +1,8 @@ +--- +# file: roles/aws/handlers/main.yaml + +- name: Reboot server + reboot: + reboot_timeout: 3600 + tags: + - reboot-server diff --git a/resources/tools/testbed-setup/ansible/roles/aws/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/aws/tasks/main.yaml new file mode 100644 index 0000000000..94dcff4ef3 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/aws/tasks/main.yaml @@ -0,0 +1,24 @@ +--- +# file: roles/aws/tasks/main.yaml + +- name: AWS - Load Kernel Modules By Default + lineinfile: + path: "/etc/modules" + state: "present" + line: "{{ item }}" + with_items: + - "vfio-pci" + tags: + - load-kernel-modules + +- name: Performance Tuning - Adjust nr_hugepages + # change the minimum size of the hugepage pool. + # 2G VPP, 4GB per VNF/CNF, 2G reserve + sysctl: + name: "vm.nr_hugepages" + value: "8192" + state: "present" + sysctl_file: "/etc/sysctl.d/90-csit.conf" + reload: "yes" + tags: + - set-sysctl diff --git a/resources/tools/testbed-setup/ansible/roles/iperf/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/iperf/tasks/main.yaml index e43206bf8d..e77fdbcae3 100644 --- a/resources/tools/testbed-setup/ansible/roles/iperf/tasks/main.yaml +++ b/resources/tools/testbed-setup/ansible/roles/iperf/tasks/main.yaml @@ -29,7 +29,7 @@ remote_src: true src: "{{ iperf_target_dir }}/iperf-{{ iperf_version }}.tar.gz" dest: "{{ iperf_target_dir }}/" - creates: "{{ iperf_target_dir }}/iperf-{{ iperf_version }}/" + creates: "{{ iperf_target_dir }}/iperf-{{ iperf_version }}/src" tags: - install-iperf diff --git a/resources/tools/testbed-setup/ansible/roles/topology/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/topology/tasks/main.yaml new file mode 100644 index 0000000000..a2e67f4153 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/topology/tasks/main.yaml @@ -0,0 +1,9 @@ +--- +# file: roles/topology/tasks/main.yaml + +- name: Create topology file + template: + src: 'templates/topology_{{ cloud_topology }}.j2' + dest: '../../../../topologies/available/{{ cloud_topology }}_3n_skx_testbed.yaml' + tags: + - create-topology-file diff --git a/resources/tools/testbed-setup/ansible/roles/user_add/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/user_add/defaults/main.yaml new file mode 100644 index 0000000000..9e5aaf272c --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/user_add/defaults/main.yaml @@ -0,0 +1,5 @@ +--- +# file: roles/user_add/defaults/main.yaml + +user_pass: "$6$zpBUdQ4q$P2zKclumvCndWujgP/qQ8eMk3YZk7ESAom04Fqp26hJH2jWkMXEX..jqxzMdDLJKiDaDHIaSkQMVjHzd3cRLs1" + diff --git a/resources/tools/testbed-setup/ansible/roles/user_add/handlers/main.yaml b/resources/tools/testbed-setup/ansible/roles/user_add/handlers/main.yaml new file mode 100644 index 0000000000..e6b7d82844 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/user_add/handlers/main.yaml @@ -0,0 +1,10 @@ +--- +# file: roles/user_add/handlers/main.yaml + +- name: Restart sshd + service: + name: sshd + state: restarted + tags: + - restart-sshd + diff --git a/resources/tools/testbed-setup/ansible/roles/user_add/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/user_add/tasks/main.yaml new file mode 100644 index 0000000000..2672996202 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/user_add/tasks/main.yaml @@ -0,0 +1,31 @@ +--- +# file: roles/user_add/tasks/main.yaml + +- name: Add testuser account + user: + name: "testuser" + state: present + shell: "/bin/bash" + password: "{{ user_pass }}" + tags: + - add-user + +- name: Allow password login + lineinfile: + dest: "/etc/ssh/sshd_config" + regexp: "^PasswordAuthentication no" + line: "PasswordAuthentication yes" + notify: + - "Restart sshd" + tags: + - allow-password-login + +- name: Add visudo entry + lineinfile: + dest: "/etc/sudoers" + state: present + line: "testuser ALL=(ALL) NOPASSWD: ALL" + validate: "visudo -cf %s" + tags: + - allow-sudo + diff --git a/resources/tools/testbed-setup/ansible/site_aws.yaml b/resources/tools/testbed-setup/ansible/site_aws.yaml new file mode 100644 index 0000000000..4e23a97f85 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/site_aws.yaml @@ -0,0 +1,8 @@ +--- +# file: site_aws.yaml + +- import_playbook: tg_aws.yaml + tags: tg + +- import_playbook: sut_aws.yaml + tags: sut diff --git a/resources/tools/testbed-setup/ansible/sut_aws.yaml b/resources/tools/testbed-setup/ansible/sut_aws.yaml new file mode 100644 index 0000000000..4c71e290f3 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/sut_aws.yaml @@ -0,0 +1,23 @@ +--- +# file: sut_aws.yaml + +- hosts: sut + become: yes + become_user: root + roles: + - role: user_add + tags: user_add + - role: common + tags: common + - role: aws + tags: aws + - role: iperf + tags: iperf + - role: docker + tags: docker + - role: dpdk + tags: dpdk + - role: cleanup + tags: cleanup + - role: calibration + tags: calibration diff --git a/resources/tools/testbed-setup/ansible/sut_azure.yaml b/resources/tools/testbed-setup/ansible/sut_azure.yaml index be45810a60..4fd897d03a 100644 --- a/resources/tools/testbed-setup/ansible/sut_azure.yaml +++ b/resources/tools/testbed-setup/ansible/sut_azure.yaml @@ -2,10 +2,11 @@ # file: sut_azure.yaml - hosts: sut - remote_user: testuser become: yes become_user: root roles: + - role: user_add + tags: user_add - role: common tags: common - role: azure diff --git a/resources/tools/testbed-setup/ansible/templates/topology_aws.j2 b/resources/tools/testbed-setup/ansible/templates/topology_aws.j2 new file mode 100644 index 0000000000..631b0be63b --- /dev/null +++ b/resources/tools/testbed-setup/ansible/templates/topology_aws.j2 @@ -0,0 +1,83 @@ +--- +metadata: + version: 0.1 + schema: + - resources/topology_schemas/3_node_topology.sch.yaml + - resources/topology_schemas/topology.sch.yaml + tags: [hw, 3-node] + +nodes: + TG: + type: TG + subtype: TREX + host: "{{ tg_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + interfaces: + port1: + # tg_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ tg_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-50G + port2: + # tg_instance/p2 - 50GE port2 on ENA NIC. + mac_address: {{ tg_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-50G + DUT1: + type: DUT + host: "{{ dut1_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + honeycomb: + user: admin + passwd: admin + port: 8183 + netconf_port: 2831 + interfaces: + port1: + # dut1_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ dut1_if1_mac }} + pci_address: "0000:00:06.0" + link: link1 + model: Amazon-Nitro-50G + port2: + # dut1_instance/p2 - 50GE port2 on ENA NIC. + mac_address: {{ dut1_if2_mac }} + pci_address: "0000:00:07.0" + link: link21 + model: Amazon-Nitro-50G + DUT2: + type: DUT + host: "{{ dut2_public_ip }}" + arch: x86_64 + port: 22 + username: testuser + password: Csit1234 + uio_driver: vfio-pci + honeycomb: + user: admin + passwd: admin + port: 8183 + netconf_port: 2831 + interfaces: + port1: + # dut2_instance/p1 - 50GE port1 on ENA NIC. + mac_address: {{ dut2_if1_mac }} + pci_address: "0000:00:06.0" + link: link21 + model: Amazon-Nitro-50G + port2: + # dut2_instance/p2 - 50GE port1 on ENA NIC. + mac_address: {{ dut2_if2_mac }} + pci_address: "0000:00:07.0" + link: link2 + model: Amazon-Nitro-50G + diff --git a/resources/tools/testbed-setup/ansible/templates/topology_azure.j2 b/resources/tools/testbed-setup/ansible/templates/topology_azure.j2 index ef8b22eab1..ae0ae5295b 100644 --- a/resources/tools/testbed-setup/ansible/templates/topology_azure.j2 +++ b/resources/tools/testbed-setup/ansible/templates/topology_azure.j2 @@ -10,7 +10,7 @@ nodes: TG: type: TG subtype: TREX - host: "{{ ansible_default_ipv4.address }}" + host: "{{ tg_public_ip }}" arch: x86_64 port: 22 username: testuser @@ -30,7 +30,7 @@ nodes: model: azure-mlx-40g DUT1: type: DUT - host: "{{ ansible_default_ipv4.address }}" + host: "{{ dut1_public_ip }}" arch: x86_64 port: 22 username: testuser @@ -56,7 +56,7 @@ nodes: model: azure-mlx-40g DUT2: type: DUT - host: "{{ ansible_default_ipv4.address }}" + host: "{{ dut2_public_ip }}" arch: x86_64 port: 22 username: testuser diff --git a/resources/tools/testbed-setup/ansible/tg_aws.yaml b/resources/tools/testbed-setup/ansible/tg_aws.yaml new file mode 100644 index 0000000000..4b5299f255 --- /dev/null +++ b/resources/tools/testbed-setup/ansible/tg_aws.yaml @@ -0,0 +1,27 @@ +--- +# file: tg_aws.yaml + +- hosts: tg + become: yes + become_user: root + roles: + - role: user_add + tags: user_add + - role: common + tags: common + - role: aws + tags: aws + - role: tg + tags: tg + - role: iperf + tags: iperf + - role: trex + tags: trex + - role: wrk + tags: wrk + - role: docker + tags: docker + - role: cleanup + tags: cleanup + - role: calibration + tags: calibration diff --git a/resources/tools/testbed-setup/ansible/tg_azure.yaml b/resources/tools/testbed-setup/ansible/tg_azure.yaml index 4ab2295296..e28d0d3336 100644 --- a/resources/tools/testbed-setup/ansible/tg_azure.yaml +++ b/resources/tools/testbed-setup/ansible/tg_azure.yaml @@ -2,10 +2,11 @@ # file: tg_azure.yaml - hosts: tg - remote_user: testuser become: yes become_user: root roles: + - role: user_add + tags: user_add - role: common tags: common - role: azure -- cgit 1.2.3-korg