Files @ 02fdd520d765
Branch filter:

Location: freifunk/Ansible-Configuration/initial_server_setup/initial_setup.yml

x
feat: rewritten initial setup, untested
---
- name: Initial Server Setup
  hosts: test
  become: true

  vars_files:
    - ../user_vars.yml
  vars:
    password: Welcome1234

  tasks:
    - name: Update + Upgrade packages
      ansible.builtin.apt:
        upgrade: true
        update_cache: true
      tags: basic

    - name: Install some basic packages
      ansible.builtin.apt:
        pkg:
          - sudo
          - git
          - vim
          - python3
          - python3-pip
      tags: basic

    # Change Hostname
    - name: "Update Hostnames"
      ansible.builtin.hostname:
        name: "{{ new_hostname }}"
      tags: hostname

    # Update /etc/hosts
    - name: Make sure an IPV4 entry in /etc/hosts exists
      ansible.builtin.lineinfile:
        path: /etc/hosts
        regexp: "^{{ ansible_default_ipv4.address }}"
        line: "{{ ansible_default_ipv4.address }} {{ new_hostname }} {{ new_hostname }}.freifunk.lu"
        state: present
      tags: network,hostname,dns
    - name: Make sure an IPV6 entry in /etc/hosts exists
      ansible.builtin.lineinfile:
        path: /etc/hosts
        regexp: "^{{ ansible_default_ipv6.address }}"
        line: "{{ ansible_default_ipv6.address }} {{ new_hostname }} {{ new_hostname }}.freifunk.lu"
        state: present
      tags: network,hostname,dns

    # SSH security improvements (EmptyPass, PassAuth, RootLogin)
    - name: Disable SSH Password Auth
      ansible.builtin.copy:
        dest: /etc/ssh/sshd_config.d/disable_password_auth.conf
        owner: root
        mode: u=rw, g=r, o=r
        content: |
          '# {{ ansible_managed }}'
          'PasswordAuthentication no'
      tags: network,ssh
    - name: Disable SSH Empty Password
      ansible.builtin.copy:
        dest: /etc/ssh/sshd_config.d/disable_empty_password.conf
        owner: root
        mode: u=rw, g=r, o=r
        content: |
          '# {{ ansible_managed }}'
          'PermitEmptyPasswords no'
      tags: network,ssh
    - name: Disable SSH Root Login
      ansible.builtin.copy:
        dest: /etc/ssh/sshd_config.d/disable_root_login.conf
        owner: root
        mode: u=rw, g=r, o=r
        content: |
          '# {{ ansible_managed }}'
          'PermitRootLogin no'
      tags: network,ssh
    - name: Reload SSHD
      ansible.builtin.service:
        name: "sshd"
        state: "reloaded"
      tags: network,ssh

    # Create Freifunk Users
    - name: Create member users
      ansible.builtin.user:
        name: "{{ item.username }}"
        password: "{{ password | password_hash('sha512') }}"
        update_password: "on_create"
        groups:
          - sudo
        append: true
        state: present
      loop: "{{ users_member }}"
      tags: users
    - name: Create system users (no password)
      ansible.builtin.user:
        name: "{{ item.username }}"
        groups:
          - sudo
        append: true
        state: present
      loop: "{{ users_system }}"
      tags: users

    - name: Add SSH key for users from vars
      ansible.posix.authorized_key:
        user: "{{ item.username }}"
        state: present
        key: "{{ lookup('file', {{ item.key_path }} ) }}"
      tags: users
      loop: "{{ users_member | union(users_system)}}"