Compare commits
	
		
			16 Commits
		
	
	
		
			28123cf513
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					
						
						
							
						
						44a292f19f
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						f055178030
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						c579cf386b
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						3d35228d29
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						430db9c1d8
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						09cdafc570
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						fd8e4e29b6
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						8d4ef1a461
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						8647bb2a06
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						fa015cd85c
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						8a77110c0b
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						7884ac47cf
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						e2c1dcdd2f
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						66b71ee225
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						97802668da
	
				 | 
					
					
						||
| 
						 | 
					
						
						
							
						
						c551192d2c
	
				 | 
					
					
						
@@ -8,5 +8,9 @@ create_users:
 | 
			
		||||
ssh_pubkey_filename_pattern: '.*\.pub'
 | 
			
		||||
include_root_lock: yes
 | 
			
		||||
gpg_private_keys_origin_host: localhost
 | 
			
		||||
ssh_keypairs_origin_host: localhost
 | 
			
		||||
gpg_origin_private_keyids: [] # @NOTE list of gpg key ids from origin or source server
 | 
			
		||||
gpg_origin_private_key_passwords: "{{ vaulted_gpg_origin_private_key_passwords }}" # @NOTE list of gpg key passwords from origin or source server
 | 
			
		||||
ssh_origin_keypairs_filenames: [] # @NOTE list of basenames (filename sans extension) of SSH keypairs
 | 
			
		||||
git_config_name: ~ # @NOTE: has equivalent field under lockdown role vars example YAML file, but different value
 | 
			
		||||
git_config_email: ~ # @NOTE: has equivalent field under lockdown role vars example YAML file, but different value
 | 
			
		||||
							
								
								
									
										128
									
								
								.ansible/roles/lockdown/tasks/git.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								.ansible/roles/lockdown/tasks/git.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
			
		||||
# 'preferred_signing_key' -> 'gpg_preferred_signing'
 | 
			
		||||
# 'gpg_or_ssh_git_signing' -> 'git_signing_key_type'
 | 
			
		||||
- name: Install git package
 | 
			
		||||
  ansible.builtin.package:
 | 
			
		||||
    name: git
 | 
			
		||||
    state: latest
 | 
			
		||||
- name: Configure git name and email
 | 
			
		||||
  block:
 | 
			
		||||
  - name: Configure git name
 | 
			
		||||
    community.general.git_config:
 | 
			
		||||
      name: user.name
 | 
			
		||||
      scope: global
 | 
			
		||||
      state: present
 | 
			
		||||
      value: "{{ git_config_name }}"
 | 
			
		||||
  - name: Configure git email
 | 
			
		||||
    community.general.git_config:
 | 
			
		||||
      name: user.email
 | 
			
		||||
      scope: global
 | 
			
		||||
      state: present
 | 
			
		||||
      value: "{{ git_config_email }}"
 | 
			
		||||
- name: Configure git signing GPG key
 | 
			
		||||
  when: git_signing_key_type == "gpg"
 | 
			
		||||
  block:
 | 
			
		||||
  - name: Configure specified git signing GPG key
 | 
			
		||||
    when: preferred_signing_key > -1
 | 
			
		||||
    community.general.git_config:
 | 
			
		||||
      name: user.signingkey
 | 
			
		||||
      scope: global
 | 
			
		||||
      state: present
 | 
			
		||||
      value: "{{ gpg_origin_private_keyids[preferred_signing_key] }}"
 | 
			
		||||
    register: selected_signing_key
 | 
			
		||||
  - name: Configure random git signing GPG key
 | 
			
		||||
    when: preferred_signing_key <= -1
 | 
			
		||||
    community.general.git_config:
 | 
			
		||||
      name: user.signingkey
 | 
			
		||||
      scope: global
 | 
			
		||||
      state: present
 | 
			
		||||
      value: "{{ gpg_origin_private_keyids | random }}"
 | 
			
		||||
    register: selected_signing_key
 | 
			
		||||
