- name: set host name set_fact: host_name: "{{ inventory_hostname }}" when: host_name is not defined - name: set host tld set_fact: host_tld: "{{ ((host_branch ~ '.') if host_branch is defined else '') ~ (tld if (host_external_tld | d(false) == true) else int_tld) }}" when: host_tld is not defined - name: set host tls set_fact: host_tls: yes when: host_tls is not defined - name: set other host variables set_fact: host_protocol: "{{ 'https' if host_tls else 'http' }}" host_metrics: "{{ services.prometheus is defined and (host_metrics | d(true) == true) }}" host_mail: "{{ mail_server.mta_hostname is defined and (host_mail | d(true) == true) }}" host_backups: "{{ services.backup is defined and (host_backups | d(true) == true) }}" host_is_container: "{{ ('containers' in group_names) or (host_is_container | d(false) == true) }}" - name: set host fqdn and uri set_fact: host_fqdn: "{{ host_name ~ '.' ~ host_tld }}" host_url: "{{ host_protocol }}://{{ host_name ~ '.' ~ host_tld }}" - name: define ansible_host if it is missing set_fact: ansible_host: "{{ host_fqdn }}" when: ansible_host is not defined - name: select a cluster node include_tasks: tasks/select_node.yml when: host_is_container - name: set hardware information set_fact: host_hardware: "{{ ( { 'cores': 4, 'cpus': 1, 'cpuunits': 1024, 'memory': 128, 'swap': 128, 'disk': 0.4 } | combine(role_hardware | d({})) | combine(host_hardware | d({}))) if host_is_container else (host_hardware | d({})) }}" - name: clamp hardware cores to max node number set_fact: host_hardware: "{{ host_hardware | combine({'cores': ([host_hardware.cores, hostvars[selected_node]['max_cores'] | d(host_hardware.cores)] | min)}) }}" when: "host_is_container and (selected_node is defined) and (hostvars[selected_node]['max_cores'] is defined)" - block: - name: validate database parameters fail: msg: some database parameters are not defined or invalid when: (database.name is not string) or (database.user is defined and database.user is not string) or (database.pass is defined and database.pass is not string) or (database.host is defined and database.host is not string) or (database.self_hosted is defined and database.self_hosted is not boolean) - name: set database information set_fact: database_name: "{{ database.name | mandatory }}" database_user: "{{ database.user | d(database.name) }}" database_pass: "{{ database.pass }}" database_host: "{{ '127.0.0.1' if (database.self_hosted | d(false) == true) or (services.db is not defined) else (services.db.address | d(hostvars[services.db.hostname]['ansible_host'])) }}" database_hostname: "{{ inventory_hostname if (database.self_hosted | d(false) == true) or (services.db is not defined) else services.db.hostname }}" database_self_hosted: "{{ (database.self_hosted | d(false) == true) or (services.db is not defined) }}" when: database is mapping