47 lines
1.5 KiB
YAML
47 lines
1.5 KiB
YAML
---
|
|
# Terraform Vultr provider doesn't expose the mount_tag.
|
|
# it does however expose the vfs id, which we save to ansible host vars at time of `tofu apply`.
|
|
# As a workaround, we use Vultr api to fetch the mount_tag, and mount the vfs to the instance.
|
|
- name: Get the VFS data
|
|
ansible.builtin.uri:
|
|
url: https://api.vultr.com/v2/vfs
|
|
method: GET
|
|
status_code: 200
|
|
headers:
|
|
Authorization: "Bearer {{ lookup('dotenv', 'VULTR_API_KEY', file='../.env') }}"
|
|
register: vfs_list
|
|
|
|
- name: Get VFS variables
|
|
ansible.builtin.set_fact:
|
|
our_vfs_id: "{{ vfs_list.json.vfs | selectattr('tags', 'contains', 'our') | map(attribute='id') | first }}"
|
|
|
|
- name: Debug the our VFS id
|
|
ansible.builtin.debug:
|
|
msg: "The VFS ID for 'our' is {{ our_vfs_id }}"
|
|
|
|
- name: Attach VFS to Vultr instance
|
|
ansible.builtin.uri:
|
|
url: https://api.vultr.com/v2/vfs/{{ vultr_vfs_storage_id }}/attachments/{{ hostvars[inventory_hostname]['vultr_instance_id'] }}
|
|
method: PUT
|
|
status_code:
|
|
- 200
|
|
- 201
|
|
- 409
|
|
headers:
|
|
Authorization: "Bearer {{ lookup('dotenv', 'VULTR_API_KEY', file='../.env') }}"
|
|
register: vfs_attach
|
|
changed_when:
|
|
- vfs_attach.json is defined
|
|
- "'state' in vfs_attach.json"
|
|
- vfs_attach.json.state == "ATTACHED"
|
|
notify:
|
|
- Mount vfs
|
|
|
|
- name: Debug vfs_attach
|
|
ansible.builtin.debug:
|
|
var: vfs_attach
|
|
|
|
- name: Get the VFS mount_tag
|
|
ansible.builtin.set_fact:
|
|
vfs_mount_tag: "{{ vfs_attach.json.mount_tag | default('') }}"
|