--- - name: Configure virtual private servers hosts: vps gather_facts: yes vars: # # below is just to remind you to use '-u' instead # ansible_user: "{{ root_auths[0].username }}" # # below is just to remind you to use '--ask-pass' instead # ansible_password: "{{ root_auths[0].password }}" FAMILY: "{{ ansible_facts['os_family'] }}" CURRENT_HOST_IP4: "{{ hostvars[inventory_hostname]['ansible_facts']['ansible_default_ipv4']['address'] }}" CURRENT_HOST_IP6: "{{ hostvars[inventory_hostname]['ansible_facts']['ansible_default_ipv6']['address'] }}" FQDN: "{{ domain_name | default(inventory_hostname, true) }}" pre_tasks: - name: Set timezone become: yes become_method: sudo community.general.timezone: name: "{{ tzone }}" register: timezone_set tags: ['baseconf', 'timezone_setting'] - name: Set hostname become: yes become_method: sudo hostname: name: "{{ hname }}" use: "{{ FAMILY.lower() }}" register: hostname_set tags: ['baseconf', 'hostname_initialization'] - name: Add remote host alias to hosts file become: yes become_method: sudo lineinfile: path: /etc/hosts search_string: "127.0.1.1" line: "127.0.1.1 {{ hname }}" state: present create: yes register: hosts_updated tags: ['baseconf', 'hostsfile_update'] - name: Add remote host public address aliases to hosts file become: yes become_method: sudo lineinfile: path: /etc/hosts search_string: "{{ CURRENT_HOST_IP4 }}" line: "{{ CURRENT_HOST_IP4 }} {{ FQDN }} {{ hname }}" state: present create: yes register: hosts_updated when: CURRENT_HOST_IP4 is defined tags: ['baseconf', 'hostsfile_update'] - name: Add remote host public address aliases to hosts file become: yes become_method: sudo lineinfile: path: /etc/hosts search_string: "{{ CURRENT_HOST_IP6 }}" line: "{{ CURRENT_HOST_IP6 }} {{ FQDN }} {{ hname }}" state: present create: yes register: hosts_updated when: CURRENT_HOST_IP6 is defined tags: ['baseconf', 'hostsfile_update'] tasks: - name: Configure core packages include_role: name: bootstrap tasks_from: config@corepkgs.yml vars: enrollment_key: "{{ crowdsec_key }}" gcfs_password: "{{ gocrypt_password }}" #@TODO improve filters for defining the two below variables official_name: "{{ [admin.actual_name if admin.username == ansible_facts['user_id'] for admin in admin_auths][0] }}" official_email: "{{ [admin.email if admin.username == ansible_facts['user_id'] for admin in admin_auths][0] }}" homedir: "{{ ansible_facts['user_dir'] }}" register: pkgs_configured tags: ['default', 'configure_pkgs'] post_tasks: - name: Do a system upgrade include_role: name: bootstrap tasks_from: "upgrade@{{ FAMILY }}.yml" vars: upgrade_type: dist register: system_initialized tags: ['default', 'initial_system_upgrade']