- name: Configure git signing SSH key
 | 
			
		||||
  when: git_signing_key_type == "ssh"
 | 
			
		||||
  block:
 | 
			
		||||
  - name: Acquire SSH key-pairs from other system
 | 
			
		||||
    when: not files_mode
 | 
			
		||||
    block:
 | 
			
		||||
      - name: Acquire private SSH keys from other system
 | 
			
		||||
        delegate_to: "{{ ssh_keypairs_origin_host }}"
 | 
			
		||||
        ansible.builtin.command:
 | 
			
		||||
          argv:
 | 
			
		||||
          - cat
 | 
			
		||||
          - "~/.ssh/{{ item }}.ppk"
 | 
			
		||||
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
			
		||||
        register: ssh_secrets
 | 
			
		||||
      - name: Find SSH public keys in other system
 | 
			
		||||
        delegate_to: "{{ ssh_keypairs_origin_host }}"
 | 
			
		||||
        ansible.builtin.command:
 | 
			
		||||
          argv:
 | 
			
		||||
          - cat
 | 
			
		||||
          - "~/.ssh/{{ item }}.pub"
 | 
			
		||||
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
			
		||||
        register: ssh_nonsecrets
 | 
			
		||||
      - name: Create private SSH keys
 | 
			
		||||
        ansible.builtin.copy:
 | 
			
		||||
          content: "{{ item }}"
 | 
			
		||||
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ ssh_origin_keypairs_filenames[idx] }}.ppk"
 | 
			
		||||
          force: yes
 | 
			
		||||
          backup: yes
 | 
			
		||||
          mode: "0600"
 | 
			
		||||
          state: present
 | 
			
		||||
        loop: "{{ ssh_secrets.results }}"
 | 
			
		||||
        loop_control:
 | 
			
		||||
          index_var: idx
 | 
			
		||||
        register: created_ssh_private_keys
 | 
			
		||||
      - name: Create public SSH keys
 | 
			
		||||
        ansible.builtin.copy:
 | 
			
		||||
          content: "{{ item }}"
 | 
			
		||||
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ ssh_origin_keypairs_filenames[idx] }}.pub"
 | 
			
		||||
          force: yes
 | 
			
		||||
          backup: yes
 | 
			
		||||
          mode: "0644"
 | 
			
		||||
          state: present
 | 
			
		||||
        loop: "{{ ssh_nonsecrets.results }}"
 | 
			
		||||
        loop_control:
 | 
			
		||||
          index_var: idx
 | 
			
		||||
        register: created_ssh_public_keys
 | 
			
		||||
  - name: Acquire SSH key-pairs
 | 
			
		||||
    when: files_mode
 | 
			
		||||
    block:
 | 
			
		||||
      - name: Transfer private SSH keys
 | 
			
		||||
        ansible.builtin.copy:
 | 
			
		||||
          src: ssh/{{ ansible_facts['user_id'] }}/{{ item }}.ppk
 | 
			
		||||
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ item }}.ppk"
 | 
			
		||||
          force: yes
 | 
			
		||||
          backup: yes
 | 
			
		||||
          mode: "0600"
 | 
			
		||||
          state: present
 | 
			
		||||
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
			
		||||
        loop_control:
 | 
			
		||||
          index_var: idx
 | 
			
		||||
        register: created_ssh_private_keys
 | 
			
		||||
      - name: Transfer public SSH keys
 | 
			
		||||
        ansible.builtin.copy:
 | 
			
		||||
          src: ssh/{{ ansible_facts['user_id'] }}/{{ item }}.pub
 | 
			
		||||
          dest: "{{ ansible_facts['user_dir'] }}/.ssh/{{ item }}.pub"
 | 
			
		||||
          force: yes
 | 
			
		||||
          backup: yes
 | 
			
		||||
          mode: "0644"
 | 
			
		||||
          state: present
 | 
			
		||||
        loop: "{{ ssh_origin_keypairs_filenames }}"
 | 
			
		||||
        loop_control:
 | 
			
		||||
          index_var: idx
 | 
			
		||||
        register: created_ssh_public_keys
 | 
			
		||||
  - name: Configure acquired, specified SSH public key as git signing key
 | 
			
		||||
    when: preferred_signing_key > -1
 | 
			
		||||
    community.general.git_config:
 | 
			
		||||
      name: user.signingkey
 | 
			
		||||
      scope: global
 | 
			
		||||
      state: present
 | 
			
		||||
      value: "{{ created_ssh_public_keys.results[preferred_signing_key] }}"
 | 
			
		||||
    register: selected_signing_key
 | 
			
		||||
  - name: Configure acquired, random SSH public key as git signing key
 | 
			
		||||
    when: preferred_signing_key <= -1
 | 
			
		||||
    community.general.git_config:
 | 
			
		||||
      name: user.signingkey
 | 
			
		||||
      scope: global
 | 
			
		||||
      state: present
 | 
			
		||||
      value: "{{ created_ssh_public_keys.results | random  }}"
 | 
			
		||||
    register: selected_signing_key
 | 
			
		||||
