Skip to content

Commit 98fd887

Browse files
committed
feat: add support for vultr api v2
1 parent 1083b4b commit 98fd887

File tree

4 files changed

+48
-32
lines changed

4 files changed

+48
-32
lines changed

config.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ cloud_providers:
215215
disk: 10
216216
vultr:
217217
os: Ubuntu 20.04 LTS x64
218-
size: 1024 MB RAM,25 GB SSD,1.00 TB BW
218+
size: vc2-1c-1gb
219219
linode:
220220
type: g6-nanode-1
221221
image: linode/ubuntu20.04

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
ansible==6.1.0
1+
ansible==7.3.0
22
jinja2~=3.0.3
33
netaddr

roles/cloud-vultr/tasks/main.yml

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,50 +4,65 @@
44

55
- block:
66
- name: Creating a firewall group
7-
vultr_firewall_group:
7+
vultr.cloud.firewall_group:
8+
api_key: "{{ vultr_api_key }}"
89
name: "{{ algo_server_name }}"
910

1011
- name: Creating firewall rules
11-
vultr_firewall_rule:
12+
vultr.cloud.firewall_rule:
13+
api_key: "{{ vultr_api_key }}"
1214
group: "{{ algo_server_name }}"
1315
protocol: "{{ item.protocol }}"
1416
port: "{{ item.port }}"
15-
ip_version: "{{ item.ip }}"
16-
cidr: "{{ item.cidr }}"
17-
with_items:
18-
- { protocol: tcp, port: "{{ ssh_port }}", ip: v4, cidr: 0.0.0.0/0 }
19-
- { protocol: tcp, port: "{{ ssh_port }}", ip: v6, cidr: "::/0" }
20-
- { protocol: udp, port: 500, ip: v4, cidr: 0.0.0.0/0 }
21-
- { protocol: udp, port: 500, ip: v6, cidr: "::/0" }
22-
- { protocol: udp, port: 4500, ip: v4, cidr: 0.0.0.0/0 }
23-
- { protocol: udp, port: 4500, ip: v6, cidr: "::/0" }
24-
- { protocol: udp, port: "{{ wireguard_port }}", ip: v4, cidr: 0.0.0.0/0 }
25-
- { protocol: udp, port: "{{ wireguard_port }}", ip: v6, cidr: "::/0" }
17+
ip_type: "{{ item.ip }}"
18+
subnet: "{{ item.subnet }}"
19+
subnet_size: "0"
20+
loop:
21+
- { protocol: tcp, port: "{{ ssh_port }}", ip: v4, subnet: 0.0.0.0/0 }
22+
- { protocol: tcp, port: "{{ ssh_port }}", ip: v6, subnet: "::/0" }
23+
- { protocol: udp, port: 500, ip: v4, subnet: 0.0.0.0/0 }
24+
- { protocol: udp, port: 500, ip: v6, subnet: "::/0" }
25+
- { protocol: udp, port: 4500, ip: v4, subnet: 0.0.0.0/0 }
26+
- { protocol: udp, port: 4500, ip: v6, subnet: "::/0" }
27+
- {
28+
protocol: udp,
29+
port: "{{ wireguard_port }}",
30+
ip: v4,
31+
subnet: 0.0.0.0/0
32+
}
33+
- {
34+
protocol: udp,
35+
port: "{{ wireguard_port }}",
36+
ip: v6,
37+
subnet: "::/0"
38+
}
2639

2740
- name: Upload the startup script
28-
vultr_startup_script:
41+
vultr.cloud.startup_script:
42+
api_key: "{{ vultr_api_key }}"
2943
name: algo-startup
3044
script: |
3145
{{ lookup('template', 'files/cloud-init/base.yml') }}
3246
3347
- name: Creating a server
34-
vultr_server:
35-
name: "{{ algo_server_name }}"
48+
vultr.cloud.instance:
49+
api_key: "{{ vultr_api_key }}"
50+
label: "{{ algo_server_name }}"
3651
startup_script: algo-startup
3752
hostname: "{{ algo_server_name }}"
3853
os: "{{ cloud_providers.vultr.os }}"
3954
plan: "{{ cloud_providers.vultr.size }}"
4055
region: "{{ algo_vultr_region }}"
4156
firewall_group: "{{ algo_server_name }}"
4257
state: started
43-
tag: Environment:Algo
44-
ipv6_enabled: true
45-
auto_backup_enabled: false
46-
notify_activate: false
58+
tags: ["Environment:Algo"]
59+
enable_ipv6: true
60+
backups: false
61+
activation_email: false
4762
register: vultr_server
4863

4964
- set_fact:
50-
cloud_instance_ip: "{{ vultr_server.vultr_server.v4_main_ip }}"
65+
cloud_instance_ip: "{{ vultr_server.vultr_instance.main_ip }}"
5166
ansible_ssh_user: algo
5267
ansible_ssh_port: "{{ ssh_port }}"
5368
cloudinit: true

roles/cloud-vultr/tasks/prompts.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,21 @@
1212
set_fact:
1313
algo_vultr_config: "{{ vultr_config | default(_vultr_config.user_input) | default(lookup('env','VULTR_API_CONFIG'), true) }}"
1414

15+
- name: Set the Vultr API Key as a fact
16+
set_fact:
17+
vultr_api_key: "{{ lookup('ansible.builtin.ini', 'key', section='default', file=algo_vultr_config) }}"
18+
1519
- name: Get regions
1620
uri:
17-
url: https://api.vultr.com/v1/regions/list
21+
url: https://api.vultr.com/v2/regions
1822
method: GET
1923
status_code: 200
2024
register: _vultr_regions
2125

2226
- name: Format regions
2327
set_fact:
2428
regions: >-
25-
[ {% for k, v in _vultr_regions.json.items() %}
29+
[ {% for v in _vultr_regions.json['regions'] %}
2630
{{ v }}{% if not loop.last %},{% endif %}
2731
{% endfor %} ]
2832
@@ -32,17 +36,14 @@
3236

3337
- name: Set default region
3438
set_fact:
35-
default_region: >-
36-
{% for r in vultr_regions %}
37-
{%- if r['DCID'] == "1" %}{{ loop.index }}{% endif %}
38-
{%- endfor %}
39+
default_region: 1
3940

4041
- pause:
4142
prompt: |
4243
What region should the server be located in?
4344
(https://www.vultr.com/locations/):
4445
{% for r in vultr_regions %}
45-
{{ loop.index }}. {{ r['name'] }}
46+
{{ loop.index }}. {{ r['city'] }}
4647
{% endfor %}
4748
4849
Enter the number of your desired region
@@ -54,5 +55,5 @@
5455
set_fact:
5556
algo_vultr_region: >-
5657
{% if region is defined %}{{ region }}
57-
{%- elif _algo_region.user_input %}{{ vultr_regions[_algo_region.user_input | int -1 ]['name'] }}
58-
{%- else %}{{ vultr_regions[default_region | int - 1]['name'] }}{% endif %}
58+
{%- elif _algo_region.user_input %}{{ vultr_regions[_algo_region.user_input | int -1 ]['id'] }}
59+
{%- else %}{{ vultr_regions[default_region | int - 1]['id'] }}{% endif %}

0 commit comments

Comments
 (0)