Max Gautier
1 week ago
Failed to extract signature
2 changed files with 50 additions and 53 deletions
Split View
Diff Options
-
49tests/cloud_playbooks/roles/packet-ci/tasks/create-vms.yml
-
54tests/cloud_playbooks/roles/packet-ci/tasks/main.yml
@ -1,49 +0,0 @@ |
|||
--- |
|||
- name: Start vms for CI job |
|||
vars: |
|||
# Workaround for compatibility when testing upgrades with old == before e9d406ed088d4291ef1d9018c170a4deed2bf928 |
|||
# TODO: drop after 2.27.0 |
|||
legacy_groups: "{{ (['kube_control_plane', 'kube_node', 'calico_rr'] | intersect(item) | length > 0) | ternary(['k8s_cluster'], []) }}" |
|||
tvars: |
|||
kubespray_groups: "{{ item + legacy_groups }}" |
|||
kubernetes.core.k8s: |
|||
definition: "{{ lookup('template', 'vm.yml.j2', template_vars=tvars) }}" |
|||
loop: "{{ scenarios[mode | d('default')] }}" |
|||
|
|||
- name: Wait for vms to have IP addresses |
|||
kubernetes.core.k8s_info: |
|||
api_version: kubevirt.io/v1 |
|||
kind: VirtualMachineInstance |
|||
label_selectors: |
|||
- "ci_job_id={{ ci_job_id }}" |
|||
namespace: "{{ pod_namespace }}" |
|||
register: vmis |
|||
until: vmis.resources |
|||
| map(attribute='status.interfaces.0') |
|||
| rejectattr('ipAddress', 'defined') == [] |
|||
retries: 30 |
|||
delay: 10 |
|||
|
|||
- name: Massage VirtualMachineInstance data into an Ansible inventory structure |
|||
vars: |
|||
ips: "{{ vmis.resources | map(attribute='status.interfaces.0.ipAddress') }}" |
|||
names: "{{ vmis.resources | map(attribute='metadata.name') }}" |
|||
_groups: "{{ vmis.resources | map(attribute='metadata.annotations.ansible_groups') | map('split', ',') }}" |
|||
hosts: "{{ ips | zip(_groups, names) |
|||
| map('zip', ['ansible_host', 'ansible_groups', 'k8s_vmi_name']) |
|||
| map('map', 'reverse') | map('community.general.dict') }}" |
|||
loop: "{{ hosts | map(attribute='ansible_groups') | flatten | unique }}" |
|||
set_fact: |
|||
ci_inventory: "{{ ci_inventory|d({}) | combine({ |
|||
item: { |
|||
'hosts': hosts | selectattr('ansible_groups', 'contains', item) |
|||
| rekey_on_member('k8s_vmi_name') |
|||
} |
|||
}) |
|||
}}" |
|||
|
|||
- name: Create inventory for CI tests |
|||
copy: |
|||
content: "{{ ci_inventory | to_yaml }}" |
|||
dest: "{{ inventory_path }}/ci_inventory.yml" |
|||
mode: "0644" |
@ -1,6 +1,52 @@ |
|||
--- |
|||
|
|||
- name: "Include custom vars for ci job: {{ ci_job_name }}" |
|||
- name: Include custom vars for ci job |
|||
include_vars: "../files/{{ ci_job_name }}.yml" |
|||
- name: Create VMs |
|||
import_tasks: create-vms.yml |
|||
|
|||
- name: Start vms for CI job |
|||
vars: |
|||
# Workaround for compatibility when testing upgrades with old == before e9d406ed088d4291ef1d9018c170a4deed2bf928 |
|||
# TODO: drop after 2.27.0 |
|||
legacy_groups: "{{ (['kube_control_plane', 'kube_node', 'calico_rr'] | intersect(item) | length > 0) | ternary(['k8s_cluster'], []) }}" |
|||
tvars: |
|||
kubespray_groups: "{{ item + legacy_groups }}" |
|||
kubernetes.core.k8s: |
|||
definition: "{{ lookup('template', 'vm.yml.j2', template_vars=tvars) }}" |
|||
loop: "{{ scenarios[mode | d('default')] }}" |
|||
|
|||
- name: Wait for vms to have IP addresses |
|||
kubernetes.core.k8s_info: |
|||
api_version: kubevirt.io/v1 |
|||
kind: VirtualMachineInstance |
|||
label_selectors: |
|||
- "ci_job_id={{ ci_job_id }}" |
|||
namespace: "{{ pod_namespace }}" |
|||
register: vmis |
|||
until: vmis.resources |
|||
| map(attribute='status.interfaces.0') |
|||
| rejectattr('ipAddress', 'defined') == [] |
|||
retries: 30 |
|||
delay: 10 |
|||
|
|||
- name: Massage VirtualMachineInstance data into an Ansible inventory structure |
|||
vars: |
|||
ips: "{{ vmis.resources | map(attribute='status.interfaces.0.ipAddress') }}" |
|||
names: "{{ vmis.resources | map(attribute='metadata.name') }}" |
|||
_groups: "{{ vmis.resources | map(attribute='metadata.annotations.ansible_groups') | map('split', ',') }}" |
|||
hosts: "{{ ips | zip(_groups, names) |
|||
| map('zip', ['ansible_host', 'ansible_groups', 'k8s_vmi_name']) |
|||
| map('map', 'reverse') | map('community.general.dict') }}" |
|||
loop: "{{ hosts | map(attribute='ansible_groups') | flatten | unique }}" |
|||
set_fact: |
|||
ci_inventory: "{{ ci_inventory|d({}) | combine({ |
|||
item: { |
|||
'hosts': hosts | selectattr('ansible_groups', 'contains', item) |
|||
| rekey_on_member('k8s_vmi_name') |
|||
} |
|||
}) |
|||
}}" |
|||
|
|||
- name: Create inventory for CI tests |
|||
copy: |
|||
content: "{{ ci_inventory | to_yaml }}" |
|||
dest: "{{ inventory_path }}/ci_inventory.yml" |
|||
mode: "0644" |
Write
Preview
Loading…
Cancel
Save