--- # Create users for all machines. ## Variables ## - name: General | Account Management | Users | Use BASH (Default) set_fact: ling_shell: "{{ bash_exec.stdout }}" - name: General | Account Management | Users | Use ZSH (Arch+Manjaro) set_fact: ling_shell: "{{ zsh_exec.stdout }}" when: ansible_distribution == "Archlinux" ## Root ## - name: General | Account Management | Users | Root user: name: root shell: "{{ bash_exec.stdout }}" create_home: yes generate_ssh_key: yes register: user_root ## Scheduler ## - name: General | Account Management | Users | Ansible user: name: ansible comment: Ansible system: yes register: user_ansible ## Superuser ## - name: General | Account Management | Users | Hyperling user: name: ling comment: Hyperling groups: - sudo - video - render append: yes shell: "{{ ling_shell }}" create_home: yes generate_ssh_key: yes register: user_ling - name: General | Account Management | Users | Hyperling | Test Logging In shell: "echo SUCCESS" args: executable: "{{ ling_shell }}" become_user: ling ## Folders ## - name: General | Account Management | Users | Folders | Root | Create bin, Downloads, TRASH file: path: "{{ item }}" state: directory mode: '0755' loop: - "{{ user_root.home }}/bin" - "{{ user_root.home }}/Downloads" - "{{ user_root.home }}/TRASH" when: user_root.home != "" - name: General | Account Management | Users | Folders | Hyperling | Create bin, LBRY, TRASH file: path: "{{ item }}" state: directory mode: '0755' loop: - "{{ user_ling.home }}/bin" - "{{ user_ling.home }}/LBRY" - "{{ user_ling.home }}/TRASH" become_user: ling when: user_ling.home != "" - name: General | Account Management | Users | Folders | Home Directories 700 shell: "chmod 700 {{ user_ling.home }}/../*" ## Files ## - name: General | Account Management | Users | Files | RC Variables set_fact: alias_cp: alias cp='cp -v' alias_mv: alias mv='mv -v' alias_rm: alias rm='echo "Use mv ~/TRASH/ instead!"' alias_clean: alias clean='mv * ~/TRASH/' alias_clean_trash: alias clean-trash='sh -c "rm -rfv ~/TRASH/*"' path_additions: export PATH="~/bin:$PATH" function_wttr: | function weather() { # 20210301 - Someone showed me an awesome weather API! Had to implement it! if [[ "$1" == "-"* || $2 != "" ]]; then echo 'USAGE: weather [location] Any "-" paramaters call the usage since this function does not take any options. Location is optional since the API can determine your connection'"'"'s location. Useful location types: $zip_code | Ex: 12345 $city,$state | Ex: Austin,Texas @$domain_dot_extension | Ex: @github.com ~$special_location | Ex: ~Manitou Incline Full documentation: https://github.com/chubin/wttr.in' return 1 fi curl "https://wttr.in/${1//\ /+}" } PS1: export PS1='[\u@\h \w]\$ ' remount: alias remount='sudo umount /mnt/*; sudo umount /mnt/*/*; sudo mount -a; echo -e "\nRemount completed!"; mount | grep /mnt' update: | function update() { PROG=$FUNCNAME usage="Usage: $PROG [-y] $PROG is used to run all the system's package manager commands in one swoop. Flow stops if any command returns a failure code. The hope is to run something as easy as 'pacman -Syyu'. -y : Assume yes to any prompts." unset OPTIND while getopts ":hy" opt; do case $opt in h) echo -e "$usage" return 0 ;; y) accept="-y" ;; *) echo "ERROR: -$OPTARG is not a recognized option." echo -e "$usage" return 1 ;; esac done {{ update_package_manager }} {{ update_flatpak }} return 0 echo "ERROR: $PROG experienced a problem and has aborted." return 1 } sync: alias sync='date && echo "Syncing!" && sync && date' editor: export EDITOR='vi' init_aliases: | alias init-video='mkdir -v raw; mkdir -v exports; cp ~/Templates/*video* ./' alias init-vid=init-video alias init-program='echo -e "#!/bin/bash\n# `date +%Y-%m-%d` by Hyperling\n# REASON\n\nexit 0\n"' alias init-prog=init-program bye: | alias bye="{{ shutdown_command }}" alias goodbye="update -y && bye" - name: General | Account Management | Users | Files | Common Variable set_fact: rc_common: | {{ path_additions }} {{ alias_cp }} {{ alias_mv }} {{ alias_rm }} {{ alias_clean }} {{ alias_clean_trash }} {{ function_wttr }} {{ PS1 }} {{ remount }} {{ update }} {{ sync }} {{ editor }} {{ init_aliases }} {{ bye }} - name: General | Account Management | Users | Files | .bashrc blockinfile: path: "{{ item }}/.bashrc" block: | {{ rc_common }} [[ $(whoami) != "root" ]] && echo "`date` - Ansible .bashrc preferences loaded successfully!" marker: '# {mark} MANAGED BY ANSIBLE | Aliases' state: present create: yes backup: yes loop: - "{{ user_root.home }}" - "{{ user_ling.home }}" ignore_errors: yes when: user_root.home != "" and user_ling.home != "" - name: General | Account Management | Users | Files | .zshrc blockinfile: path: "{{ item }}/.zshrc" block: | {{ rc_common }} [[ $(whoami) != "root" ]] && echo "`date` - Ansible .zshrc preferences loaded successfully!" marker: '# {mark} MANAGED BY ANSIBLE | Aliases' state: present create: yes backup: yes loop: - "{{ user_root.home }}" - "{{ user_ling.home }}" ignore_errors: yes when: user_root.home != "" and user_ling.home != ""