Skip to content

Commit 0cec93d

Browse files
authored
Merge pull request #8 from mpoore/dev
0.1.1
2 parents fb4964a + 5f020a1 commit 0cec93d

27 files changed

+205
-6
lines changed

README.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,41 @@
1-
# phpipam-vcf-automation
1+
# phpIPAM integration for VMware VCF Automation 8.x
2+
3+
This integration allows VMware VCF Automation 8.x to use [phpIPAM](https://phpipam.net) for assigning static IP addresses to provisioned virtual machines and on-demand networks.
4+
5+
## About VMware VCF Automation
6+
7+
VMware VCF Automation (formerly known as VMware Aria Automation and vRealize Automation) is VMware’s enterprise-grade platform for automating the deployment, configuration, and lifecycle management of cloud and on-premises infrastructure. It enables organizations to deliver infrastructure and application services consistently and at scale, leveraging policy-based governance and self-service capabilities.
8+
9+
A feature of VCF Automation is its integration with IP Address Management (IPAM) solutions, such as phpIPAM or Infoblox, allowing automated allocation, tracking, and management of IP addresses during the provisioning of virtual networks and workloads. This ensures IP consistency, avoids conflicts, and streamlines network automation workflows within VMware Cloud Foundation (VCF) environments.
10+
11+
## About phpIPAM
12+
13+
[phpIPAM](https://phpipam.net/) is an open-source IP address management (IPAM) solution designed to help organizations efficiently manage and track their IPv4 and IPv6 address space. Built with PHP, MySQL, and jQuery, it provides a modern and user-friendly web interface for managing subnets, IP addresses, VLANs, VRFs, and related network resources.
14+
15+
phpIPAM is lightweight, easy to deploy, and integrates well with network automation workflows, making it ideal for both small labs and large-scale enterprise environments.
16+
17+
- [phpIPAM documentation](https://phpipam.net/documents/all-documents/)
18+
- [phpIPAM REST API documentation](https://phpipam.net/api/api_documentation/)
19+
20+
## Documentation
21+
Documentation for this integration and its use in conjunction with VCF Automation and phpIPAM is available in the docs folder. The documentation is not intended to provide detailed guidance for either VCF Automation or phpIPAM beyond the scope of this integration.
22+
23+
The following documentation pages are available:
24+
- [Installation](docs/install.md) - How to download and install this integration.
25+
- [Prerequisites](docs/prerequisites.md) - Preparing phpIPAM to use this integration.
26+
- [Basic Configuration](docs/configure-basic.md) - Creating a basic connection for VCF Automation to phpIPAM using this integration.
27+
- [Filter Configuration](docs/configure-filter.md) - Using the filtering functionality to target specific subnets in phpIPAM.
28+
- [DNS Configuration](docs/configure-dns.md) - Populating DNS related fields in VCF Automation using fields in phpIPAM.
29+
- [On-Demand Networks](docs/configure-ondemand.md) - Using VCF Automation's on-demand networks capabilities with NSX and phpIPAM.
30+
- [Troubleshooting](docs/troubleshooting.md) - Some common problem areas and how to investigate them.
31+
32+
## Feedback and Issues
33+
34+
Whilst reasonable efforts have been made to test this integration, problems may still occur. The integration's author offers no warranty for its use. That said, if you do encounter a bug or have an idea for a change or improvement, please feel free to open an [Issue](https://github.com/mpoore/phpipam-vcf-automation/issues) on this repository.
35+
36+
Please include as much information as possible in any created issues, for example:
37+
- The version of phpIPAM used
38+
- The version of VCF Automation used
39+
- The version of this integration used
40+
- Details of the problem being seen
41+
- Any relevant log messages from the action runs in VCF Automation (see the [Troubleshooting](docs/troubleshooting.md) documentation page for how to view these)

docs/configure-basic.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Basic Configuration
2+
3+
A basic, minimal configuration of the phpIPAM integration with VMware VCF Automation is completed as follows and assumes that the provider has already been imported:
4+
5+
1. Login to VCF Automation as a user with administrative privileges to the Assembler component.
6+
7+
2. Navigate to **Infrastructure** > **Integrations**.
8+
9+
3. Click the button to **ADD INTEGRATION**.
10+
11+
![Click the button to ADD INTEGRATION](img/install_addintegration.png)
12+
13+
4. From the list of possible integrations, pick **IPAM**.
14+
15+
![Select the IPAM integration](img/install_addintegration_ipam.png)
16+
17+
5. Enter a unique name for the *New Integration*. Optionally, a description can be entered.
18+
19+
Select the **phpIPAM** integration from the list of available providers.
20+
21+
![Select the IPAM integration and enter a name](img/configure_select_provider.png)
22+
23+
6. The available fields for the integration are displayed along with their default values. The required fields are marked with a red asterisk. They are:
24+
25+
- phpIPAM Hostname
26+
- phpIPAM API App ID
27+
- phpIPAM API App Code
28+
29+
![The default options for the provider](img/configure_provider_blank.png)
30+
31+
7. Enter the FQDN of the phpIPAM instance, the App ID, and App Code into the relevant fields.
32+
33+
![The minimum configuration for the provider](img/configure_provider_min.png)
34+
35+
8. Click the **VALIDATE** button to check the connection from VCF Automation to the phpIPAM instance.
36+
37+
The SSL certificate used by phpIPAM may not be trusted. If that is the case, a prompt will be displayed asking for the discovered certificate to be accepted. Click the **ACCEPT** button.
38+
39+
![Accept the untrusted certificate if prompted](img/configure_untrusted_cert.png)
40+
41+
9. If the connection is successful, a green message box is displayed and the **ADD** button will be enabled. Click **ADD** to complete the configuration.
42+
43+
![Click the ADD button to complete the configuration](img/configure_credentials_validated.png)
44+
45+
10. The IPAM integration has now been configured and data collection will occur automatically.
46+
47+
![Configuration is complete](img/configure_integration_added.png)
File renamed without changes.

docs/configure-filter.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Filter Configuration
2+
3+
Basic configuration of the phpIPAM integration establishes a connection from VMware VCF Automation to phpIPAM and allows VCF Automation to collect information about subnets configured in phpIPAM.
4+
5+
These subnets can be associated with infrastructure networks in *Network Profiles* within VCF Automation and allow it to allocate IP addresses from phpIPAM to provisioned virtual machines. These addresses are released in phpIPAM when the virtual machines are deprovisioned.
6+
7+
By default, the integration will collect data about all defined subnets in phpIPAM that have the IP requests option enabled. The example subnet below has this option turned on and will be available for use to allocate IP addresses from.
8+
9+
Note: Filter configuration affects both subnets collected for virtual machine provisioning *and* subnets collected for on-demand networks.
10+
11+
![An example phpIPAM subnet with 'IP requests' enabled](img/phpipam_example_subnet.png)
12+
13+
If there are a large number of subnets managed by phpIPAM, or there are a limited number of subnets that should be exposed to VCF Automation, then a filter can be set to restrict which subnets are discovered.
14+
15+
## Configuring the Filter
16+
17+
To enable the subnet filtering functionality, the integration's configuration must be changed. This can either be accomplished during it's initial configuration or at a later point. If editing the configuration however, the API App Code will be required to validate the connection and save the configuration changes.
18+
19+
Enabling the filter requires checking the checkbox marked **Enable subnet filter?**.
20+
21+
![Checking the 'Enable subnet filter?' checkbox enables the filter](img/configure_filter1.png)
22+
23+
This then exposes two mandtory fields and one optional field. A default filter configuration is set but can be changed. The effect of the filter is to limit the scope of subnets that are discovered for use by VCF Automation. In the example above, the effect would be to limit discovery to subnets that meet the following two conditions:
24+
25+
1. "IP Requests" is enabled. (This is the default option that the integration always uses and can't be configured.)
26+
2. "Mark as Pool" is enabled.
27+
28+
The example subnet below in phpIPAM would meet those criteria.
29+
30+
![An example subnet in phpIPAM that meets the default filter criteria](img/configure_filter2.png)
31+
32+
## Selecting a Filter Field
33+
34+
The default filter field, `isPool`, is a built-in field in phpIPAM. The full list of fields available for subnets can be found in phpIPAM's API documentation.
35+
36+
Another option is to use a custom field. Custom fields are defined in phpIPAM against particular types of objects, for example subnets, to extend the data held about each instance of an object.
37+
38+
An example of a custom field might be `tenant`, which is configured in phpIPAM below:
39+
40+
![An example custom field (tenant) that can be filtered on](img/configure_filter3.png)
41+
42+
To filter using this field, its name must be prepended by `custom_` when adding it to the integration's configuration. Filtering can therefore be conducted against any field, built-in or custom, for a subnet.
43+
44+
## Filter Matching
45+
46+
Filter matching is optional, but allows more sophisticated filters to be created. As well as not being set, there are three filter matching options:
47+
48+
| Option | Behaviour |
49+
| ------------ | ------------------------------------------------ |
50+
| none / blank | (Default) The same as FULL, below. |
51+
| FULL | Looks for an exact value match. |
52+
| PARTIAL | Matches substrings or partial values. |
53+
| REGEX | Treats the filter value as a regular expression. |
54+
55+
Exhaustive testing of the filter functionality has not be conducted and depends on the capabilities exposed by phpIPAM.
56+
57+
## Saving Changes
58+
59+
To save any changes made to the integration's configuration, the API App Code must be re-entered and the connection validated before the changes can be saved.

docs/configure-ondemand.md

Whitespace-only changes.
81.5 KB
Loading

docs/img/configure_filter1.png

72.2 KB
Loading

docs/img/configure_filter2.png

99.7 KB
Loading

docs/img/configure_filter3.png

19.2 KB
Loading
31.5 KB
Loading

0 commit comments

Comments
 (0)