Dear Customer, the RevolutionPi is based on an open source platform, which can lead to misbehavior of the devices. To solve some problems, you can use Ansible. Because Ansible is all about automation, it requires instructions to accomplish each job. With everything written down in simple script form, it's easy to do version control and automate repetitive tasks with relative ease. Regardless of whether it is a single system or many. It is available as open source software under the GNU General Public License for DevOps around the world.
Preparation
especially for Windows users
- Installing “Ubuntu on Windows” on your Windows computer. Downloadable from the Microsoft Store
- After the installation, enter the following commands:
sudo apt update sudo apt install ansible tree
A Playbooks.zip file is provided to solve your problem. Copy this Playbook and paste it into the Ubuntu drive (\\wls$). The "\\wls$" drive is created immediately after you install the Ubuntu app on your Windows machine. There are the following files in the playbooks.zip folder:
Inventory
".yml" file
a folder "files" with other files in it.
Just pay attention to the folder where the playbooks is inserted. For an Ansible script to run, you must be in the folder where it is pasted. For the realization of this tutorial, the playbook.zip was copied and inserted in the root folder of the "\\wls$" drive
- The "Inventory" must be adjusted. In the inventory, you must enter the IP address of your target system. All devices on which the tasks are to be executed must be entered under [bet] as shown below.
First, type the following command in terminal of ubuntu on windows
unzip playbooks.zip cd playbooks sudo nano inventory
- SSH secures communication between your local machine and a remote system by fully encrypting that traffic. With ssh-keygen, an SSH key is created for your target system and entered into a repository. The repository is then always different. Type the following command in terminal of ubuntu on windows
ssh-keygen
- After creating an SSH key, we can manually enter it into the authorized_keys file of the remote computer or use the ssh-copy-id command. Copy the key from the repository and save it on the target system (.ssh/authorized_keys)
Type the following command in terminal of ubuntu on windows
cat /root/.ssh/id_rsa.pub
Copy the SSH-Key from cat /root/.ssh/id_rsa.pub
and insert in the file .ssh/authorized_keys
.
Type the following command in terminal of your Target system (The Terminal you are using to be connected to your RevPi. For example: Putty, MobaXterm)
sudo nano .ssh/authorized_keys
Running the Ansible script
we have a repository on Github where all the essential elements for solving the tasks are stored. This repository can be reached through this link https://github.com/RevolutionPi/revpi-ansible-recipes.
Apply the instructions below to be prepared to run an Ansible script.
git clone https://github.com/RevolutionPi/revpi-ansible-recipes.git cd revpi-ansible-recipes/roles
With the command ls -l , you can see the names of all the folders that govern the different tasks. If you know the name of the folder that governs your task, please write it down. For our example, we will use the Revpi-switch folder to perform the task that uses Revpi as a switch.
- The "Inventory" must be adjusted. In the inventory, you must enter the IP address of your target system. All devices on which the tasks are to be executed must be entered under [bet] as shown below.
First, type the following command in terminal of ubuntu on windows
sudo nano inventory
- Now run the Ansible script in terminal of ubuntu on windows
Example 1: To ping a device
you have received for your issue a playbooks.zip order from the Kunbus Support to apply some tasks on your device or to solve a problem.
The playbooks.zip folder contains as standard:
Inventory
"Test.yml" file
a folder "files" with other files in it.
Type the following command in the ubuntu terminal on Windows to ping the device you want to reach.
cd playbooks #if you are not if the file playbooks ansible bet -i inventory -m ping
Example 2
you have received for your issue a playbooks.zip with the following content, after unzip it.
Test2.yml is in this case the YAML file that contains the instructions to perform a task.
name: RevPi as Switch hosts: bet tasks: - name: Copy file src './files/interfaces' dest '/etc/network/interfaces become: yes copy: src: ./files/interfaces dest: /etc/network/interfaces - name: apt update cache and install bridge-utils become: yes ansible.builtin.apt: name: bridge-utils update_cache: yes - name: disable dhcpcd.service become: yes ansible.builtin.service: name: dhcpcd.service enabled: no - name: enable networking become: yes ansible.builtin.service: name: networking enabled: yes - name: Reboot become: yes reboot:
This script does nothing else than:
Copy the file "interfaces" in order files from the host to the repository "./etc/network/interfaces” in Target System
The following commands are then executed.
sudo systemctl disable dhcp.service
sudo systemctl enable networking
sudo reboot
Type the following command in terminal of ubuntu on windows to run the "Test2.yml" file
cd playbooks #if you are not if the file playbooks ansible-playbook -i inventory -u pi Test2.yml
After a successful running of the script, you will get a message like shown on the following picture: