Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
44f6497
Updated Dockerfiles to use Python 3.11 and NodeJS 22.x images
DCMattyG Jul 15, 2025
cfaeb9d
Updated Deployment & Update scripts to reference Python 3.11 and Node…
DCMattyG Jul 15, 2025
c2f4e60
Updated Build script with new minimum version of NodeJS required
DCMattyG Jul 15, 2025
8a8e189
Updated required Python version to 3.11
DCMattyG Jul 15, 2025
b7c3114
Updated NPM packages to latest versions
DCMattyG Jul 15, 2025
5e27fa7
Removed deprecated Vite build plugins
DCMattyG Jul 15, 2025
4860772
Fixed React Router imports per changes in v7
DCMattyG Jul 15, 2025
c46d653
Minor updates to accomodate latest MSAL libraries
DCMattyG Jul 15, 2025
180c8d4
Fixed useEffect to be more compatible with StrictMode in development
DCMattyG Jul 15, 2025
1a0e811
Fixed Grid import to align with latest MUI version
DCMattyG Jul 15, 2025
855740a
Fixed logic for nextAvailableSubnet
DCMattyG Jul 15, 2025
b8f5625
Update NPM modules
DCMattyG Jul 18, 2025
f3fa6bc
Added id field to all job steps and switched PAT token for Git'Hub Ap…
DCMattyG Jul 18, 2025
22b157b
Fixed exclusions
DCMattyG Jul 18, 2025
e916e3f
Updated Python and NodeJS versions in GitHub Actions pipelines
DCMattyG Jul 21, 2025
2d064d2
Migrated away from Preview APIs
DCMattyG Aug 5, 2025
fa889f3
Fix bug where target app folder name was incorrect
DCMattyG Aug 5, 2025
75acd21
Prepare for latest version of @vitejs/react-plugin
DCMattyG Aug 18, 2025
8c72d55
Include files in UI root directory
DCMattyG Aug 18, 2025
1bd2152
Update dev container to latest versions of Python and NodeJS
DCMattyG Aug 18, 2025
f697221
Enable VSCode to trim trailing whitespace when saving
DCMattyG Aug 18, 2025
05989d3
Updated Dockerfiles with missing comments, missing build arguments an…
DCMattyG Sep 5, 2025
e862fc1
Fixed MSAL authentication issues
DCMattyG Sep 5, 2025
66ddfb0
Fixed access token acquisition to account for new SecureString by def…
DCMattyG Sep 5, 2025
e6e2c36
Rearranged script to more effectively us the Status API data during u…
DCMattyG Sep 5, 2025
0a9dd28
Created documentation for the process to migrate away from legacy IPA…
DCMattyG Sep 5, 2025
fa268d4
Created a migration script and Bicep templates to automate the proces…
DCMattyG Sep 5, 2025
4c19b10
Updated NPM packages to address bugs and security fixes
DCMattyG Sep 5, 2025
a74ed25
Fixed linting issues and added details about migration folder
DCMattyG Sep 5, 2025
7426419
Updated legacy Compose detection to not rely on Status API
DCMattyG Sep 8, 2025
7f5f40d
Removed uneeded FAQ entry
DCMattyG Sep 8, 2025
5b15459
Update NPM packages to latest versions
DCMattyG Sep 8, 2025
047fb9b
Improved error handling and addressed PSScriptAnalyzer warnings
DCMattyG Sep 8, 2025
7d31b33
Updated to the latest NPM package versions
DCMattyG Sep 8, 2025
2f4e8c6
Added documentation for Azure IPAM update process
DCMattyG Sep 8, 2025
efae973
Fixed documentation Markdown lint warnings
DCMattyG Sep 8, 2025
b82cfcb
Anonymized resource identifiers
DCMattyG Sep 8, 2025
5304df0
Added missing space
DCMattyG Sep 9, 2025
39042f5
Fixed token acquisition to account for newer PowerShell versions retu…
DCMattyG Sep 9, 2025
54094f7
Updated error message for better clarity
DCMattyG Sep 9, 2025
06b63cb
Renamed function to use an approved PowerShell verb
DCMattyG Sep 9, 2025
cc5d4a1
Added Azure PowerShell and Azure CLI warning suppression
DCMattyG Sep 11, 2025
1eefe6d
Updated NPM packages to latest versions
DCMattyG Sep 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ tools/
LICENSE

# IPAM UI
node_modules
**/node_modules
build
dist

Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/azure-ipam-assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,20 @@ jobs:
- run: echo "Job triggered by a ${{ github.event_name }} event."
- run: echo "Release Tag - ${{ github.event.release.tag_name }}."

- name: "Setup NodeJS v18"
- name: "Setup NodeJS v22"
id: setupNode
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22

- name: "Setup Python v3.9"
- name: "Setup Python v3.11"
id: setupPython
uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.11'

