no dejemos morir esta joya
https://x.com/EroNekoUwU/status/1565441302015131650?t=At4cU3tmoQDC-p_HqAo35w&s=19
https://x.com/EroNekoUwU/status/1565441302015131650?t=At4cU3tmoQDC-p_HqAo35w&s=19
💻#BigDataPipeline en la Nube 🌐
Cada plataforma Cloud (#Azure, #AWS, #GCP) ofrece un conjunto completo de servicios que cubren todo el ciclo de vida de los datos:
1️⃣ Ingestion: Recopilación de datos de varias fuentes
2️⃣ Data Lake: Almacenamiento de datos brutos
3️⃣ Computation: Procesamiento y análisis de datos
4️⃣ Data Warehouse: Almacenamiento de datos estructurados
5️⃣ Presentation: Visualización y generación de informes
AWS utiliza servicios como
#Kinesis para la transmisión de datos,
#S3 para el almacenamiento,
#EMR para el procesamiento,
#RedShift para el almacenamiento y
#QuickSight para la visualización.
El pipeline de Azure incluye
#EventHubs para la ingesta,
#DataLakeStore para el almacenamiento,
#Databricks para el procesamiento,
#CosmosDB para el almacenamiento
#PowerBI para la presentación.
GCP ofrece
#PubSub para la transmisión de datos,
#CloudStorage para data Lake,
#DataProc
#DataFlow para el procesamiento,
#BigQuery para el almacenamiento
#DataStudio para la visualización.
Cada plataforma Cloud (#Azure, #AWS, #GCP) ofrece un conjunto completo de servicios que cubren todo el ciclo de vida de los datos:
1️⃣ Ingestion: Recopilación de datos de varias fuentes
2️⃣ Data Lake: Almacenamiento de datos brutos
3️⃣ Computation: Procesamiento y análisis de datos
4️⃣ Data Warehouse: Almacenamiento de datos estructurados
5️⃣ Presentation: Visualización y generación de informes
AWS utiliza servicios como
#Kinesis para la transmisión de datos,
#S3 para el almacenamiento,
#EMR para el procesamiento,
#RedShift para el almacenamiento y
#QuickSight para la visualización.
El pipeline de Azure incluye
#EventHubs para la ingesta,
#DataLakeStore para el almacenamiento,
#Databricks para el procesamiento,
#CosmosDB para el almacenamiento
#PowerBI para la presentación.
GCP ofrece
#PubSub para la transmisión de datos,
#CloudStorage para data Lake,
#DataProc
#DataFlow para el procesamiento,
#BigQuery para el almacenamiento
#DataStudio para la visualización.
En este artículo, aprenderá sobre las implementaciones de Argo y cómo implementar estrategias de desplieges en modo blue-green.
https://medium.chuklee.com/argo-rollouts-blue-green-deployment-75dbeff4ea19
https://medium.chuklee.com/argo-rollouts-blue-green-deployment-75dbeff4ea19
k8sgpt.ai un Operador de Kubernetes que usa IA para arreglar implementaciones rotas de forma dinamica
https://youtu.be/KduyeJnehHE?t=41 La comunidad cubana de IT reunida
YouTube
Video resumen DevFest Aranjuez 24
Los DevFest son eventos comunitarios a gran escala, impulsados por la pasión y el talento de desarrolladores locales.
Se celebran anualmente en todo el mundo y cada uno tiene un enfoque único, pero todos comparten la misma misión: reunir a los desarrolladores…
Se celebran anualmente en todo el mundo y cada uno tiene un enfoque único, pero todos comparten la misma misión: reunir a los desarrolladores…
Please open Telegram to view this post
VIEW IN TELEGRAM
script minimalista para checkear nginx
#!/bin/bash
# Definir la API Key de PagerDuty
api_key="XSERIALX"
# Definir el puerto a verificar
port=443
# Función para comprobar si el puerto está activo
check_port() {
netstat -tuln | grep -q ":$port "
}
# Verificar si el puerto 443 está activo
if check_port; then
echo "El puerto $port está activo. Nginx está funcionando correctamente."
exit 0
else
echo "El puerto $port no está activo. Intentando reiniciar Nginx..."
# Reiniciar Nginx
systemctl restart nginx
sleep 10 # Esperar unos segundos para que el servicio arranque
# Verificar nuevamente si el puerto 443 está activo
if check_port; then
echo "El puerto $port está activo después del reinicio. Nginx se ha reiniciado correctamente."
exit 0
else
echo "El puerto $port sigue sin estar activo después del reinicio. Enviando alerta a PagerDuty..."
# Enviar evento a PagerDuty
curl -X POST "https://events.pagerduty.com/v2/enqueue" \
-H "Content-Type: application/json" \
-d '{
"routing_key": "'"${api_key}"'",
"event_action": "trigger",
"payload": {
"summary": "El puerto 443 no está activo y Nginx no responde",
"severity": "critical",
"source": "servidor-web",
"component": "nginx",
"group": "web",
"class": "webserver",
"custom_details": {
"description": "El servicio Nginx no está funcionando y el puerto 443 sigue inactivo después del reinicio. Se requiere intervención manual."
}
}
}'
exit 1
fi
fi
#!/bin/bash
# Definir la API Key de PagerDuty
api_key="XSERIALX"
# Definir el puerto a verificar
port=443
# Función para comprobar si el puerto está activo
check_port() {
netstat -tuln | grep -q ":$port "
}
# Verificar si el puerto 443 está activo
if check_port; then
echo "El puerto $port está activo. Nginx está funcionando correctamente."
exit 0
else
echo "El puerto $port no está activo. Intentando reiniciar Nginx..."
# Reiniciar Nginx
systemctl restart nginx
sleep 10 # Esperar unos segundos para que el servicio arranque
# Verificar nuevamente si el puerto 443 está activo
if check_port; then
echo "El puerto $port está activo después del reinicio. Nginx se ha reiniciado correctamente."
exit 0
else
echo "El puerto $port sigue sin estar activo después del reinicio. Enviando alerta a PagerDuty..."
# Enviar evento a PagerDuty
curl -X POST "https://events.pagerduty.com/v2/enqueue" \
-H "Content-Type: application/json" \
-d '{
"routing_key": "'"${api_key}"'",
"event_action": "trigger",
"payload": {
"summary": "El puerto 443 no está activo y Nginx no responde",
"severity": "critical",
"source": "servidor-web",
"component": "nginx",
"group": "web",
"class": "webserver",
"custom_details": {
"description": "El servicio Nginx no está funcionando y el puerto 443 sigue inactivo después del reinicio. Se requiere intervención manual."
}
}
}'
exit 1
fi
fi
Blog de ArmandoF
https://www.linkedin.com/posts/franciscoarencibia_devops-devsecops-aws-activity-7294062779500535810-FvHC?utm_source=share&utm_medium=member_ios
Desengrasado dar charlas de nuevo, enseñando uno de los tantos caminos de cómo superarse y obtener un mejor empleo adentrándose en el mundo Devops sobre AWS
Exportar registros route53 -> bind9
aws route53 list-resource-record-sets --hosted-zone-id ZONE_ID > records.json
despues usas este script de python para parsearlo
import json
def route53_to_bind9(json_file, output_file):
with open(json_file, 'r') as f:
data = json.load(f)
records = data.get("ResourceRecordSets", [])
bind_lines = []
for record in records:
name = record["Name"].rstrip('.') # Elimina el punto final
record_type = record["Type"]
ttl = record.get("TTL", 300)
if "ResourceRecords" in record:
values = [r["Value"] for r in record["ResourceRecords"]]
for value in values:
bind_lines.append(f"{name} {ttl} IN {record_type} {value}")
elif "AliasTarget" in record:
alias = record["AliasTarget"]["DNSName"].rstrip('.')
bind_lines.append(f"{name} {ttl} IN CNAME {alias}")
with open(output_file, 'w') as f:
f.write('\n'.join(bind_lines) + '\n')
print(f"Archivo BIND generado: {output_file}")
# Uso
test_json = "records.json" # Archivo exportado de AWS
output_bind = "zonefile_bind9.txt" # Archivo en formato BIND
route53_to_bind9(test_json, output_bind)
aws route53 list-resource-record-sets --hosted-zone-id ZONE_ID > records.json
despues usas este script de python para parsearlo
import json
def route53_to_bind9(json_file, output_file):
with open(json_file, 'r') as f:
data = json.load(f)
records = data.get("ResourceRecordSets", [])
bind_lines = []
for record in records:
name = record["Name"].rstrip('.') # Elimina el punto final
record_type = record["Type"]
ttl = record.get("TTL", 300)
if "ResourceRecords" in record:
values = [r["Value"] for r in record["ResourceRecords"]]
for value in values:
bind_lines.append(f"{name} {ttl} IN {record_type} {value}")
elif "AliasTarget" in record:
alias = record["AliasTarget"]["DNSName"].rstrip('.')
bind_lines.append(f"{name} {ttl} IN CNAME {alias}")
with open(output_file, 'w') as f:
f.write('\n'.join(bind_lines) + '\n')
print(f"Archivo BIND generado: {output_file}")
# Uso
test_json = "records.json" # Archivo exportado de AWS
output_bind = "zonefile_bind9.txt" # Archivo en formato BIND
route53_to_bind9(test_json, output_bind)