70 lines
2.2 KiB
YAML
70 lines
2.2 KiB
YAML
---
|
|
# showcase/remove-setup-nic.yml — Remove temporary internet NIC
|
|
#
|
|
# Removes the eth-setup device added by common.yml after package
|
|
# installation is complete. Uses the Incus PUT API to remove the device.
|
|
# Running containers return 202 (async), so we accept that and wait.
|
|
|
|
- name: Remove temporary incusbr0 NIC
|
|
ansible.builtin.uri:
|
|
url: "{{ incus_api }}/1.0/instances/{{ ffsdn_instance_name }}"
|
|
method: GET
|
|
client_cert: "{{ incus_cert }}"
|
|
client_key: "{{ incus_key }}"
|
|
validate_certs: false
|
|
return_content: true
|
|
register: instance_config
|
|
|
|
- name: Delete eth-setup device from instance
|
|
ansible.builtin.uri:
|
|
url: "{{ incus_api }}/1.0/instances/{{ ffsdn_instance_name }}"
|
|
method: PUT
|
|
client_cert: "{{ incus_cert }}"
|
|
client_key: "{{ incus_key }}"
|
|
validate_certs: false
|
|
body_format: json
|
|
body: >-
|
|
{{
|
|
instance_config.json.metadata
|
|
| combine({
|
|
'devices': instance_config.json.metadata.devices
|
|
| dict2items
|
|
| rejectattr('key', 'equalto', 'eth-setup')
|
|
| items2dict
|
|
})
|
|
}}
|
|
status_code: [200, 202]
|
|
return_content: true
|
|
headers:
|
|
If-Match: "{{ instance_config.headers.etag | default('') }}"
|
|
register: nic_remove_result
|
|
when: "'eth-setup' in instance_config.json.metadata.devices"
|
|
|
|
- name: Wait for device removal to complete
|
|
ansible.builtin.uri:
|
|
url: "{{ incus_api }}{{ nic_remove_result.json.operation }}/wait?timeout=30"
|
|
method: GET
|
|
client_cert: "{{ incus_cert }}"
|
|
client_key: "{{ incus_key }}"
|
|
validate_certs: false
|
|
return_content: true
|
|
when:
|
|
- nic_remove_result is defined
|
|
- nic_remove_result.status | default(200) == 202
|
|
|
|
- name: Clean up eth1 network config inside container
|
|
ansible.builtin.uri:
|
|
url: "{{ incus_api }}/1.0/instances/{{ ffsdn_instance_name }}/exec"
|
|
method: POST
|
|
client_cert: "{{ incus_cert }}"
|
|
client_key: "{{ incus_key }}"
|
|
validate_certs: false
|
|
body_format: json
|
|
body:
|
|
command: ["/bin/rm", "-f", "/etc/systemd/network/80-eth1.network", "/tmp/activate-eth1.sh"]
|
|
record-output: false
|
|
interactive: false
|
|
wait-for-websocket: false
|
|
status_code: [202]
|
|
ignore_errors: true
|