@@ -1,23 +1,39 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Acquire GPG private keys from other system
 | 
			
		||||
  delegate_to: "{{ gpg_private_keys_origin_host }}"
 | 
			
		||||
  ansible.builtin.command:
 | 
			
		||||
    argv:
 | 
			
		||||
      - gpg
 | 
			
		||||
      - -a
 | 
			
		||||
      - --export-secret-key
 | 
			
		||||
      - "{{ item }}"
 | 
			
		||||
  loop: "{{ gpg_origin_private_keyids }}"
 | 
			
		||||
  register: gpg_secrets
 | 
			
		||||
- name: Create GPG private keys
 | 
			
		||||
  when: not files_mode
 | 
			
		||||
  block:
 | 
			
		||||
    - name: Acquire GPG private keys' contents from other system
 | 
			
		||||
      delegate_to: "{{ gpg_private_keys_origin_host }}"
 | 
			
		||||
      ansible.builtin.command:
 | 
			
		||||
        argv:
 | 
			
		||||
          - gpg
 | 
			
		||||
          - -a
 | 
			
		||||
          - --export-secret-key
 | 
			
		||||
          - "{{ item }}"
 | 
			
		||||
      loop: "{{ gpg_origin_private_keyids }}"
 | 
			
		||||
      register: gpg_secrets
 | 
			
		||||
    - name: Create GPG private keys using acquired GPG private keys' contents
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        content: "{{ item }}"
 | 
			
		||||
        dest: "{{ ansible_facts['user_dir'] }}/.gnupg/{{ gpg_origin_private_keyids[idx] }}.priv.asc"
 | 
			
		||||
        force: yes
 | 
			
		||||
        backup: yes
 | 
			
		||||
        mode: "0600"
 | 
			
		||||
        state: present
 | 
			
		||||
      loop: "{{ gpg_secrets.results }}"
 | 
			
		||||
      loop_control:
 | 
			
		||||
        index_var: idx
 | 
			
		||||
      register: created_gpg_private_keys
 | 
			
		||||
- name: Acquire GPG private keys
 | 
			
		||||
  when: files_mode
 | 
			
		||||
  ansible.builtin.copy:
 | 
			
		||||
    content: "{{ item }}"
 | 
			
		||||
    dest: "{{ ansible_facts['user_dir'] }}/.gnupg/{{ ansible_facts['user_dir'] }}-{{ idx }}.priv.asc"
 | 
			
		||||
    src: gnupg/{{ ansible_facts['user_id'] }}/{{ item }}.asc
 | 
			
		||||
    dest: "{{ ansible_facts['user_dir'] }}/.gnupg/{{ item }}.priv.asc"
 | 
			
		||||
    force: yes
 | 
			
		||||
    backup: yes
 | 
			
		||||
    mode: "0600"
 | 
			
		||||
    state: present
 | 
			
		||||
  loop: "{{ gpg_secrets.results }}"
 | 
			
		||||
  loop: "{{ gpg_origin_private_keyids }}"
 | 
			
		||||
  loop_control:
 | 
			
		||||
    index_var: idx
 | 
			
		||||
  register: created_gpg_private_keys
 | 
			
		||||
 
 | 
			
		||||
@@ -47,6 +47,7 @@
 | 
			
		||||
  when: not files_mode and ansible_facts["user_id"] == "root"
 | 
			
		||||
  block:
 | 
			
		||||
    - name: Acquire list of SSH public keys for sys-admin user
 | 
			
		||||
      delegate_to: "{{ ssh_keypairs_origin_host }}"
 | 
			
		||||
      ansible.builtin.find:
 | 
			
		||||
        paths: "{{ lookup('env', 'HOME') }}/.ssh"
 | 
			
		||||
        patterns:
 | 
			
		||||
