# clone-repositories role This ansible-role for dealing with cloning the repositories necessary for deploying the system used from **c3infodesk**. ## Requirements - To have [ansible](https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html) installed at your system. ## Configuration You need to set some configuration for this to work - ### ansible.cfg You have to edit the **ansible.cfg** file to your needs for accessing your target. - #### remote_user You need to set the **remote_user** configuration for accessing the target host. Example: [remote_user](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg#L227) - ### HOST_VARS In order to access your target host, you need to create/edit your **inventories/host_vars/<YOUR_HOST_NAME>.yml** - #### ansible_become_pass You need to set the **sudo** password from the user setted on **remote_user** for installing packages and etc. at the target. Example: [ansible_become_pass](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/host_vars/example_server.yml#L5) - ### HOSTS You need to provide a **group** in which your target belongs to with the same name setted for **inventories/host_vars/<YOUR_HOST_NAME>.yml**. There you can add/edit the target address/IP. Example: [hosts](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/hosts) ## Role Variables Here are the variables setted: - ### From: inventories/host_vars/<TARGET_NAME> Here are the variables that you should be changing for your own deployment. - **c3infodesk_printer_repo_new_branch_name**: DEFAULT="test_branch" - The branch name that it will be checked-out for avoiding updating the **main** branch - ### From: inventories/group_vars/<TARGET_GROUP> - **c3infodesk_printer_folder**: DEFAULT="Coding/c3infodesk-printer" - The folder where to clone the repositories - ### From: roles/clone-repositories/defaults/main.yml - **c3infodesk_printer_repo_clone**: DEFAULT=true - If it should or not clone the repository. - **c3infodesk_printer_repo_url**: DEFAULT="https://git.cccv.de/fejao/c3infodesk-printer.git" - The repository to be cloned. - **c3infodesk_printer_repo_new_branch_name**: DEFAULT="new_branch_name" - The branch name to be set after cloning the repository. ## Dependencies The role dependencies are: - [dependencies(role)](roles/dependencies/README.md) ## Example Playbook - ### Using the provided example For using the example playbook **[playbooks/examples/example_03_clone_repositories.yml](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/playbooks/examples/example_03_clone_repositories.yml)** file you only need to: - Change the user at the **[ansible.cfg](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg)** file at the field **[remote_user](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg#L227)** for acessing your target. - Update the file **[inventories/host_vars/example_server.yml](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/host_vars/example_server.yml)** and change the value for **[ansible_become_pass](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/host_vars/example_server.yml#L5)** from the **[remote_user](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/ansible.cfg#L227)** - Update the **[inventories/hosts](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/hosts)** file and change the **[example_server](https://git.cccv.de/fejao/c3infodesk-deployment/-/blob/main/inventories/hosts#L2)** with the IP address from your target. And run the command: ```bash ansible-playbook -i inventories/hosts playbooks/examples/example_03_clone_repositories.yml ``` - ### Setting your own example After setting your variables at **inventories/host_vars/<HOST_NAME>**, you can add this role to your playbook as a regular role. Here is an example using the **<HOST_NAME>** as **test_servers** ```yaml - hosts: - test_servers roles: - roles/clone_repositories ``` And call the playbook as: ```bash ansible-playbook -i <INVENTORY> <PLAYBOOK_NAME>.yml ``` ## Testing You can test this locally using **DIND (docker in docker)** at your own computer using [ansible molecule](https://ansible.readthedocs.io/projects/molecule/installation/) - ### Testing requirements You need docker installed at your system and the [ansible molecule](https://ansible.readthedocs.io/projects/molecule/installation/). You might have to set DIND at your system, for linux, you can create the file **/etc/docker/daemon.json** And add the content and restart docker. ```json { "exec-opts": ["native.cgroupdriver=systemd"], "features": { "buildkit": true }, "experimental": true, "cgroup-parent": "docker.slice" } ``` - ### Using molecule Just go to the root of the role **roles/dependencies** and run the command: ```bash molecule test ``` ## License MIT / BSD ## Author Information  [https://chaos.social/@fejao](https://chaos.social/@fejao)