--- - hosts: personal user: root tasks: - include_vars: vars/all.yml - name: Install essential and optional packages apt: name: "{{ item }}" state: present update_cache: yes with_items: - vim - byobu - screen - curl - unzip - ufw - htop - multitail - chrony - ca-certificates - unattended-upgrades - downtimed - name: Copy the templates over template: src: "{{ item.source }}" dest: "{{ item.destination }}" with_items: - { source: templates/vimrc.j2, destination: /etc/vim/vimrc } - { source: templates/vimrc.local.j2, destination: /root/.vimrc } - { source: templates/selected_editor.j2, destination: /root/.selected_editor } - { source: templates/bashrc.j2, destination: /root/.bashrc } - { source: templates/bashrc.j2, destination: /etc/skel/.bashrc } - name: Set vim as the default editor alternatives: name: editor path: /usr/bin/vim.basic - name: Set timezone timezone: name: "{{ timezone }}" - name: Generate locales locale_gen: name: en_US.UTF-8 state: present with_items: - en_US.UTF-8 - el_CY.UTF-8 - name: Customize SSH lineinfile: path: /etc/ssh/sshd_config regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - { regexp: "^#?Port 22", line: "Port 22" } - { regexp: "^#?PermitRootLogin", line: "PermitRootLogin prohibit-password" } - { regexp: "^#?PasswordAuthentication", line: "PasswordAuthentication yes" } notify: - Restart SSH - name: Configure UFW ufw: rule: allow proto: tcp direction: in to_port: "{{ item }}" dest: any src: any with_items: - 22 - 80 - 443 - "{{ custom_ssh_port }}" notify: - Enable UFW handlers: - name: Restart SSH service: name: ssh state: restarted - name: Enable UFW ufw: state: enabled