Driving Innovation: RWS's Open Approach to Ansible Automation

Rijkswaterstaat embraces an open approach to Ansible engineering, promoting the reuse of ideas and code. This enables increased flexibility and productivity, particularly in the open source/internet domain.

For more information on this approach, refer to ODM / OSS. This page provides a comprehensive explanation of how this approach is used to manage the Rijkswaterstaat (RWS) GIS Platform. It covers three distinct Ansible disciplines, accompanied by text and diagrams:

Ansible engineering

This discipline focuses on creating reusable fundamental automation building blocks through Ansible Collections and Ansible Roles. These activities primarily take place in the open source/internet domain, maximizing flexibility and productivity. The configuration/playbook project for this reference implementation is the c2platform/rws/ansible-gis project. This project enables the local deployment of a complete and functional environment of the RWS GIS Platform. For this purpose, the project utilizes the Ansible collections c2platform.gis and c2platform.wincore. These projects are public, open-source projects that are part of the GitLab Open Source Program.

The diagram below illustrates the provisioning of a local instance of the RWS GIS Platform by an open-source Ansible engineer using Vagrant. The example showcases four local nodes:

  1. gsd-rproxy1: An Apache2 instance running in an LXD container. For more information on this type of node, refer to the guide on Setting up a Reverse Proxy and CA server.
  2. gsd-agwat1,gsd-adserver1, gsd-agportal1: These represent ArcGIS Webadapter, ArcGIS Server, and ArcGIS Portal, respectively.

The engineer manages the GitLab projects stored in the c2platform/rws/  folder on gitlab.com  by pushing and pulling changes.

Additionally, the c2platform.gis and c2platform.wincore projects are periodically pushed to the RWS Azure DevOps Namespace  to facilitate development on the Ansible Control Node  . Refer to Ansible ad-hoc for more details.

Open-source projects that are part of the GitLab Open Source Program benefit from free and unlimited CI/CD workloads. As a result, the c2platform.gis and c2platform.wincore projects include a CI/CD pipeline that publishes to the Galaxy website.

Ansible configuration

This discipline involves the creation of an Ansible configuration project, commonly referred to as an Ansible playbook project. It encompasses inventory, plays, and environment configurations for the RWS GIS Platform environments located within the RWS data center. It is important to note that this discipline differs significantly from Ansible engineering. Therefore, the primary role involved is that of an Ansible User rather than an Ansible Engineer.

The tasks involved in this discipline are generally straightforward and can be accomplished using web interfaces: the Ansible Automation Platform (AAP)  and the Azure Devops web interface. However, it is highly recommended to utilize Visual Studio Code as the preferred tool for managing the Ansible configuration/playbook project. This is especially true when dealing with larger and more complex projects such as ansible-gis  and its open-source upstream reference project ansible-gis, as navigating and managing them without an IDE can become challenging.

Ansible ad-hoc

This discipline revolves around utilizing Ansible on an Ansible Control Node  to perform ad-hoc technical maintenance tasks using Ansible. See also How-to: Setup Ansible Control Node.