created major large-scale changes
This commit is contained in:
@@ -2,6 +2,22 @@
|
||||
---
|
||||
# tasks file for roles/init-vps
|
||||
# @NOTE server deployment method is based on task tags compiled herein
|
||||
- name: Informing user of requirement of two main domains
|
||||
when: (certbot.domains | length) < 2 or (certbot.domains | length) > 2
|
||||
ansible.builtin.fail:
|
||||
msg: Only two domains allowed and required
|
||||
- name: Informing user of requirement at least one wildcard
|
||||
when: (certbot.domains | select("regex", "^\\*\\.") | list | length) == 0
|
||||
ansible.builtin.fail:
|
||||
msg: At least one of the FQDNs must have a wildcard
|
||||
# - name: Setting the FQDN for development
|
||||
# when: mode == "dev"
|
||||
# ansible.builtin.set_fact:
|
||||
# fqdn: "{{ (certbot.domains | map('regex_replace', '\\.([^\\.]*)$', '.test') | reject('regex', '^\\*\\.') | list)[0] }}"
|
||||
- name: Setting the FQDN
|
||||
# when: mode == "prod"
|
||||
ansible.builtin.set_fact:
|
||||
fqdn: "{{ (certbot.domains | reject('regex', '^\\*\\.') | list)[0] }}"
|
||||
- name: Finding SSH public keys for root
|
||||
delegate_facts: true
|
||||
delegate_to: localhost
|
||||
@@ -44,7 +60,7 @@
|
||||
- name: Creating the VPS
|
||||
linode.cloud.instance:
|
||||
api_token: "{{ token | prompted_token.user_input }}"
|
||||
label: "{{ instance }}"
|
||||
label: "{{ fqdn }}"
|
||||
type: g6-standard-2
|
||||
image: "{{ operating_system }}"
|
||||
disk_encryption: enabled
|
||||
@@ -86,7 +102,7 @@
|
||||
ansible.builtin.wait_for_connection:
|
||||
delay: 20
|
||||
timeout: 300
|
||||
loop: "{{ groups[instance] | default(hostvars[instance]) }}"
|
||||
loop: "{{ groups[fqdn] | default(hostvars[fqdn]) }}"
|
||||
- name: Checking if that server has required operating system
|
||||
delegate_to: "{{ item }}"
|
||||
delegate_facts: true
|
||||
@@ -94,7 +110,7 @@
|
||||
when: ansible_facts["system"] != "Linux" and item is ansible.utils['ip_pref']
|
||||
ansible.builtin.fail:
|
||||
msg: Unsupported operating system found
|
||||
loop: "{{ groups[instance] | default(hostvars[instance]) }}"
|
||||
loop: "{{ groups[fqdn] | default(hostvars[fqdn]) }}"
|
||||
- name: Checking if that server has required Linux distro
|
||||
delegate_to: "{{ item }}"
|
||||
delegate_facts: true
|
||||
@@ -102,7 +118,7 @@
|
||||
when: ansible_facts["system"] == "Linux" and ansible_facts["os_family"] != "Debian" and item is ansible.utils['ip_pref']
|
||||
ansible.builtin.fail:
|
||||
msg: Unsupported Linux distro found
|
||||
loop: "{{ groups[instance] | default(hostvars[instance]) }}"
|
||||
loop: "{{ groups[fqdn] | default(hostvars[fqdn]) }}"
|
||||
- name: Providing authorized keys for server root account
|
||||
delegate_to: "{{ item[0] }}"
|
||||
delegate_facts: true
|
||||
@@ -112,6 +128,6 @@
|
||||
user: "{{ ansible_user }}"
|
||||
key: "{{ lookup('file', item[1]) }}"
|
||||
state: present
|
||||
loop: "{{ (groups[instance] | default(hostvars[instance])) | product(root_pubkey_paths) }}"
|
||||
loop: "{{ (groups[fqdn] | default(hostvars[fqdn])) | product(root_pubkey_paths) }}"
|
||||
tags:
|
||||
- lan
|
||||
|
||||
Reference in New Issue
Block a user