From a9ee6d691b17c3351513de947c0d83f9fa64fc06 Mon Sep 17 00:00:00 2001 From: Justine Date: Mon, 12 Jun 2023 17:29:18 +0200 Subject: [PATCH] Basic playbook --- README.md | 17 +++++++++++ hetzner_basic.yml | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 README.md create mode 100755 hetzner_basic.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..3bc129b --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Hetzner Playbooks + +This playbooks use [the hetzner cloud ansible collection](https://docs.ansible.com/ansible/latest/collections/hetzner/hcloud/index.html) to create and manage Hetzner VMs. + +## hetzner_basic.yml +This playbook uses an [hetzner API key](https://docs.hetzner.com/cloud/api/getting-started/generating-api-token/) to create a simple cx11 server named "Squi". The server is located in Falkenstein and is configured using cloud-config. The goal is to have a simple example playbook. + +The API key is encrypted using ansible-vault. Such an encrypted string can be obtained via: +``` +ansible-vault encrypt_string "My_string" +``` + +It can then simply be launched with: +``` +ansible-playbook --ask-vault-pass hetzner_basic.yml +``` + diff --git a/hetzner_basic.yml b/hetzner_basic.yml new file mode 100755 index 0000000..545fe02 --- /dev/null +++ b/hetzner_basic.yml @@ -0,0 +1,72 @@ +--- +- hosts: localhost + connection: local + gather_facts: False + become: True + + vars: + sshkey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBNyMTbcbTDZ7RJQtet7R6RrJogk9sDEAfO6+j5RGFL0 justine@squi.fr + apikey: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 39303466366266326464646639663763306161373035646231643535613436616138306261623861 + 3266326437343531653666633065353230663831333237380a643661376239333631613536363133 + 35363531393161323463353162386430313566363132663732623563633838383036333266376635 + 6639663565336162630a343362633164383064663532343732393264306133656638326639623137 + 38626563363631376231623163376638323762363836653434363332396162636133 + + tasks: + #SHOW INFO + - name: Gather hcloud image infos + hcloud_image_info: + api_token: "{{ apikey }}" + register: output + + - name: dbg + debug: + var: output + + - name: Gather hcloud location infos + hcloud_location_info: + api_token: "{{ apikey }}" + register: output + + - name: dbg + debug: + var: output + + #SSH KEY MANAGEMENT + - name: Create my ssh key + hcloud_ssh_key: + api_token: "{{ apikey }}" + name: justine@squi.fr + public_key: "{{ sshkey }}" + state: present + + #CREATE SERVER + - name: Create a server + hcloud_server: + api_token: "{{ apikey }}" + name: squi + server_type: cx11 + image: debian-11 + location: fsn1 + state: started + ssh_keys: ["justine@squi.fr"] + user_data: | + #cloud-config + packages: + - zsh + - vim + - fail2ban + package_update: true + package_upgrade: true + + + - name: Gather server infos + hcloud_server_info: + api_token: "{{ apikey }}" + register: outp + + - name: Show + debug: + var: outp