nutanixdev / zerotouch-framework

MIT License
10 stars 4 forks source link

pe networks defined in cluster-config.yml are not all processed #17

Open nx-sbourdeaud opened 3 months ago

nx-sbourdeaud commented 3 months ago

Description

When defining multiple networks in the pe_networks section of the cluster-config.yml file, only the last network gets added. In addition, if the config-cluster workflow is ran multiple times, the same network gets added over and over again. Attaching the config and log files.

What Platform / OS are you running?

Mac OS

What version are you running?

latest

Anything in the logs or a references that might be useful?

see attached config and log files.

Additional information

No response

nx-sbourdeaud commented 3 months ago

2024-08-26-07_59_41_zero_touch.log 2024-08-26-07_56_09_zero_touch.log

nx-sbourdeaud commented 3 months ago
pe_creds: &pe_creds
  # below credential is also used to update default password for "admin"
  new_pe_admin_credential: admin_cred # credential reference from "vaults" in global.yml file
  # The below credentials will be used for making all API calls.
  pe_credential: admin_cred

# Re-usable configurations, defined as anchors
cluster_eula: &eula
  eula:
    username: Nutanix
    company_name: Nutanix
    job_title: Consulting

pulse: &pulse
  enable_pulse: false

ad_config: &ad_config
  directory_services: &directory_services
    directory_type: ACTIVE_DIRECTORY # only ACTIVE_DIRECTORY is supported, port 389 will be used for LDAP
    ad_name: emeagso
    ad_domain: emeagso.lab
    ad_directory_url: ldap://emeagso.lab:389   # e.g., ldap://10.1.4.111:389
    service_account_credential: service_account_credential # credential reference from "vaults" in global.yml file
    role_mappings:
      - role_type: ROLE_USER_ADMIN # one of 'ROLE_CLUSTER_ADMIN', 'ROLE_USER_ADMIN', 'ROLE_CLUSTER_VIEWER', 'ROLE_BACKUP_ADMIN'
        entity_type: OU # one of GROUP, OU, USER
        values:
          - EMEAGSO

pe_container: &pe_container
  name: default
  # All these below parameters are optional
  #storage_pool_uuid: uuid # Which storage pool to use, comment it to auto pick storage pool
  #reserved_in_gb: 1 # Represents the minimum exclusively reserved storage capacity available for the storage container
  #advertisedCapacity_in_gb: 1 # Represents the maximum storage capacity available for the storage container to use
  replication_factor: 2 # Number of data copies to maintain
  compression_enabled: true # Only Inline compression is supported yet
  compression_delay_in_secs: 0
  #erasure_code: "OFF" # OFF/ ON # Erasure code requires a minimum of 4 nodes when using RF2 and a minimum of 6 nodes when using RF3
  #on_disk_dedup: "OFF" # OFF/ ON # Deduplication is not supported with fewer than 3 nodes
  #nfsWhitelistAddress: [ ] # Access list for storage container

pe_networks: &pe_networks
  name: "vlan-97"
  subnet_type: VLAN # only VLAN is supported yet
  vlan_id: 0
  # virtual_switch: "vs0" # Optional. If not specified, the first virtual switch will be used
  #ip_config:
  #  network_ip: 10.68.97.0
  #  network_prefix: 24
  #  default_gateway_ip: 10.68.97.1
    # comment pool_list section if there are no pools for the subnet
  #  pool_list:
  #    - range: "valid-ip-start valid-ip-end" # Eg "10.10.10.31 10.10.10.40"
    #  comment dhcp_options section if you don't want dhcp. Over-riding dhcp is not supported yet
  #  dhcp_options:
  #    domain_name_server_list: [ 10.10.10.10 ]
  #    domain_search_list: [ eng.company.com ]
  #    domain_name: eng.company.com
  name: "vlan-203"
  subnet_type: VLAN # only VLAN is supported yet
  vlan_id: 203
  # virtual_switch: "vs0" # Optional. If not specified, the first virtual switch will be used
  #ip_config:
  #  network_ip: 10.68.97.0
  #  network_prefix: 24
  #  default_gateway_ip: 10.68.97.1
    # comment pool_list section if there are no pools for the subnet
  #  pool_list:
  #    - range: "valid-ip-start valid-ip-end" # Eg "10.10.10.31 10.10.10.40"
    #  comment dhcp_options section if you don't want dhcp. Over-riding dhcp is not supported yet
  #  dhcp_options:
  #    domain_name_server_list: [ 10.10.10.10 ]
  #    domain_search_list: [ eng.company.com ]
  #    domain_name: eng.company.com
  name: "vlan-204"
  subnet_type: VLAN # only VLAN is supported yet
  vlan_id: 204
  # virtual_switch: "vs0" # Optional. If not specified, the first virtual switch will be used
  #ip_config:
  #  network_ip: 10.68.97.0
  #  network_prefix: 24
  #  default_gateway_ip: 10.68.97.1
    # comment pool_list section if there are no pools for the subnet
  #  pool_list:
  #    - range: "valid-ip-start valid-ip-end" # Eg "10.10.10.31 10.10.10.40"
    #  comment dhcp_options section if you don't want dhcp. Over-riding dhcp is not supported yet
  #  dhcp_options:
  #    domain_name_server_list: [ 10.10.10.10 ]
  #    domain_search_list: [ eng.company.com ]
  #    domain_name: eng.company.com

name_servers: &name_servers
  name_servers_list:
    - 10.68.97.4
    - 10.68.97.5

ntp_servers: &ntp_servers
  ntp_servers_list:
    - ntp.dyn.nutanix.com

# Not supported for single node cluster
ha_reservation: &ha_reservation
  enable_failover: true
  num_host_failure_to_tolerate: 1

# Not supported for 1 and 2 node cluster
rebuild_capacity_reservation: &rebuild_capacity_reservation
  enable_rebuild_reservation: true

# configure the below clusters
clusters:
  10.68.97.103:
    name: gawain # Optional if name is already provided above
    # Use global pe creds
    <<: *pe_creds
    # Use global eula config
    <<: *eula
    # Use global pulse config
    <<: *pulse
    # Use global ad config
    <<: *ad_config
    dsip: 10.68.97.104
    networks:
      # Use global network config
      - <<: *pe_networks
    containers:
      # Use global storage container config
      - <<: *pe_container
    # NTP, DNS servers
    <<: *ntp_servers
    <<: *name_servers
    # Use global HA Reservation config
    ha_reservation:
      <<: *ha_reservation
    # Use global Rebuild capacity Reservation config
    <<: *rebuild_capacity_reservation

  10.68.97.107:
    name: galahad # Optional if name is already provided above
    # Use global pe creds
    <<: *pe_creds
    # Over-ride global eula config
    <<: *eula
    # Use global pulse config
    <<: *pulse
    # Use global ad config
    <<: *ad_config
    dsip: 10.68.97.108
    networks:
      # Use global network config
      - <<: *pe_networks
    containers:
      # Use global storage container config
      - <<: *pe_container
    # NTP, DNS servers
    <<: *ntp_servers
    <<: *name_servers
    # Use global HA Reservation config
    ha_reservation:
      <<: *ha_reservation
    # Use global Rebuild capacity Reservation config
    <<: *rebuild_capacity_reservation
harishkirans commented 2 months ago

The issue stemmed from formatting errors in the cluster-config.yml files provided. Based on feedback, example files have been updated to accurately reflect the correct format. These changes will be implemented in the upcoming release. Also, the duplication issue arises because Prism allows the creation of multiple subnets with the same VLAN ID and name.