--- # 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 ## 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() { if [[ "$1" == "-"* ]]; then echo 'USAGE: weather [location] Any "-" paramaters call the usage since it does not take any options. Useful location types: $zip_code $city,$state @$domain_dot_extension Full documentation: https://github.com/chubin/wttr.in' return 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 }} 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 }} 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 != ""