- name: Checkout Azure IPAM Code
id: checkoutRepo
uses: actions/checkout@v4

- name: Install NPM Packages
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/azure-ipam-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ jobs:
needs: [ init ]
steps:
- name: Azure Login
id: azureLogin
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
Expand All @@ -47,13 +48,15 @@ jobs:
enable-AzPSSession: true

- name: Checkout Azure IPAM Code
id: checkoutRepo
uses: actions/checkout@v4
with:
sparse-checkout: |
engine
ui

- name: Build Azure IPAM Containers
id: buildContainers
env:
IPAM_VERSION: ${{ needs.init.outputs.ipamVersion }}
run: |
Expand All @@ -67,6 +70,7 @@ jobs:
needs: [ init ]
steps:
- name: Azure Login
id: azureLogin
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
Expand All @@ -75,6 +79,7 @@ jobs:
enable-AzPSSession: true

- name: Checkout Azure IPAM Code
id: checkoutRepo
uses: actions/checkout@v4
with:
sparse-checkout: |
Expand All @@ -83,6 +88,7 @@ jobs:
lb

- name: Build Legacy Azure IPAM Containers
id: buildLegacyContainers
env:
IPAM_VERSION: ${{ needs.init.outputs.ipamVersion }}
run: |
Expand Down
20 changes: 18 additions & 2 deletions .github/workflows/azure-ipam-testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,21 @@ jobs:
ipamResourceGroup: ${{ steps.deployScript.outputs.ipamResourceGroup }}
steps:
- name: Install Deployment Prerequisites
id: installPrerequisites
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module Az, Microsoft.Graph -AllowClobber -Force

- name: Azure Login
id: azureLogin
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
enable-AzPSSession: true

- name: Checkout Azure IPAM Code
id: checkoutRepo
uses: actions/checkout@v4
with:
sparse-checkout: |
Expand All @@ -44,10 +47,12 @@ jobs:
ui

- name: Build Azure IPAM Container
id: buildContainer
run: |
az acr build -r $ACR_NAME -t ipam:${{ github.run_id }}-${{ github.run_attempt }} -f ./Dockerfile.deb .

- name: Update Bicep File
id: updateBicep
working-directory: deploy
shell: pwsh
run: |
Expand All @@ -62,14 +67,14 @@ jobs:
$bicepFile | Out-File -FilePath ./modules/appService.bicep -Force

- name: Deploy Azure IPAM
working-directory: deploy
id: deployScript
working-directory: deploy
shell: pwsh
run: ./deploy.ps1 -Location "westus3" -UIAppName $env:IPAM_UI_NAME -EngineAppName $env:IPAM_ENGINE_NAME

- name: "Upload Logs"
working-directory: logs
id: uploadLogs
working-directory: logs
env:
AZURE_IPAM_SUFFIX: ${{ steps.deployScript.outputs.ipamSuffix }}
STORAGE_ACCT_RG: ${{ vars.LOGGING_STORAGE_RG }}
Expand Down Expand Up @@ -97,6 +102,7 @@ jobs:
Write-Output "logFile=$archiveName" >> $Env:GITHUB_OUTPUT

- name: "Output Azure IPAM Deployment Details"
id: deploymentDetails
env:
DEPLOYMENT_DETAILS: ${{ steps.uploadLogs.outputs.deployDetails }}
shell: pwsh
Expand All @@ -117,6 +123,7 @@ jobs:
Write-Host "-------------------"

- name: "Sleep for 5 Minutes"
id: sleep
shell: pwsh
run: Start-Sleep -s 300

Expand All @@ -126,24 +133,28 @@ jobs:
needs: [ deploy ]
steps:
- name: Install Testing Prerequisites
id: installPrerequisites
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module Az, Pester -AllowClobber -Force

- name: Azure Login
id: azureLogin
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
enable-AzPSSession: true

- name: Checkout Azure IPAM Code
id: checkoutRepo
uses: actions/checkout@v4
with:
sparse-checkout: |
tests

- name: Test Azure IPAM w/ Pester
id: ipamTesting
working-directory: tests
env:
IPAM_RESOURCE_GROUP: ${{ needs.deploy.outputs.ipamResourceGroup }}
Expand Down Expand Up @@ -174,23 +185,27 @@ jobs:
needs: [ deploy, test ]
steps:
- name: Install Cleanup Prerequisites
id: installPrerequisites
shell: pwsh
run: |
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module Az -AllowClobber -Force

- name: Azure Login
id: azureLogin
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
enable-AzPSSession: true

- name : Remove Azure IPAM Resources
id: cleanupResources
shell: pwsh
run: |
Remove-AzResourceGroup -Name ${{ needs.deploy.outputs.ipamResourceGroup }} -Force

