diff --git a/README.md b/README.md index e1d11fe..34a797a 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,8 @@ ensure_ansible_version: 2.10.3 enable_sudo: yes # Allow passwordless sudo (applied to group wheel) enable_passwordless_sudo: yes +# Skip provisioning of the firewall +skip_firewall: no ``` Dependencies @@ -41,7 +43,8 @@ Example Playbook License ------- -MIT +- BSD-3-Clause +- MIT Author Information ------------------ diff --git a/defaults/main.yml b/defaults/main.yml index fb6f250..9f87a85 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -17,4 +17,11 @@ ensure_ansible_version: 2.10.3 # Allow sudo with a password (applied to group sudo) enable_sudo: yes # Allow passwordless sudo (applied to group wheel) -enable_passwordless_sudo: yes \ No newline at end of file +enable_passwordless_sudo: yes +# Allow root to connect through SSH +enable_ssh_for_root: yes +# Allow root to connect only using public key authentication, no password +enable_ssh_for_root_prohibit_password: no +# Skip provisioning of the firewall +skip_firewall: no +authorized_keys_are_exclusive: false # Be careful, this will delete non-Ansible-managed authorized keys from the target! \ No newline at end of file diff --git a/handlers/main.yml b/handlers/main.yml index c6a8f0c..d4fec81 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,2 +1,7 @@ --- -# handlers file for common \ No newline at end of file +# handlers file for common +- name: Restart SSH + ansible.builtin.service: + name: ssh + state: restarted + become: true \ No newline at end of file diff --git a/meta/main.yml b/meta/main.yml index 3a212a9..9b1bb07 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,7 +1,7 @@ galaxy_info: - author: your name - description: your description - company: your company (optional) + author: jotbe + description: Common packages and configuration + company: "" # If the issue tracker for your role is not on github, uncomment the # next line and provide a value @@ -14,7 +14,9 @@ galaxy_info: # - GPL-3.0-only # - Apache-2.0 # - CC-BY-4.0 - license: license (GPL-2.0-or-later, MIT, etc) + license: + - BSD-3-Clause + - MIT min_ansible_version: 2.4 diff --git a/tasks/main.yml b/tasks/main.yml index 5fda08b..8935201 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -12,10 +12,13 @@ import_role: name: geerlingguy.firewall tags: firewall + when: not skip_firewall - include: locales-debian.yml become: true - when: ansible_facts['os_family'] == 'Debian' + when: + - ansible_facts['os_family'] == 'Debian' + - not ansible_is_chroot - include: users.yml become: true diff --git a/tasks/users.yml b/tasks/users.yml index 3789a05..ef846f0 100644 --- a/tasks/users.yml +++ b/tasks/users.yml @@ -11,6 +11,14 @@ groups: users with_items: "{{ users }}" +- name: 'Add docker users' + user: + name: "{{ item }}" + groups: docker + append: yes + with_items: "{{ docker_users }}" + when: docker_users | count + - block: - name: 'Ensure that sudo group is existing' group: @@ -44,8 +52,9 @@ user: "{{ item }}" state: present key: "{{ lookup('file', 'public_keys/id_{{ item }}.pub') }}" + exclusive: "{{ authorized_keys_are_exclusive | bool }}" with_items: "{{ users }}" - ignore_errors: yes + ignore_errors: true - block: - name: 'Ensure that wheel group is existing' @@ -71,6 +80,38 @@ files: - /etc/sudoers - /usr/local/etc/sudoers # e.g. FreeBSD + + - name: 'Disable SSH for root' + lineinfile: + dest: "/etc/ssh/sshd_config" + state: present + regexp: '^#?\s*PermitRootLogin' + line: 'PermitRootLogin No' + notify: Restart SSH + when: + - enable_ssh_for_root | bool == false + + - name: 'Enable SSH for root through password or key' + lineinfile: + dest: "/etc/ssh/sshd_config" + state: present + regexp: '^#?\s*PermitRootLogin' + line: 'PermitRootLogin Yes' + notify: Restart SSH + when: + - enable_ssh_for_root | bool == true + - enable_ssh_for_root_prohibit_password | bool == false + + - name: 'Enable SSH for root through key only' + lineinfile: + dest: "/etc/ssh/sshd_config" + state: present + regexp: '^#?\s*PermitRootLogin' + line: 'PermitRootLogin prohibit-password' + notify: Restart SSH + when: + - enable_ssh_for_root | bool == true + - enable_ssh_for_root_prohibit_password | bool == true when: - enable_sudo - enable_passwordless_sudo @@ -82,4 +123,4 @@ mode: 0644 owner: "{{ item }}" group: "{{ item }}" - with_items: "{{ users }}" \ No newline at end of file + with_items: "{{ users }}"