@@ -58,10 +59,18 @@
 | 
			
		||||
        - administrative_user
 | 
			
		||||
        - admin_ssh
 | 
			
		||||
      register: ssh_public_keys
 | 
			
		||||
    - name: Acquire contents of SSH public keys for sys-admin user
 | 
			
		||||
      delegate_to: "{{ ssh_keypairs_origin_host }}"
 | 
			
		||||
      ansible.builtin.command:
 | 
			
		||||
        argv:
 | 
			
		||||
          - cat
 | 
			
		||||
          - "{{ item.path }}"
 | 
			
		||||
      loop: "{{ ssh_public_keys.files }}"
 | 
			
		||||
      register: ssh_public_keys_contents
 | 
			
		||||
    - name: Register SSH public keys as sys-admin user's authorized keys
 | 
			
		||||
      ansible.builtin.lineinfile:
 | 
			
		||||
        path: "{{ created_admin.home }}/.ssh/authorized_keys"
 | 
			
		||||
        line: "{{ lookup('ansible.builtin.file', item.path) }}"
 | 
			
		||||
        line: "{{ item }}"
 | 
			
		||||
        owner: "{{ created_admin.name }}"
 | 
			
		||||
        group: "{{ created_admin.name }}"
 | 
			
		||||
        mode: "0600"
 | 
			
		||||
@@ -72,8 +81,8 @@
 | 
			
		||||
        - default
 | 
			
		||||
        - administrative_user
 | 
			
		||||
        - admin_ssh
 | 
			
		||||
      loop: "{{ ssh_public_keys.files }}"
 | 
			
		||||
    - name: Register SSH puplic keys as other users' authorized keys
 | 
			
		||||
      loop: "{{ ssh_public_keys_contents.results }}"
 | 
			
		||||
    - name: Register SSH public keys as other users' authorized keys
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        src: "ssh/{{ item.name }}/authorized_keys"
 | 
			
		||||
        dest: "{{ item.home }}/.ssh/authorized_keys"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										67
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										67
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -6,23 +6,58 @@ senpai/
 | 
			
		||||
/galaxy_token
 | 
			
		||||
.ansible/log.txt
 | 
			
		||||
.ansible/facts/
 | 
			
		||||
.ansible/roles/**/vars/*
 | 
			
		||||
.ansible/roles/**/files/ssh/*
 | 
			
		||||
.ansible/roles/**/*/files/sshd_config.d/*.conf
 | 
			
		||||
.ansible/roles/**/*/templates/sshd_config.d/*.conf
 | 
			
		||||
.ansible/collections/ansible_collections/
 | 
			
		||||
/playbooks/group_vars/**/main.yml
 | 
			
		||||
/playbooks/host_vars/**/main.yml
 | 
			
		||||
/playbooks/**/ssh_keys_vault.yml
 | 
			
		||||
/playbooks/**/ssh_keys.yml
 | 
			
		||||
/playbooks/files/**/bash/bash_aliases
 | 
			
		||||
/playbooks/files/**/bash/**/bash_aliases
 | 
			
		||||
/playbooks/files/**/bash/bash_functions
 | 
			
		||||
/playbooks/files/**/bash/**/bash_functions
 | 
			
		||||
/playbooks/files/**/ssh/config
 | 
			
		||||
/playbooks/files/**/ssh/**/config
 | 
			
		||||
/playbooks/files/**/xdg/user-dirs.defaults
 | 
			
		||||
/playbooks/files/**/xdg/**/user-dirs.defaults
 | 
			
		||||
*.bak
 | 
			
		||||
 | 
			
		||||
group_vars/**/main.yml
 | 
			
		||||
host_vars/**/main.yml
 | 
			
		||||
**/group_vars/**/main.yml
 | 
			
		||||
**/host_vars/**/main.yml
 | 
			
		||||
group_vars/**/vault.yml
 | 
			
		||||
host_vars/**/vault.yml
 | 
			
		||||
**/group_vars/**/vault.yml
 | 
			
		||||
**/host_vars/**/vault.yml
 | 
			
		||||
 | 
			
		||||
.ansible/roles/**/vars/*
 | 
			
		||||
playbooks/vars/ssh_keys_vault.yml
 | 
			
		||||
playbooks/vars/ssh_keys.yml
 | 
			
		||||
**/playbooks/vars/ssh_keys_vault.yml
 | 
			
		||||