- name : Remove Azure IPAM Identities
id: cleanupIdentities
shell: pwsh
run: |
$tenantId = (Get-AzContext).Tenant.Id
Expand All @@ -207,5 +222,6 @@ jobs:
$engineApp | Remove-AzADApplication

- name: "Remove Azure IPAM Container"
id: cleanupContainer
run: |
az acr repository delete --name $ACR_NAME --repository ipam --yes
28 changes: 22 additions & 6 deletions .github/workflows/azure-ipam-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,17 @@ jobs:
steps:
- run: echo "Job triggered by a ${{ github.event_name }} event to main."

- name: "Setup NodeJS v18"
- name: "Setup NodeJS v22"
id: setupNode
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22

- name: "Setup Python v3.9"
- name: "Setup Python v3.11"
id: setupPython
uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.11'

- name: "Extract Pull Request Details"
id: getPullRequestData
Expand All @@ -48,10 +48,19 @@ jobs:
})
).data[0];

- name: "Create GitHub App Token"
id: appToken
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.IPAM_GITHUB_APP_ID }}
private-key: ${{ secrets.IPAM_GITHUB_APP_KEY }}

- name: Checkout Azure IPAM Code
id: checkoutRepo
uses: actions/checkout@v4
with:
token: ${{ secrets.PAT_TOKEN }}
token: ${{ steps.appToken.outputs.token }}
persist-credentials: false

- name: Configure Git
id: configureGit
Expand Down Expand Up @@ -116,10 +125,17 @@ jobs:
runs-on: ubuntu-latest
needs: [ version ]
steps:
- name: "Create GitHub App Token"
id: appToken
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.IPAM_GITHUB_APP_ID }}
private-key: ${{ secrets.IPAM_GITHUB_APP_KEY }}

- name: Publish Azure IPAM Release
id: publishRelease
env:
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
GITHUB_TOKEN: ${{ steps.appToken.outputs.token }}
tagName: v${{ needs.version.outputs.ipamVersion }}
run: |
gh release create "$tagName" \
Expand Down
6 changes: 4 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
"markdownlint.config": {
"default": true,
"MD024": { "siblings_only": true },
"MD028": false,
"MD033": false
}
}
},
"files.trimTrailingWhitespace": true
}
39 changes: 33 additions & 6 deletions Dockerfile.deb
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
ARG BUILD_IMAGE=node:18-slim
ARG SERVE_IMAGE=python:3.9-slim
ARG BUILD_IMAGE=node:22-slim
ARG SERVE_IMAGE=python:3.11-slim

# Set Production Build Flag
ARG PROD_BUILD=true

# Set Default Port
ARG PORT=8080

FROM $BUILD_IMAGE AS builder

# Production Build Flag
ARG PROD_BUILD

# Set Debian Frontend Flag
ARG DEBIAN_FRONTEND=noninteractive

# Disable NPM Update Notifications
ENV NPM_CONFIG_UPDATE_NOTIFIER=false

Expand All @@ -15,16 +25,27 @@ WORKDIR /tmp
COPY ./ui/. ./

# Install UI Dependencies
RUN npm ci
RUN if [ "${PROD_BUILD}" = true ]; then \
npm ci; \
else \
npm install; \
fi
RUN chmod 777 -R node_modules

# Build IPAM UI
RUN npm run build

FROM $SERVE_IMAGE

# Set Production Build Flag
ARG PROD_BUILD

# Port to Listen On
ARG PORT

# Set Debian Frontend to Non-Interactive
ARG DEBIAN_FRONTEND=noninteractive

# Set Environment Variable
ENV PORT=${PORT}

Expand All @@ -37,28 +58,34 @@ WORKDIR /tmp
# Install OpenSSH and set the password for root to "Docker!"
RUN apt-get update
RUN apt-get install -qq openssh-server -y \
&& echo "root:Docker!" | chpasswd
&& echo "root:Docker!" | chpasswd

# Enable SSH root login with Password Authentication
# RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config

# Copy 'sshd_config File' to /etc/ssh/
COPY sshd_config /etc/ssh/

# Set SSH Key Permissions
RUN ssh-keygen -A
RUN mkdir /var/run/sshd
RUN mkdir -p /var/run/sshd

# Set Working Directory
WORKDIR /ipam

# Install Engine Dependencies
COPY ./engine/requirements.txt /code/requirements.txt
COPY ./engine/requirements.lock.txt /code/requirements.lock.txt

# Upgrade PIP
RUN pip install --upgrade pip --progress-bar off

# Install Dependencies
RUN pip install --no-cache-dir -r /code/requirements.lock.txt --progress-bar off
RUN if [ "${PROD_BUILD}" = true ]; then \
pip install --no-cache-dir -r /code/requirements.lock.txt --progress-bar off; \
else \
pip install --no-cache-dir -r /code/requirements.txt --progress-bar off; \
fi

# Copy Engine Code
COPY ./engine/app ./app
Expand Down
Loading