Important part of any deployment of remote assets is their management. Sometimes all routers do have same configuration, sometimes we have groups of routers with different configuration and sometimes we have all of the above plus extra units for those special projects/deployments.
With Advantech routers, we have several options to achieve configuration management the easy way. This time we have a look on keeping a configuration snippets or whole configuration files in
git repository to track changes. Tracking configuration in git repository provides few advantages. Such as:
- excellent change management
- option to have configuration snippets to re-use
- comments with every change
- auditing of changes
- free and open source software
- and more
Advantech routers support flexible software add-ons (User Modules). This is an easy way to provide additional functionality not available in production firmware. Which means the production firmware is not compromised by constantly adding new features, which are beneficial to one customer. Features which are requested by many do have higher priority.
We have made a sample User Module, which downloads a configuration file from Gitlab or Github and apply it. This can be enhanced based on specific needs.
For example, we can download and apply configuration on factory reset. This provides an easy way for remote workers to just simply reset router to the default and router does the rest of the configuration process. Instead of the necessity of training the remote workers on sometimes quite complicated process and preparing extensive documentation.
Let’s have a look on how it works.
Let’s start with Github or in essence any git repository, with public access.
I have prepared a sample gist like this one, which does configure router to use NTP for time synchronisation.
Install the user module
Download the user module here and install it.
The user interface will look like this:
File URL: enter the URL of the file location. For example (https://gist.githubusercontent.com/tomasinouk/e525e5cc81ce3b6f71ff901c5f1fdd31/raw/81da8071029e594cdc2729ff1aaa55ab5dc1d635/sample_config_router_1.cfg)
Gitlab Token: This is Personal Access Token, please see details in Gitlab documentation Personal Access Token. In case you enter any text into Gitlab Token field, the user module will use the Gitlab routine for download.
Let’s continue with Github example.
Enter the URL of github file. It needs to be the raw representation of the file.
This will be quite a long url, and the UI field will not show the whole url. Just scroll the pointer to the end or use keyboard shortcut (mac: command + left arrow, windows: End key) to double check, that you have entered the whole URL.
Click on Apply. If the configuration has been downloaded and applied you will see confirmation message.
When you look into System Log, you should see something similar to this for version 1.0.1
2020-01-09 21:20:33 Get Remote Configuration: - len 0 should use github 2020-01-09 21:20:33 Get Remote Configuration: - input_ok is OK? 1 2020-01-09 21:20:33 Get Remote Configuration: - have this url cfg https://gist.githubusercontent.com/tomasinouk/e525e5cc81ce3b6f71ff901c5f1fdd31/raw/81da8071029e594cdc2729ff1aaa55ab5dc1d635/sample_config_router_1.cfg 2020-01-09 21:20:33 Get Remote Configuration: - input is OK... 2020-01-09 21:20:33 Get Remote Configuration: - status from curl: 1 ok: 0 2020-01-09 21:20:33 Get Remote Configuration: - status from restore status: 0
We have left some debugging output in the System Log to allow easier troubleshooting. This will become (enable/disable option).
As we are changing NTP configuration, navigate into Services -> NTP. Your setting should look similar to this, as we have disabled NTP service and set Primary NTP server to pool3.ntp.org
As you can imagine, this can become a very powerful tool, in some cases. For example get correct configuration after factory reset. Update of router configuration by non qualified personnel in the field. Simply managing various configuration versions becomes very transparent and organised task.
As always all the hardware is available at www.dureco.com.au