feat: add scripts for k3s cluster upgrade and health checks via AWX and SSH
This commit is contained in:
42
scripts/register_upgrade_jt.py
Normal file
42
scripts/register_upgrade_jt.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import paramiko
|
||||
|
||||
ssh = paramiko.SSHClient()
|
||||
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
ssh.connect('140.44.4.11', username='root', key_filename=r'C:\Users\Snarf\.ssh\id_ed25519_snarfnet', timeout=10)
|
||||
|
||||
py_code = """
|
||||
from awx.main.models import Project, Inventory, Credential, JobTemplate
|
||||
|
||||
# 1. Update Project
|
||||
p = Project.objects.get(name='Snarfnet Infrastructure Playbooks')
|
||||
update = p.update()
|
||||
print(f"Triggered Project update [{update.id}]")
|
||||
|
||||
inv = Inventory.objects.get(name='Snarfnet Master Inventory')
|
||||
cred_root = Credential.objects.get(name='Snarfnet Master SSH Key (root)')
|
||||
|
||||
# 2. Register Job Template
|
||||
jt, created = JobTemplate.objects.get_or_create(
|
||||
name='Aerodrome K3s Control Plane Upgrade',
|
||||
defaults={
|
||||
'project': p,
|
||||
'inventory': inv,
|
||||
'playbook': 'ansible/playbooks/upgrade_k3s_aerodrome.yml',
|
||||
'ask_variables_on_launch': True,
|
||||
'description': 'Sequential minor release upgrade of Aerodrome K3s control plane with etcd quorum check'
|
||||
}
|
||||
)
|
||||
if not created:
|
||||
jt.playbook = 'ansible/playbooks/upgrade_k3s_aerodrome.yml'
|
||||
jt.ask_variables_on_launch = True
|
||||
jt.save()
|
||||
|
||||
jt.credentials.add(cred_root)
|
||||
print(f"Job Template '{jt.name}' (id={jt.id}, created={created}) registered.")
|
||||
"""
|
||||
|
||||
cmd = f"kubectl exec -i -n awx -c awx-task deployment/awx-task -- awx-manage shell_plus --quiet << 'EOF'\n{py_code}\nEOF"
|
||||
stdin, stdout, stderr = ssh.exec_command(cmd)
|
||||
print(stdout.read().decode())
|
||||
ssh.close()
|
||||
|
||||
Reference in New Issue
Block a user