# user-setup ## Prerequisites - Setup Ansible: follow the [installation](../README.md#installation) guide to setup ansible on your machine. - Setup a remote machine with passwordless SSH login for the root user - Install `passlib` used for handling encrypted passwords when setting up a user ```bash pip install passlib ``` ## Setup a user - Create a new `hosts.ini` file: ```bash cd user-setup/ cp ../hosts.example.ini hosts.ini ``` - Edit the [`hosts.ini`](./hosts.ini) file: ```ini [deployment_host] ansible_host= ansible_user= ansible_ssh_common_args='-o ForwardAgent=yes' ``` - Replace `` with the desired `hostname` of the remote machine - Replace `` with the IP address or hostname of the target machine - Replace `` with `root` - Verify that you are able to connect to the host using the following command: ```bash ansible all -m ping -i hosts.ini # Expected output: # | SUCCESS => { # "ansible_facts": { # "discovered_interpreter_python": "/usr/bin/python3.10" # }, # "changed": false, # "ping": "pong" # } ``` - Setup `user-vars.yml` using the example file ```bash cp user-vars.example.yml user-vars.yml ``` - Edit the `user-vars.yml` file: ```bash # name of the user you want to setup on the target host username: "" # password of the user you want to setup on the target host password: "" # path to the ssh key on your machine, eg: "/home/user/.ssh/id_rsa.pub" path_to_ssh_key: "" ``` - Execute the `setup-user.yml` Ansible playbook to create a user with passwordless sudo permissions: ```bash LANG=en_US.utf8 ansible-playbook setup-user.yml -i hosts.ini ```