# service-provider-setup ## Setup Ansible To get started, follow the [installation](../README.md#installation) guide to setup ansible on your machine ## Configure DNS ### Prerequisites - Buy a domain and configure nameservers to DigitalOcean - Generate a DigitalOcean access token ### Create DNS entries in DigitalOcean - Copy the [`dns-vars.example.yml`](./vars/dns-vars.example.yml) file ```bash cd vars/ cp dns-vars.example.yml dns-vars.yml ``` - Set the following values in the `dns-vars.yml` file ```bash # primary domain for which DNS records will be managed # eg: laconic.com domain: "" # specific prefix for subdomains # eg: lcn-cad subdomain_prefix: "" # The IP address to be used for the A record of the cluster control machine # eg: 23.111.78.179 cluster_control_ip: "" # DigitalOcean access token # eg: dop_v1... do_api_token: "" ``` - Run the [`setup-dns.yml`](./setup-dns.yml) ansible playbook to create the necessary DNS entries in DigitalOcean ```bash ansible-playbook setup-dns.yml ``` ## Setup User `dev` - Create a new `hosts.ini` file: ```bash cp ../hosts.example.ini hosts.ini ``` - Edit the [`hosts.ini`](./hosts.ini) file to run the playbook on a remote machine: ```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 -k # Expected output: # | SUCCESS => { # "ansible_facts": { # "discovered_interpreter_python": "/usr/bin/python3.10" # }, # "changed": false, # "ping": "pong" # } ``` - Execute the `setup-user.yml` Ansible playbook to create a user `dev` with sudo permissions: ```bash ansible-playbook setup-user.yml -i hosts.ini --extra-vars='{ "target_host": "deployment_host" }' ```