**/playbooks/vars/ssh_keys.yml
 | 
			
		||||
playbooks/vars/main.yml
 | 
			
		||||
playbooks/vars/vault.yml
 | 
			
		||||
**/playbooks/vars/main.yml
 | 
			
		||||
**/playbooks/vars/vault.yml
 | 
			
		||||
 | 
			
		||||
files/**/**/config
 | 
			
		||||
**/files/**/**/config
 | 
			
		||||
files/**/**/authorized_keys
 | 
			
		||||
**/files/**/**/authorized_keys
 | 
			
		||||
files/**/**/*.conf
 | 
			
		||||
**/files/**/**/*.conf
 | 
			
		||||
files/**/**/*.dirs
 | 
			
		||||
**/files/**/**/*.dirs
 | 
			
		||||
files/**/**/*.defaults
 | 
			
		||||
**/files/**/**/*.defaults
 | 
			
		||||
files/**/**/bash_aliases
 | 
			
		||||
**/files/**/**/bash_aliases
 | 
			
		||||
files/**/**/bash_functions
 | 
			
		||||
**/files/**/**/bash_functions
 | 
			
		||||
 | 
			
		||||
templates/**/**/config
 | 
			
		||||
**/templates/**/**/config
 | 
			
		||||
templates/**/**/authorized_keys
 | 
			
		||||
**/templates/**/**/authorized_keys
 | 
			
		||||
templates/**/**/*.conf
 | 
			
		||||
**/templates/**/**/*.conf
 | 
			
		||||
templates/**/**/*.dirs
 | 
			
		||||
**/templates/**/**/*.dirs
 | 
			
		||||
templates/**/**/*.defaults
 | 
			
		||||
**/templates/**/**/*.defaults
 | 
			
		||||
templates/**/**/bash_aliases
 | 
			
		||||
**/templates/**/**/bash_aliases
 | 
			
		||||
templates/**/**/bash_functions
 | 
			
		||||
**/templates/**/**/bash_functions
 | 
			
		||||
 | 
			
		||||
hosts.ini
 | 
			
		||||
hosts.yml
 | 
			
		||||
hosts.yaml
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
# This file is written by xdg-user-dirs-update
 | 
			
		||||
# If you want to change or add directories, just edit the line you're
 | 
			
		||||
# interested in. All local changes will be retained on the next run.
 | 
			
		||||
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
 | 
			
		||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
 | 
			
		||||
# absolute path. No other format is supported.
 | 
			
		||||
# 
 | 
			
		||||
XDG_DESKTOP_DIR="$HOME/Desktop"
 | 
			
		||||
XDG_DOWNLOAD_DIR="$HOME/Downloads"
 | 
			
		||||
XDG_TEMPLATES_DIR="$HOME/Templates"
 | 
			
		||||
XDG_PUBLICSHARE_DIR="$HOME/Public"
 | 
			
		||||
XDG_DOCUMENTS_DIR="$HOME/Documents"
 | 
			
		||||
XDG_MUSIC_DIR="$HOME/Music"
 | 
			
		||||
XDG_PICTURES_DIR="$HOME/Pictures"
 | 
			
		||||
XDG_VIDEOS_DIR="$HOME/Videos"
 | 
			
		||||
