diff --git a/roles/users/defaults/main.yml b/roles/users/defaults/main.yml new file mode 100644 index 0000000..a81146c --- /dev/null +++ b/roles/users/defaults/main.yml @@ -0,0 +1,3 @@ +--- +users_setup_sysadmin: true +users_setup_deployment: false # opt-in: enable explicitly to use diff --git a/roles/users/tasks/deployment.yml b/roles/users/tasks/deployment.yml new file mode 100644 index 0000000..25c5b40 --- /dev/null +++ b/roles/users/tasks/deployment.yml @@ -0,0 +1,14 @@ +--- +- name: Create deployment user for CI/CD + ansible.builtin.user: + name: deployment + shell: /bin/bash + create_home: yes + become: true + +- name: Add SSH public key for deployment user + ansible.posix.authorized_key: + user: deployment + state: present + key: "{{ deployment_public_ssh_key }}" + become: true diff --git a/roles/users/tasks/main.yml b/roles/users/tasks/main.yml index 2d58ad4..d263ea0 100644 --- a/roles/users/tasks/main.yml +++ b/roles/users/tasks/main.yml @@ -1,42 +1,14 @@ --- -- name: Set up primary sysadmin user - when: deployment_public_ssh_key is defined - become: true - block: - - name: Create user - ansible.builtin.user: - name: "{{ sysadmin_user }}" - groups: sudo - append: yes - shell: /bin/bash - create_home: yes +- name: Configure sysadmin user + ansible.builtin.import_tasks: sysadmin.yml + when: users_setup_sysadmin | bool - - name: Add SSH public key - ansible.posix.authorized_key: - user: "{{ sysadmin_user }}" - state: present - key: "{{ sysadmin_public_ssh_key }}" +- name: Configure deployment user + ansible.builtin.import_tasks: deployment.yml + when: users_setup_deployment | bool - - name: Allow passwordless sudo - ansible.builtin.copy: - dest: /etc/sudoers.d/sudo-nopasswd - content: "%sudo ALL=(ALL) NOPASSWD: ALL" - mode: "0440" - validate: /usr/sbin/visudo -cf %s - - -- name: Set up deployment user for CI/CD - when: deployment_public_ssh_key is defined - become: true - block: - - name: Create user - ansible.builtin.user: - name: deployment - shell: /bin/bash - create_home: yes - - - name: Add SSH public key - ansible.posix.authorized_key: - user: deployment - state: present - key: "{{ deployment_public_ssh_key }}" +# opt in to feature flags / tasks with: +# roles: +# - role: studio.ansible.users +# vars: +# users_setup_deployment: true diff --git a/roles/users/tasks/sysadmin.yml b/roles/users/tasks/sysadmin.yml new file mode 100644 index 0000000..59e9a8e --- /dev/null +++ b/roles/users/tasks/sysadmin.yml @@ -0,0 +1,24 @@ +--- +- name: Create primary sysadmin user + ansible.builtin.user: + name: "{{ sysadmin_user }}" + groups: sudo + append: yes + shell: /bin/bash + create_home: yes + become: true + +- name: Add SSH public key for sysadmin + ansible.posix.authorized_key: + user: "{{ sysadmin_user }}" + state: present + key: "{{ sysadmin_public_ssh_key }}" + become: true + +- name: Allow passwordless sudo for sudo group + ansible.builtin.copy: + dest: /etc/sudoers.d/sudo-nopasswd + content: "%sudo ALL=(ALL) NOPASSWD: ALL" + mode: "0440" + validate: /usr/sbin/visudo -cf %s + become: true