-
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmain.yml
More file actions
92 lines (83 loc) · 3.03 KB
/
main.yml
File metadata and controls
92 lines (83 loc) · 3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
---
- name: Load balancers handling
ansible.builtin.include_tasks: load_balancer.yml
with_items: "{{ hcloud__loadbalancers }}"
loop_control:
loop_var: load_balancer
run_once: true
- name: Create placement groups
hetzner.hcloud.placement_group:
name: "{{ item.name }}"
type: "{{ item.type | default('spread') }}"
labels: "{{ item.labels | default(hcloud__labels | default(omit)) }}"
api_token: "{{ hcloud__api_token }}"
with_items: "{{ hcloud__placement_groups }}"
run_once: true
- name: Create firewalls
hetzner.hcloud.firewall:
name: "{{ item.name }}"
rules: "{{ item.rules | default([]) }}"
api_token: "{{ hcloud__api_token }}"
with_items: "{{ hcloud__firewalls }}"
run_once: true
- name: Ensure SSH key exists
hetzner.hcloud.ssh_key:
name: "{{ hcloud__ssh_key_name }}"
public_key: "{{ hcloud__ssh_public_key }}"
api_token: "{{ hcloud__api_token }}"
run_once: true
- name: Create networks
hetzner.hcloud.network:
name: "{{ item.name }}"
ip_range: "{{ item.network }}"
api_token: "{{ hcloud__api_token }}"
with_items: "{{ hcloud__networks }}"
run_once: true
- name: Ensure server is created
hetzner.hcloud.server:
name: "{{ hcloud__server_name }}"
server_type: "{{ hcloud__server_type }}"
image: "{{ hcloud__server_image }}"
location: "{{ hcloud__server_location }}"
ssh_keys: "{{ hcloud__ssh_key_name }}"
labels: "{{ hcloud__server_labels }}"
firewalls: "{{ hcloud__server_firewalls }}"
placement_group: "{{ hcloud__server_placement_group }}"
user_data: "{{ hcloud__server_user_data }}"
api_token: "{{ hcloud__api_token }}"
force: "{{ hcloud__server_force }}"
state: "{{ hcloud__server_state }}"
register: server
- name: Ensure volume is created and formatted
hetzner.hcloud.volume:
name: "{{ item.name }}"
server: "{{ hcloud__server_name }}"
automount: true
format: "{{ item.format | default('ext4') }}"
size: "{{ item.size }}"
api_token: "{{ hcloud__api_token }}"
with_items: "{{ hcloud__server_volumes }}"
- name: Assign server to networks
hetzner.hcloud.server_network:
network: "{{ item.name }}"
server: "{{ hcloud__server_name }}"
alias_ips: "{{ item.alias_ips | default(omit) }}"
api_token: "{{ hcloud__api_token }}"
with_items: "{{ hcloud__server_networks }}"
- name: Assign server to load balancer
hetzner.hcloud.load_balancer_target:
type: server
load_balancer: "{{ hcloud__server_loadbalancer_name }}"
server: "{{ hcloud__server_name }}"
use_private_ip: "{{ hcloud__server_loadbalancer_use_private_ip }}"
api_token: "{{ hcloud__api_token }}"
when: hcloud__server_loadbalancer_name is not none
- name: Show server infos
when: server.hcloud_server.name is defined
block:
- name: Show server infos
ansible.builtin.debug:
msg: "Server: {{ server.hcloud_server.name }} --> {{ server.hcloud_server.ipv4_address }}"
- name: Assing default IP to ansible_host
ansible.builtin.set_fact:
ansible_host: "{{ server.hcloud_server.ipv4_address }}"