@@ -7,21 +7,24 @@
 | 
			
		||||
    - vars/ssh_keys.yml
 | 
			
		||||
  vars:
 | 
			
		||||
    ansible_user: "{{ passwords[0].username }}"
 | 
			
		||||
    ansible_ssh_user: "{{ passwords[0].username }}"
 | 
			
		||||
    # @NOTE one of below two lines should be commented/uncommented in a mutually exclusive fashion
 | 
			
		||||
    # ansible_ssh_private_key_file: "{{ chosen_native_ssh_private_key_file | default(chosen_local_ssh_private_key_file, true) }}" # @NOTE only works with soft-coded SSH key list building
 | 
			
		||||
    ansible_ssh_private_key_file: "{{ chosen_local_ssh_private_key_file }}"
 | 
			
		||||
    ansible_ssh_private_key_file: "{{ chosen_local_ssh_private_key_file }}" # @NOTE references an inventory / group variable
 | 
			
		||||
    # @NOTE below three lines should only be uncommented when above two are commented and vice versa; key-based authentication should have already been enabled prior to running this playbook
 | 
			
		||||
    # ansible_password: "{{ passwords[0].password }}"
 | 
			
		||||
    # ansible_ssh_pass: "{{ passwords[0].username }}"
 | 
			
		||||
    # ansible_ssh_password: "{{ passwords[0].username }}"
 | 
			
		||||
    ansible_python_interpreter: “{{ ansible_playbook_python }}”
 | 
			
		||||
    personal_computers: locals # @NOTE can change to *_households group or {{ name }}_{{ surname }} group name
 | 
			
		||||
  vars_prompt:
 | 
			
		||||
    - name: gpg_import_passwords
 | 
			
		||||
      prompt: Enter space-wrapped colon -separated list of GPG private key passwords
 | 
			
		||||
    - name: gpg_or_ssh_git_signing
 | 
			
		||||
      prompt: Enter preferred signing key type (e.g., ssh or gpg)
 | 
			
		||||
      unsafe: yes
 | 
			
		||||
      private: yes
 | 
			
		||||
      private: no
 | 
			
		||||
      default: "ssh"
 | 
			
		||||
    - name: git_preferred_signing
 | 
			
		||||
      prompt: Enter index or number of preferred signing key (negative number for random)
 | 
			
		||||
      unsafe: yes
 | 
			
		||||
      private: no
 | 
			
		||||
      default: -1
 | 
			
		||||
  tasks:
 | 
			
		||||
    - name: Disable shell access for root
 | 
			
		||||
      ansible.builtin.include_role:
 | 
			
		||||
@@ -37,7 +40,7 @@
 | 
			
		||||
    - name: Create global bash aliases
 | 
			
		||||
      become: yes
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        src: files/all/bash/bash_aliases
 | 
			
		||||
        src: bash/bash_aliases
 | 
			
		||||
        dest: /etc/bash_aliases
 | 
			
		||||
        owner: root
 | 
			
		||||
        group: root
 | 
			
		||||
@@ -52,7 +55,7 @@
 | 
			
		||||
    - name: Create global bash functions
 | 
			
		||||
      become: yes
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        src: files/all/bash/bash_functions
 | 
			
		||||
        src: bash/bash_functions
 | 
			
		||||
        dest: /etc/bash_functions
 | 
			
		||||
        owner: root
 | 
			
		||||
        group: root
 | 
			
		||||
@@ -87,7 +90,7 @@
 | 
			
		||||
      tags:
 | 
			
		||||
        - default
 | 
			
		||||
        - source_sys_bashrc
 | 
			
		||||
    - name: Start XDG configuration tasks if in servers group 
 | 
			
		||||
    - name: Start XDG configuration tasks if current host in servers group 
 | 
			
		||||
      when: "'servers' in group_names and ansible_connection != 'local'"
 | 
			
		||||
      become: yes
 | 
			
		||||
      block:
 | 
			
		||||
@@ -104,7 +107,7 @@
 | 
			
		||||
            state: present
 | 
			
		||||
        - name: Create XDG user home directory environment variables
 | 
			
		||||
          ansible.builtin.copy:
 | 
			
		||||
            src: "files/servers/{{ ansible_facts['user_id'] }}/xdg/user-dirs.dirs"
 | 
			
		||||
            src: "xdg/{{ ansible_facts['user_id'] }}/user-dirs.dirs"
 | 
			
		||||
            dest: "{{ ansible_facts['user_dir'] }}/.config/user-dirs.dirs"
 | 
			
		||||
            owner: root
 | 
			
		||||
            group: root
 | 
			
		||||
@@ -117,7 +120,7 @@
 | 
			
		||||
        - default
 | 
			
		||||
        - create_xdg_config
 | 
			
		||||
        - servers_exclusive
 | 
			
		||||
    - name: Start XDG configuration tasks if current host in specified group
 | 
			
		||||
    - name: Start XDG configuration tasks if current host is local or personal
 | 
			
		||||
      when: "personal_computers in group_names or ansible_connection == 'local'"
 | 
			
		||||
      become: yes
 | 
			
		||||
      block:
 | 
			
		||||
