150 lines
3.6 KiB
YAML

---
# 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.com
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 != ""