Skip to content

feat: enhance network interface configuration with multiple secondary…#157

Merged
YoungJinJung merged 3 commits into
DevopsArtFactory:mainfrom
Chaaany:feature/enhance-multiple-secondary-enis
May 2, 2025
Merged

feat: enhance network interface configuration with multiple secondary…#157
YoungJinJung merged 3 commits into
DevopsArtFactory:mainfrom
Chaaany:feature/enhance-multiple-secondary-enis

Conversation

@Chaaany
Copy link
Copy Markdown
Contributor

@Chaaany Chaaany commented Apr 28, 2025

… ENIs support

Fixes: #156
Related: #156
Merge before/after: None
feat: enhance network interface configuration with multiple secondary ENIs support

Description
This PR implements comprehensive support for multiple Secondary ENIs with the following changes:

  1. Code Changes:
  • Modify CreateNewLaunchTemplate to handle multiple secondary ENIs
  • Update RegionConfig struct to use slice for secondary ENIs
  • Add validation logic for ENI configurations
  • Extract security group validation into a separate public method ValidateSecurityGroupsConfig
  • Ensure mutual exclusivity between ENI and non-ENI security group configurations
  1. Testing:
  • Add TestValidateSecurityGroupsConfig for security group validation
  • Test cases cover:
    • Valid security groups without ENI
    • Invalid security group format
    • Empty security groups without ENI
    • Valid ENI with security groups
    • ENI without security groups
    • Both security groups and ENI specified
    • Secondary ENI without security groups
  • Verify backward compatibility
  1. Documentation:
  • Add Network Interface Configuration section to README.MD
  • Document three ways to configure security groups:
    • Using Launch Template Security Groups (Default)
    • Using Primary ENI Security Groups (Optional)
    • Using Multiple ENIs with Security Groups (Optional)
  • Clarify mutual exclusivity between ENI and non-ENI security group configurations
  • Document all network interface parameters and their usage
  • Add examples for various configuration scenarios

The changes follow AWS best practices for ENI configuration and ensure that users can safely configure multiple network interfaces for their instances. The implementation maintains backward compatibility while adding new functionality.

Security Group Configuration Examples

  1. Using Launch Template Security Groups (Default):
security_groups:
  - sg-12345678
  1. Using Primary ENI Security Groups (Optional):
primary_eni:
  device_index: 0
  subnet_id: subnet-12345678
  security_groups:
    - sg-12345678
  1. Using Multiple ENIs with Security Groups (Optional):
primary_eni:
  device_index: 0
  subnet_id: subnet-12345678
  security_groups:
    - sg-12345678

secondary_enis:
  - device_index: 1
    subnet_id: subnet-87654321
    security_groups:
      - sg-87654321
    private_ip_address: 10.0.1.100
  - device_index: 2
    subnet_id: subnet-87654321
    security_groups:
      - sg-87654321
    private_ip_address: 10.0.1.101

Follow-up Work

  • Consider adding support for ENI tagging
  • Add validation for subnet CIDR range compatibility
  • Consider adding support for ENI attachment order configuration
  • Add more comprehensive examples for complex network setups

@Chaaany Chaaany force-pushed the feature/enhance-multiple-secondary-enis branch 3 times, most recently from fa240da to 6e7ab5a Compare April 28, 2025 05:00
Copy link
Copy Markdown
Contributor

@YoungJinJung YoungJinJung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Chaaany Chaaany force-pushed the feature/enhance-multiple-secondary-enis branch 2 times, most recently from b6e0188 to 36f47e0 Compare May 1, 2025 23:21
@Chaaany Chaaany force-pushed the feature/enhance-multiple-secondary-enis branch 3 times, most recently from b5986a6 to 3f373a8 Compare May 2, 2025 03:17
dependabot Bot added 2 commits May 2, 2025 12:17
Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.0.0-20210423082822-04245dca01da to 0.1.0.
- [Commits](https://github.com/golang/sys/commits/v0.1.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sys
  dependency-version: 0.1.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.0.0-20210614182718-04defd469f4e to 0.38.0.
- [Commits](https://github.com/golang/net/commits/v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
@Chaaany Chaaany force-pushed the feature/enhance-multiple-secondary-enis branch from 3f373a8 to c3b355a Compare May 2, 2025 03:18
@Chaaany Chaaany force-pushed the feature/enhance-multiple-secondary-enis branch from c3b355a to 68ad5d2 Compare May 2, 2025 03:20
@YoungJinJung YoungJinJung merged commit f25cfdf into DevopsArtFactory:main May 2, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enhance Network Interface Configuration with Multiple Secondary ENIs Support

3 participants