@@ -134,7 +137,7 @@
 | 
			
		||||
            state: present
 | 
			
		||||
        - name: Create XDG user home directory environment variables
 | 
			
		||||
          ansible.builtin.copy:
 | 
			
		||||
            src: "files/locals/{{ ansible_facts['user_id'] }}/xdg/user-dirs.dirs"
 | 
			
		||||
            src: "xdg/{{ ansible_facts['user_id'] }}/user-dirs.dirs"
 | 
			
		||||
            dest: "{{ ansible_facts['user_dir'] }}/.config/user-dirs.dirs"
 | 
			
		||||
            owner: root
 | 
			
		||||
            group: root
 | 
			
		||||
@@ -147,13 +150,13 @@
 | 
			
		||||
        - default
 | 
			
		||||
        - create_xdg_config
 | 
			
		||||
        - locals_exclusive
 | 
			
		||||
    - name: Start SSH configuration tasks if current host in specified group
 | 
			
		||||
    - name: Start SSH configuration tasks if current host is local or personal
 | 
			
		||||
      when: "personal_computers in group_names or ansible_connection == 'local'"
 | 
			
		||||
      become: yes
 | 
			
		||||
      block:
 | 
			
		||||
        - name: Create user SSH configuration
 | 
			
		||||
          ansible.builtin.copy:
 | 
			
		||||
            src: "files/locals/ssh/{{ ansible_facts['user_id'] }}/config"
 | 
			
		||||
            src: "ssh/{{ ansible_facts['user_id'] }}/config"
 | 
			
		||||
            dest: "{{ ansible_facts['user_dir'] }}/.ssh/config"
 | 
			
		||||
            follow: yes
 | 
			
		||||
            force: yes
 | 
			
		||||
@@ -173,11 +176,22 @@
 | 
			
		||||
        vars_from: main
 | 
			
		||||
        handlers_from: main
 | 
			
		||||
        tasks_from: gpg
 | 
			
		||||
      vars:
 | 
			
		||||
        gpg_keys_origin_host: localhost
 | 
			
		||||
        gpg_origin_private_key_passwords: "{{ gpg_import_passwords | split(' : ') }}"
 | 
			
		||||
      tags:
 | 
			
		||||
        - default
 | 
			
		||||
        - import_gpg_privkeys
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
    - name: Set up git
 | 
			
		||||
      ansible.builtin.include_role:
 | 
			
		||||
        name: lockdown
 | 
			
		||||
        defaults_from: main
 | 
			
		||||
        vars_from: main
 | 
			
		||||
        handlers_from: main
 | 
			
		||||
        tasks_from: git
 | 
			
		||||
      vars:
 | 
			
		||||
        git_signing_key_type: gpg_or_ssh_git_signing
 | 
			
		||||
        preferred_signing_key: git_preferred_signing
 | 
			
		||||
      tags:
 | 
			
		||||
        - default
 | 
			
		||||
        - configure_git
 | 
			
		||||
    
 | 
			
		||||
          
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,18 @@
 | 
			
		||||
- name: manage_root
 | 
			
		||||
  hosts: servers # @NOTE for IPv6, switch to 'servers6' instead of 'servers4'--for both, 'servers'
 | 
			
		||||
  remote_user: root # MUST be run as root
 | 
			
		||||
  # roles:
 | 
			
		||||
  #   - lockdown
 | 
			
		||||
  vars:
 | 
			
		||||
    ansible_user: root
 | 
			
		||||
    # ansible_ssh_user: root
 | 
			
		||||
  vars_prompt:
 | 
			
		||||
    - name: ansible_password
 | 
			
		||||
      prompt: Enter pasword for root user of VPS
 | 
			
		||||
      unsafe: yes
 | 
			
		||||
      private: yes
 | 
			
		||||
    # - name: ansible_ssh_pass
 | 
			
		||||
    #   prompt: Enter pasword for root user of VPS
 | 
			
		||||
    #   unsafe: yes
 | 
			
		||||
    #   private: yes
 | 
			
		||||
  tasks:
 | 
			
		||||
    - name: Set up sys-admin account on VPS and secure VPS
 | 
			
		||||
      ansible.builtin.include_role:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Lock down VPS
 | 
			
		||||
  ansible.builtin.import_playbook: manage_root.yml
 | 
			
		||||
- name: Disable shell for root
 | 
			
		||||
- name: Bootstrap VPS
 | 
			
		||||
  ansible.builtin.import_playbook: init_login.yml
 | 
			
		||||
		Reference in New Issue
	
	Block a user