diff --git a/scripts/drac-xml-writer/README.md b/scripts/drac-xml-writer/README.md new file mode 100644 index 0000000000..28374d987d --- /dev/null +++ b/scripts/drac-xml-writer/README.md @@ -0,0 +1,48 @@ +This tool generates XML files to be uploaded to Dell iDRAC consoles + +# Requirements + +- `pandas` for the DHCP parser +- `racadm` to talk to the Dells + +# Usage + +1. Put a list of IPs in `hostnames.csv` - 2 IPs are given as an example +2. Run `dhcp_parser.py` + 1. This will reference the IPs and lookup the hostnames that match + 2. The output is written back to hostnames.csv +3. (optional) Export a known-good XML from a DRAC host, and place it in drac-prod.xml.base + 1. **This is optional, the repo contains our current XML with the edits already done** + 2. e.g. `sudo racadm -r -u admin -p "supersecret" get -f ./drac-prod.xml.base -t xml --clone` + 3. Edit NIC.1#DNSRacName and replace the hostname with PLACEHOLDER, like this: + - `PLACEHOLDER` + 4. Edit the Users and comment out the passwords for the relevant users + - `` +4. Edit `xml_writer` to set the passwords used for the prod and stg environments (lines 47, 50, 56 & 59) +4. Run `python xml_writer.py` + +# Output + +This will generate 2 directories and 4 scripts. + +The directories are called `prod` and `stg` and contain the customised XML for +each target host in the IP list. + +The files are `prod.sh`, `stg.sh`, `prod_test.sh` and `stg_test.sh`. Run the +test scripts first - these simply use `racadm` to test the user/password works +for each host. `racadm` can be noisy, so run it like this: + +``` +bash ./stg_test.sh 2>&1 |grep -E "(10.16|ERROR)" +``` + +Obviously replace the 10.16 with the real IPs - you want to match all the +hosts but not the random text `racadm` spews out + +If any fail, check the access manually, and re-run until then work. + +Then run the main script, eg `bash stg.sh` which will apply the custom XML from +the directory to the each host in series. + + +You can run the test script another time after to check access still works diff --git a/scripts/drac-xml-writer/dhcp_parser.py b/scripts/drac-xml-writer/dhcp_parser.py new file mode 100755 index 0000000000..b1061ad764 --- /dev/null +++ b/scripts/drac-xml-writer/dhcp_parser.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +import re +import pandas as pd + +# File paths +ips_csv = './hostnames.csv' +dhcp_data = '/srv/web/infra/ansible/roles/dhcp_server/files/dhcpd.conf.noc01.iad2.fedoraproject.org' + +# Read the CSV +ips = pd.read_csv(ips_csv) + +# Read the DHCP config file into a list of lines +with open(dhcp_data, 'r', encoding='utf-8') as f: + dhcp_lines = f.readlines() + +def get_name(ip): + # Search for the line containing the IP address + for idx, line in enumerate(dhcp_lines): + if ip in line: + # Get the next line (like grep -A1) + if idx + 1 < len(dhcp_lines): + next_line = dhcp_lines[idx + 1] + # Extract the hostname using the regex + match = re.search(r'"(.*)\.mgmt', next_line) + if match: + return match.group(1) + break + return None # Return None if not found + +def get_stg(ip): + # Search for the line containing the IP address + for idx, line in enumerate(dhcp_lines): + if ip in line: + # Get the next line (like grep -A1) + if idx + 1 < len(dhcp_lines): + next_line = dhcp_lines[idx + 1] + # Extract the hostname using the regex + match = re.search(r'stg', next_line) + if match: + return True + else: + return False + break + return None # Return None if not found + +# Apply the function to each IP +ips['name'] = ips['ip'].apply(get_name) +ips['stg'] = ips['ip'].apply(get_stg) + +# Write the updated DataFrame back to CSV +ips.to_csv('./hostnames.csv', index=False) diff --git a/scripts/drac-xml-writer/drac-prod.xml.base b/scripts/drac-xml-writer/drac-prod.xml.base new file mode 100644 index 0000000000..8cbc32277c --- /dev/null +++ b/scripts/drac-xml-writer/drac-prod.xml.base @@ -0,0 +1,3980 @@ + + + + + + + + 0 + Enabled + + Enabled + PXE + AutoDetect + Disabled + 5 + AutoNeg + Disabled + Disabled + + Disabled + + + 0 + Enabled + + Enabled + NONE + AutoDetect + Disabled + 5 + AutoNeg + Disabled + Disabled + + Disabled + + + 15 + Enabled + + NONE + 4 + NONE + Enabled + Disabled + + Disabled + 8 + NoRetry + Disabled + Enabled + 64 + 64 + Enabled + Enabled + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + + + + + + + + + + + + + + 15 + Enabled + + NONE + 4 + NONE + Enabled + Disabled + + Disabled + 8 + NoRetry + Disabled + Enabled + 64 + 64 + Enabled + Enabled + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + + + + + + + + + + + + + + + + + + + + True + Clear + False + None + Local Key Management and Secure Enterprise Key Manager Capable + Yes + + + + Automatic + Enabled + Automatic + Normal + On with SMART + Enabled + Continue Boot On Error + Enabled + 30 + 30 + 30 + + + No + Non-RAID + False + + + No + Non-RAID + False + + + No + Non-RAID + False + + + No + Non-RAID + False + + + No + Non-RAID + False + + + No + Non-RAID + False + + + No + Non-RAID + False + + + No + Non-RAID + False + + + False + + + + Enabled + Administrator + 0000000000000000000000000000000000000000 + public + Enabled + root + + 511 + Administrator + Administrator + Enabled + Enabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + admin + + 511 + Administrator + Administrator + Enabled + Enabled + Disabled + None + None + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + + + 0 + No Access + No Access + Disabled + Disabled + Disabled + SHA + AES + + + + + Disabled + Disabled + + Disabled + + Disabled + + + Disabled + 0 + Enabled + 0.0.0.0 + + Disabled + + + Disabled + + + Disabled + + + Disabled + + + Enabled + 22 + 1800 + + Done + Enabled + 80 + 443 + 1800 + Enabled + Enabled + 128-Bit or higher + TLS 1.3 Only + Auto + + + Enabled + Enabled + + Disabled + Enabled + Enabled + Enabled + 6 + 1800 + Deny Access + Auto-attach + Disabled + Disabled + Disabled + Disabled + Enabled + Enabled + 60 + Enabled + ^\ + Enabled + 115200 + Administrator + 10 + 255 + Enabled + public + SNMPv1 + All + 161 + 162 + + AutoAttach + Disabled + Disabled + Disabled + Enabled + Enabled + Disabled + 192.168.1.1 + 255.255.255.0 + Enabled + 3 + 60 + 60 + Disabled + 192.168.1.1 + 255.255.255.0 + Disabled + 192.168.1.1 + 255.255.255.0 + Disabled + 192.168.1.1 + 255.255.255.0 + Disabled + 192.168.1.1 + 255.255.255.0 + Disabled + Disabled + 0 + 0 + UTC + + + + + + US + + 2048 + + Disabled + Disabled + 0 + Disabled + Weak Protection + + Disabled + Disabled + + + 120 + Extended Schema + + + + + + + Disabled + Disabled + Disabled + + + Enabled + LDAPS + Disabled + Disabled + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Disabled + Disabled + Disabled + Disabled + Disabled + 514 + + + + Disabled + 5 + Disabled + Anonymous + + 6514 + Disabled + + + Halt + Disabled + + 636 + + + + Enabled + + + + Enabled + Disabled + LDAPS + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + 10.16.163.31 + 25 + Disabled + + + + + STARTTLS + chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com + rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 + curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521 + umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512 + Auto Attach + + Read Only + + + Enabled + Done + Yes + Auto Attach + + Read Only + + + Enabled + Done + Yes + Disabled + 0.0.0.0 + usb-p2p + 169.254.1.1 + fde1:53ba:e9a0:de11::1 + Enabled + 255.255.255.0 + Enabled + Dedicated + None + Enabled + 1000 + Full + 1500 + PLACEHOLDER + Disabled + Disabled + 0 + 1 + Disabled + 5 + 30 + Disabled + Both + Enabled + Enabled + 0 + Off + + Enabled + Enabled + Enabled + Enabled + Enabled + StablePrivacy + + Disabled + 192.168.0.120 + 255.255.255.0 + 192.168.0.1 + 0.0.0.0 + 0.0.0.0 + Enabled + :: + :: + 64 + :: + :: + Enabled + + Disabled + + + Disabled + + + Disabled + + + Disabled + + + Disabled + + + Disabled + + + Disabled + + + Disabled + + Enabled + Enabled + 10.16.163.31 + 10.16.163.32 + + 16 + Disabled + Disabled + Disabled + 1 + 1 + 1 + + + + Enabled + Disabled + Circular + Disabled + 60 + Disabled + Disabled + + + + + Enabled + Enabled + Disabled + 480 + None + Disabled + Disabled + Enabled + Enabled + Disabled + Disabled + Enabled + Enabled + Enabled + Disabled + Disabled + Disabled + + 5901 + Disabled + 300 + Disabled + 2 + False + Enabled + By accessing this computer, you confirm that such access complies with your organization's security policy. + Disabled + 1 + 0 + Normal + Enabled + Enabled while server has default credential settings only + Enabled + + Enabled + CIFS + + + + + + English + 0 + + + + Enabled + Enabled + Disabled + 3 + 5 + Yes + Enabled + Enabled + + + + + + + + + + + + + + + Disabled + Enabled + + Enabled + 1 day + Enabled + Enabled + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + 40 + + Disabled + 0 + IERRCriticalTrigger + Disabled + 60 + CPUCriticalTrigger, CPUWarnTrigger, TMPCpuCriticalTrigger, TMPCpuWarnTrigger + Disabled + 60 + FANCriticalTrigger, FANWarnTrigger + Disabled + 60 + + Disabled + 60 + + Disabled + 60 + + Disabled + 60 + + Disabled + 600 + + Disabled + 60 + MEMCriticalTrigger, MEMWarnTrigger + Disabled + 60 + + Disabled + 60 + + Disabled + 3600 + NVMeCriticalTrigger, NVMeWarnTrigger + Disabled + 60 + TMPCpuCriticalTrigger, TMPCpuWarnTrigger + Disabled + 0 + + Disabled + 60 + + Disabled + 60 + + Disabled + 60 + + Disabled + 60 + VLTCriticalTrigger + Disabled + 60 + + Disabled + 3600 + PDRCriticalTrigger, PDRWarnTrigger + Disabled + 60 + + Disabled + 60 + TMPCriticalTrigger, TMPWarnTrigger + Disabled + 60 + TMPDiskCriticalTrigger, TMPDiskWarnTrigger, TMPCriticalTrigger, TMPWarnTrigger + 15 + + + + + Enabled + Mixed + + + + + Enabled + Mixed + 10800 + Disabled + + Halt + 4 + 24 + Do not use the cached key + No Caching + Disabled + Enabled + Enabled + Disabled + DefaultIDEVID + Disabled + Enabled + Enabled + Allowlist + 1000:00A5:1028:2114,1000:00A5:1028:2115,1000:00A5:1028:2117,1000:00A5:1028:213A,1000:00A5:1028:213B,1000:00A5:1028:213C,1000:00A5:1028:213E,1000:00A5:1028:213F,1000:00A5:1028:2140,1000:00A5:1028:2141,1000:00A5:1028:2142,1000:00A5:1028:2209,1000:00A5:1028:220A,10DF:F400:10DF:F410,10DF:F400:10DF:F411,10DF:F400:10DF:F422 + + + + + Enabled + Mixed + + + + + Enabled + Mixed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Service Tag + + Enabled + Watts + C + 0 + unhide + SEL + Full-Access + No-License-Msg + DIsabled + 30 + 30 + 10 + 10 + Default Thermal Profile Settings + 70 + Off + 255 + Disabled + Disabled + NO LIMIT + 55 + Default + 0 + 0 + + + + Disabled + + + + Disabled + + + + Disabled + + + + Disabled + + + + Disabled + + + + Disabled + + + + Disabled + + + + Disabled + 0 + 0 + 0 + + + + No + + + 0 + Months + 0 + 0 + + + + No + 0 + 0 + + 0 + + + + + + + 0 + + 0 + + Owned + + + No + + + No + Network + + + + + + 0 + Days + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Disabled + + A/B Grid Redundant + Disabled + PSU1 + 1000000 + 1000000 + 1000000 + Disabled + Disabled + Disabled + SelfPowered + + + + + + EIA_310 + + + 0 + Automatic + 0 + Automatic + 0 + Automatic + None + Not Applicable + + 0 + Disabled + Disabled + 10 + Disabled + Disabled + 10 + 5 + 120 + + + + Enabled + Apply Always + Match firmware of replaced part + + Off + + + False + Disabled + + + 80 + + + HTTP + On + + + + + + + + + + + + + + + + + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + PowerOff + + Disabled + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + PowerOff + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + Disabled + + + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Disabled + Disabled + Disabled + No Action + + + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + No Action + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + Disabled + Disabled + + + + Disabled + Disabled + + + + NotConfigured + Enabled + Enabled + + Disabled + Enabled + Enabled + Enabled + Enabled + Enabled + Linear + 1 + Disabled + Disabled + 800 + Maximum + Enabled + All + All + + + AhciMode + Enabled + Disabled + + DellQualifiedDrives + Uefi + Enabled + + Disabled + Disabled + None + RAID.SL.3-9,RAID.SL.3-8,RAID.SL.3-6,RAID.SL.3-5,RAID.SL.3-7,RAID.SL.3-2,RAID.SL.3-3,RAID.SL.3-4,NIC.PxeDevice.1-1 + + + + Enabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + Enabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + Disabled + + Disabled + Disabled + + 4C4C4544-0047-5A10-8030-C3C04F583534 + + NIC.Integrated.1-1-1 + IPv4 + Disabled + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Disabled + Disabled + Con1Con2 + Enabled + NIC.Embedded.1-1-1 + IPv4 + Disabled + 1 + 0 + 3 + 10000 + Disabled + + + + Disabled + + + 3260 + 0 + + None + OneWay + + + + + + + NIC.Embedded.1-1-1 + IPv4 + Disabled + 1 + 0 + 3 + 10000 + Disabled + + + + Disabled + + + 3260 + 0 + + None + OneWay + + + + + + + Disabled + Disabled + Disabled + Disabled + NIC.Embedded.1-1-1 + TCP + IPv4 + Disabled + 1 + 0 + 3 + 10000 + Disabled + + + + Disabled + + + 4420 + + 0 + Disabled + None + + NIC.Embedded.1-1-1 + TCP + IPv4 + Disabled + 1 + 0 + 3 + 10000 + Disabled + + + + Disabled + + + 4420 + + 0 + Disabled + None + + NIC.Embedded.1-1-1 + TCP + IPv4 + Disabled + 1 + 0 + 3 + 10000 + Disabled + + + + Disabled + + + 4420 + + 0 + Disabled + None + + NIC.Embedded.1-1-1 + TCP + IPv4 + Disabled + 1 + 0 + 3 + 10000 + Disabled + + + + Disabled + + + 4420 + + 0 + Disabled + None + + AllOn + On + Enabled + Enabled + Enabled + Enabled + Disabled + Disabled + Disabled + 8TB + PlatformDefault + + + + Enabled + Enabled + Enabled + Off + Com1 + 115200 + Vt100Vt220 + Enabled + PerfPerWattOptimizedOs + + + + + + + + + + + + + + + + + + + + Disabled + + + + + + Unlocked + On + Enabled + No + + Enabled + Last + Immediate + 120 + Standard + Disabled + Disabled + Standard + DeployedMode + Disabled + Disabled + SHA256 + None + + + Disabled + Minimum + Enabled + Enabled + Disabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + Enabled + LOCAL + Disabled + + On + Enabled + Disabled + Enabled + Disabled + RAID.SL.3-9, RAID.SL.3-8, RAID.SL.3-6, RAID.SL.3-5, RAID.SL.3-7, RAID.SL.3-2, RAID.SL.3-3, RAID.SL.3-4, NIC.PxeDevice.1-1 + + + + + + + diff --git a/scripts/drac-xml-writer/hostnames.csv b/scripts/drac-xml-writer/hostnames.csv new file mode 100644 index 0000000000..a5c8b1e4cb --- /dev/null +++ b/scripts/drac-xml-writer/hostnames.csv @@ -0,0 +1,3 @@ +ip,name,stg +10.16.160.14 +10.16.160.33 diff --git a/scripts/drac-xml-writer/xml_writer.py b/scripts/drac-xml-writer/xml_writer.py new file mode 100755 index 0000000000..6528a796b0 --- /dev/null +++ b/scripts/drac-xml-writer/xml_writer.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python + +import os +import csv + +# Read the CSV file +with open('./hostnames.csv', newline='') as csvfile: + reader = csv.DictReader(csvfile) + servers = list(reader) + +stg_script = "stg.sh" +if os.path.exists(stg_script): + os.remove(stg_script) + +stg_test_script = "stg_test.sh" +if os.path.exists(stg_test_script): + os.remove(stg_test_script) + +prod_script = "prod.sh" +if os.path.exists(prod_script): + os.remove(prod_script) + +prod_test_script = "prod_test.sh" +if os.path.exists(prod_test_script): + os.remove(prod_test_script) + +user = 'root' + +# Read the template XML as a string +with open('./drac-prod.xml.base', 'r', encoding='utf-8') as f: + template = f.read() + +for server in servers: + ip = server['ip'] + name = server['name'] + stg = server['stg'] + + # Replace the placeholder with the actual name + xml_content = template.replace( + 'PLACEHOLDER', + f'{name}' + ) + # Write to a new XML file named after the IP + if stg == "True": + filename = f'stg/{ip}.xml' + with open(stg_script, 'a', encoding='utf-8') as f: + f.write(f"sudo racadm -r {ip} -u {user} -p 'stg-password' set -f ./stg/{ip}.xml -t xml -s Off\n") + with open(stg_test_script, 'a', encoding='utf-8') as f: + f.write(f"echo {ip}\n") + f.write(f"sudo racadm -r {ip} -u {user} -p 'stg-password' getsvctag\n") + with open(filename, 'w', encoding='utf-8') as f: + f.write(xml_content) + else: + filename = f'prod/{ip}.xml' + with open(prod_script, 'a', encoding='utf-8') as f: + f.write(f"sudo racadm -r {ip} -u {user} -p 'prod-password' set -f ./prod/{ip}.xml -t xml -s Off\n") + with open(prod_test_script, 'a', encoding='utf-8') as f: + f.write(f"echo {ip}\n") + f.write(f"sudo racadm -r {ip} -u {user} -p 'prod-password' getsvctag\n") + with open(filename, 'w', encoding='utf-8') as f: + f.write(xml_content)