--- # 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!"' 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//\ /+}" } - name: General | Account Management | Users | Files | Common Variable set_fact: rc_common: | {{ path_additions }} {{ alias_cp }} {{ alias_mv }} {{ alias_rm }} {{ function_wttr }} - 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 != ""