CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग
क्लाउड प्रदाता के CLI को idempotent ढंग से चलाएँ और संसाधन बनाने तथा हटाने के लिए JSON प्रतिक्रियाएँ पार्स करें।
CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
इडेम्पोटेंट क्लाउड स्क्रिप्टिंग का महत्व
सी2 स्तर पर क्लाउड स्क्रिप्टिंग का अर्थ बटन क्लिक करना नहीं है — इसका अर्थ ऐसा कोड लिखना है जिसे कई बार सुरक्षित रूप से चलाया जा सके, बिना डुप्लिकेट संसाधन बनाए या दूसरी बार चलाने पर विफल हुए।
एक इडेम्पोटेंट स्क्रिप्ट संसाधन बनाने से पहले जाँचती है कि वह पहले से मौजूद है या नहीं। यह विश्वसनीय इन्फ्रास्ट्रक्चर स्वचालन की आधारशिला है।
- क्लाउड CLI (AWS, GCP, एज़्योर) जेएसओएन लौटाते हैं — उस आउटपुट का विश्लेषण करना आवश्यक है।
jqशेल स्क्रिप्ट से प्राप्त जेएसओएन को काटने, फ़िल्टर करने और रूपांतरित करने का मानक यूनिक्स उपकरण है।- CLI + जेक्यू + शर्तीय तर्क को मिलाकर आप मजबूत और बार-बार चलाए जा सकने वाले प्रावधान स्क्रिप्ट लिख सकते हैं।
पूरे पाठ में आप AWS CLI को संदर्भ मानकर S3 बकेट, ईसी2 इंस्टेंस और IAM भूमिकाओं का प्रावधान करेंगे; ये पैटर्न सीधे gcloud और az पर भी लागू होते हैं।
क्लाउड CLI स्थापित करना और सत्यापित करना
स्क्रिप्ट लिखने से पहले सुनिश्चित करें कि सही उपकरण मौजूद हैं। पर्यावरणों के बीच असंगति से बचने के लिए CI में हमेशा संस्करण निश्चित करें।
नीचे दिया गया अंश AWS CLI v2, जेक्यू और GCP SDK की जाँच करता है और केवल अनुपलब्ध चीज़ों को स्थापित करता है — नई वीएम या कंटेनर के लिए बूटस्ट्रैप स्क्रिप्ट में यह पैटर्न उपयोगी है।
#!/usr/bin/env bash
set -euo pipefail
check_or_install() {
local cmd="$1"
local install_cmd="$2"
if ! command -v "$cmd" &>/dev/null; then
echo "[INFO] $cmd not found — installing..."
eval "$install_cmd"
else
echo "[OK] $cmd $("$cmd" --version 2>&1 | head -1)"
fi
}
# AWS CLI v2
check_or_install aws \
'curl -fsSL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o /tmp/awscliv2.zip && unzip -q /tmp/awscliv2.zip -d /tmp && sudo /tmp/aws/install'
# jq
check_or_install jq \
'sudo apt-get install -y jq 2>/dev/null || sudo yum install -y jq'
# gcloud (optional)
check_or_install gcloud \
'echo "Install gcloud SDK manually from https://cloud.google.com/sdk"'
echo "All prerequisites satisfied."जेक्यू से मौजूदा संसाधनों की जाँच
किसी भी इडेम्पोटेंट स्क्रिप्ट का पहला चरण पढ़ना है — एपीआई से पूछें कि संसाधन पहले से मौजूद है या नहीं, फिर उसी के अनुसार अगली शाखा चुनें।
AWS CLI हमेशा जेएसओएन लौटाता है। jq आपको ठीक वही फ़ील्ड निकालने देता है जिसकी आवश्यकता है:
jq -r '.Buckets[].Name'— कच्चे स्ट्रिंग आउटपुट के रूप में, प्रति पंक्ति एक बकेट नाम।jq -e— यदि अभिव्यक्तिnullयाfalseउत्पन्न करती है, तो कोड 1 के साथ समाप्त होता है; इसलिए यहifगार्ड के लिए आदर्श है।jq '.[] | select(.Name == env.BUCKET)'—envके माध्यम से शेल वेरिएबल का उपयोग करके फ़िल्टर करें।
नीचे दिया गया अंश सभी S3 बकेट की सूची बनाता है और जाँचता है कि लक्ष्य बकेट पहले से मौजूद है या नहीं।
#!/usr/bin/env bash
set -euo pipefail
BUCKET="my-devops-artifacts-$(date +%Y%m)"
echo "Fetching existing S3 buckets..."
EXISTING=$(aws s3api list-buckets --output json)
# Extract names as newline-separated list
echo "$EXISTING" | jq -r '.Buckets[].Name'
# Check if target bucket exists
if echo "$EXISTING" | jq -e --arg b "$BUCKET" '.Buckets[] | select(.Name == $b)' > /dev/null 2>&1; then
echo "[EXISTS] Bucket $BUCKET already present — skipping creation."
else
echo "[MISSING] Bucket $BUCKET not found — will create."
fiइडेम्पोटेंट S3 बकेट बनाना
अस्तित्व-जाँच तैयार होने के बाद, निर्माण को एक गार्ड के भीतर रखें। अच्छी तरह संरचित क्लाउड फ़ंक्शन इस पैटर्न का पालन करता है:
- एपीआई से वर्तमान स्थिति पढ़ें।
- वांछित स्थिति की वास्तविक स्थिति से तुलना करें।
- केवल अंतर के आधार पर कार्रवाई करें।
--create-bucket-configuration फ़्लैग पर ध्यान दें — us-east-1 को छोड़कर सभी क्षेत्रों के लिए यह आवश्यक है। स्क्रिप्ट में क्षेत्र को स्पष्ट रूप से लिखने से तब होने वाली मूक विफलताओं से बचा जा सकता है, जब AWS_DEFAULT_REGION निर्धारित न हो।
#!/usr/bin/env bash
set -euo pipefail
REGION="eu-west-1"
BUCKET="my-devops-artifacts-$(date +%Y%m)"
ensure_bucket() {
local bucket="$1"
local region="$2"
local existing
existing=$(aws s3api list-buckets --query 'Buckets[].Name' --output json)
if echo "$existing" | jq -e --arg b "$bucket" 'index($b) != null' > /dev/null 2>&1; then
echo "[SKIP] Bucket $bucket already exists."
return 0
fi
echo "[CREATE] Creating bucket $bucket in $region..."
aws s3api create-bucket \
--bucket "$bucket" \
--region "$region" \
--create-bucket-configuration LocationConstraint="$region"
# Enable versioning immediately after creation
aws s3api put-bucket-versioning \
--bucket "$bucket" \
--versioning-configuration Status=Enabled
echo "[DONE] Bucket $bucket created with versioning enabled."
}
ensure_bucket "$BUCKET" "$REGION"नेस्टेड जेएसओएन का विश्लेषण: ईसी2 इंस्टेंस की स्थिति
ईसी2 की प्रतिक्रियाएँ बहुत गहराई तक नेस्टेड होती हैं। jq पथ-क्रमण और --query (जेएमईएसपाथ, जो AWS CLI में मूल रूप से उपलब्ध है) दोनों काम करते हैं — लेकिन जटिल तर्क के लिए jq अधिक शक्तिशाली है।
ईसी2 के लिए जेक्यू के प्रमुख पैटर्न:
.Reservations[].Instances[]— दोहरी-सरणी वाली संरचना को समतल करें।select(.State.Name == "running")— स्थिति के आधार पर फ़िल्टर करें।.Tags[] | select(.Key == "Name") | .Value— टैग का मान निकालें।
यह अंश उसके Name टैग से चल रहे इंस्टेंस को ढूँढता है और उसका ID तथा निजी IP लौटाता है।
#!/usr/bin/env bash
set -euo pipefail
INSTANCE_NAME="web-server-prod"
RESULT=$(aws ec2 describe-instances \
--filters \
"Name=tag:Name,Values=${INSTANCE_NAME}" \
"Name=instance-state-name,Values=running" \
--output json)
# Extract instance ID and private IP using jq
INSTANCE_ID=$(echo "$RESULT" | jq -r \
'.Reservations[].Instances[] | .InstanceId')
PRIVATE_IP=$(echo "$RESULT" | jq -r \
'.Reservations[].Instances[] | .PrivateIpAddress')
if [[ -z "$INSTANCE_ID" ]]; then
echo "[WARN] No running instance named '$INSTANCE_NAME' found."
exit 1
fi
echo "Instance ID : $INSTANCE_ID"
echo "Private IP : $PRIVATE_IP"इडेम्पोटेंट IAM भूमिका का प्रावधान
IAM संसाधन वैश्विक होते हैं और उनकी डुप्लिकेट प्रतियाँ नहीं बनाई जानी चाहिए। पहले से मौजूद भूमिका बनाने का प्रयास करने पर AWS एक विशिष्ट त्रुटि कोड — EntityAlreadyExists — लौटाता है। बड़े पैमाने पर IAM के साथ काम करते समय उस कोड को पकड़ना, पहले सूची की जाँच करने वाली कॉल से अधिक साफ़ इडेम्पोटेंसी पैटर्न है।
नीचे दी गई स्क्रिप्ट यह दिखाती है:
|| trueसे CLI के निकास कोड को सहेजना, ताकिset -eप्रक्रिया को समय से पहले न रोक दे।- प्रोसेस प्रतिस्थापन का उपयोग करके AWS द्वारा मानक त्रुटि आउटपुट में लिखे गए त्रुटि संदेश के जेएसओएन का विश्लेषण करना।
- नीति को केवल तभी जोड़ना जब वह पहले से संलग्न न हो।
#!/usr/bin/env bash
set -euo pipefail
ROLE_NAME="DevOpsDeployRole"
POLICY_ARN="arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
TRUST_POLICY='{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": { "Service": "ec2.amazonaws.com" },
"Action": "sts:AssumeRole"
}]
}'
# Attempt creation; ignore EntityAlreadyExists
CREATE_OUTPUT=$(aws iam create-role \
--role-name "$ROLE_NAME" \
--assume-role-policy-document "$TRUST_POLICY" \
--output json 2>&1) || {
if echo "$CREATE_OUTPUT" | grep -q 'EntityAlreadyExists'; then
echo "[SKIP] Role $ROLE_NAME already exists."
else
echo "[ERROR] Unexpected error: $CREATE_OUTPUT" >&2
exit 1
fi
}
# Attach policy (attach-role-policy is idempotent by default)
aws iam attach-role-policy \
--role-name "$ROLE_NAME" \
--policy-arn "$POLICY_ARN"
echo "[OK] Role $ROLE_NAME ready with policy $POLICY_ARN."जेक्यू का उन्नत उपयोग: रूपांतरण, मैप और टूएंट्रीज़
वास्तविक इन्फ्रास्ट्रक्चर प्रतिक्रियाओं में दर्जनों फ़ील्ड होते हैं। jq रूपांतरणों से आप आगे इस्तेमाल होने वाले उपकरणों, लॉग या कॉन्फ़िगरेशन फ़ाइलों के लिए आउटपुट का नया आकार बना सकते हैं।
आवश्यक उन्नत पैटर्न:
map(select(...))— सरणी का आवरण बनाए रखते हुए सरणी को फ़िल्टर करें।to_entries | map(select(.value != null))— कॉन्फ़िगरेशन में लिखने से पहले null फ़ील्ड हटाएँ।[.[] | {id: .InstanceId, ip: .PrivateIpAddress}]— नए ढाँचे में प्रक्षेपित करें।@csv,@tsv,@base64— अंतर्निर्मित प्रारूप परिवर्तक।
नीचे दिया गया अंश सभी चल रहे इंस्टेंस निकालता है और एक TSV इन्वेंटरी फ़ाइल लिखता है।
#!/usr/bin/env bash
set -euo pipefail
OUTPUT_FILE="/tmp/ec2_inventory.tsv"
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--output json \
| jq -r '
["InstanceId", "Name", "PrivateIp", "Type", "AZ"],
[
.Reservations[].Instances[] | [
.InstanceId,
(.Tags // [] | map(select(.Key == "Name")) | .[0].Value // "(none)"),
(.PrivateIpAddress // "N/A"),
.InstanceType,
.Placement.AvailabilityZone
]
][]
| @tsv' > "$OUTPUT_FILE"
echo "Inventory written to $OUTPUT_FILE:"
column -t "$OUTPUT_FILE"असिंक्रोनस ऑपरेशन के लिए प्रतीक्षा: जेक्यू से बार-बार जाँच
क्लाउड ऑपरेशन असिंक्रोनस होते हैं। ईसी2 इंस्टेंस बनाने पर स्थिति pending के साथ तुरंत प्रतिक्रिया मिलती है। विश्वसनीय स्क्रिप्ट को आगे बढ़ने से पहले वांछित स्थिति आने तक बार-बार जाँच करनी चाहिए।
नीचे दिया गया पैटर्न घातांकीय अंतराल वाले until लूप का उपयोग करता है। AWS CLI wait उपकमांड भी देता है (जैसे aws ec2 wait instance-running), लेकिन स्वयं लिखी गई बार-बार जाँच से समय-सीमा पर अपना नियंत्रण और अधिक विस्तृत लॉगिंग मिलती है।
#!/usr/bin/env bash
set -euo pipefail
INSTANCE_ID="i-0abcdef1234567890"
MAX_WAIT=300 # seconds
INTERVAL=10
ELAPSED=0
echo "Waiting for instance $INSTANCE_ID to reach 'running' state..."
while true; do
STATE=$(aws ec2 describe-instances \
--instance-ids "$INSTANCE_ID" \
--output json \
| jq -r '.Reservations[0].Instances[0].State.Name')
echo " [$(date +%T)] state = $STATE"
[[ "$STATE" == "running" ]] && break
if [[ "$STATE" == "terminated" || "$STATE" == "shutting-down" ]]; then
echo "[FATAL] Instance entered terminal state: $STATE" >&2
exit 1
fi
if (( ELAPSED >= MAX_WAIT )); then
echo "[TIMEOUT] Instance did not reach 'running' after ${MAX_WAIT}s." >&2
exit 1
fi
sleep "$INTERVAL"
(( ELAPSED += INTERVAL ))
done
echo "[OK] Instance $INSTANCE_ID is running."बहु-क्लाउड पैटर्न: GCP और एज़्योर के समकक्ष
इडेम्पोटेंट पढ़ें-फिर-कार्य पैटर्न दूसरे क्लाउड CLI पर भी सीधे लागू होता है। gcloud और az दोनों जेएसओएन लौटाते हैं और फ़िल्टरिंग का समर्थन करते हैं:
- GCP:
gcloud ... --format='json'— AWS की तरह ही इसेjqमें पाइप करें। स्क्रिप्ट में पूछताछ दबाने के लिएgcloud ... --quietका उपयोग करें। - एज़्योर:
az ... --output json— यही पैटर्न।az group existsसाधारण बूलियन स्ट्रिंग (true/false) लौटाता है, इसलिए सरल मामलों में जेक्यू की आवश्यकता नहीं रहती।
यह अंश एज़्योर में इडेम्पोटेंट संसाधन समूह निर्माण और GCP में GCS बकेट निर्माण को एक ही गार्ड पैटर्न का उपयोग करते हुए साथ-साथ दिखाता है।
#!/usr/bin/env bash
set -euo pipefail
# --- Azure: idempotent resource group ---
RG="devops-rg"
LOCATION="westeurope"
if [[ $(az group exists --name "$RG") == "true" ]]; then
echo "[SKIP] Azure resource group $RG already exists."
else
echo "[CREATE] Creating Azure resource group $RG..."
az group create --name "$RG" --location "$LOCATION" --output json \
| jq '{name: .name, location: .location, provisioningState: .properties.provisioningState}'
fi
# --- GCP: idempotent GCS bucket ---
GCS_BUCKET="gs://devops-artifacts-prod"
PROJECT="my-gcp-project"
if gcloud storage buckets describe "$GCS_BUCKET" \
--project="$PROJECT" --format='value(name)' &>/dev/null; then
echo "[SKIP] GCS bucket $GCS_BUCKET already exists."
else
echo "[CREATE] Creating GCS bucket $GCS_BUCKET..."
gcloud storage buckets create "$GCS_BUCKET" \
--project="$PROJECT" \
--location=EU \
--uniform-bucket-level-access
fiसंसाधनों को सुरक्षित रूप से नष्ट करना
नष्ट करने वाली स्क्रिप्टें निर्माण वाली स्क्रिप्टों जितनी ही महत्वपूर्ण हैं। सुरक्षित रूप से संसाधन हटाने की प्रक्रिया:
- कुछ भी हटाने से पहले संसाधनों की सूची बनाती है और मानव समीक्षा के लिए सारांश दिखाती है।
--dry-runफ़्लैग स्वीकार करती है, ताकि ऑपरेटर कार्रवाई किए बिना योजना की पुष्टि कर सकें।- सही निर्भरता क्रम में हटाती है (जैसे, सुरक्षा समूह हटाने से पहले इंस्टेंस समाप्त करना)।
नीचे दिया गया अंश Env=staging टैग वाले सभी ईसी2 इंस्टेंस को ड्राइ-रन गार्ड के साथ समाप्त करता है।
#!/usr/bin/env bash
set -euo pipefail
DRY_RUN="${1:-}"
echo "Finding staging EC2 instances..."
INSTANCE_IDS=$(aws ec2 describe-instances \
--filters \
"Name=tag:Env,Values=staging" \
"Name=instance-state-name,Values=running,stopped" \
--output json \
| jq -r '[.Reservations[].Instances[].InstanceId] | @sh')
if [[ -z "$INSTANCE_IDS" ]]; then
echo "[INFO] No staging instances found. Nothing to do."
exit 0
fi
echo "Instances to terminate: $INSTANCE_IDS"
if [[ "$DRY_RUN" == "--dry-run" ]]; then
echo "[DRY-RUN] No changes made."
exit 0
fi
read -rp "Terminate these instances? [yes/N]: " CONFIRM
[[ "$CONFIRM" != "yes" ]] && { echo "Aborted."; exit 0; }
# shellcheck disable=SC2086
aws ec2 terminate-instances --instance-ids $INSTANCE_IDS --output json \
| jq '.TerminatingInstances[] | {id: .InstanceId, state: .CurrentState.Name}'
echo "[DONE] Termination initiated."संपूर्ण प्रक्रिया: पुनः चलाने पर समान परिणाम देने वाली अवसंरचना आरंभीकरण स्क्रिप्ट
यह सब एक साथ मिलाकर: उत्पादन-स्तर की आरंभीकरण स्क्रिप्ट कई संसाधनों का सही क्रम में समन्वय करती है, उसे बार-बार चलाने पर भी समान परिणाम देती है और ऐसे संरचित लॉग उत्पन्न करती है जिन्हें सतत एकीकरण प्रणाली पार्स कर सकती है।
प्रदर्शित प्रमुख अभ्यास:
- संरचित लॉग लेखन — एक
log()सहायक के माध्यम से, जो[INFO],[WARN]और[ERROR]उपसर्ग जोड़ता है। - स्थिति फ़ाइल — बनाए गए संसाधनों की पहचान संख्याएँ JSON स्थिति फ़ाइल में लिखें, ताकि बाद में चलने वाली स्क्रिप्टें और संसाधन हटाने वाली स्क्रिप्टें उन्हीं संदर्भों को साझा कर सकें।
- त्रुटि पकड़ने की व्यवस्था —
trapअप्रत्याशित निकासों को पकड़ता है और विफल पंक्ति संख्या बताता है।
#!/usr/bin/env bash
set -euo pipefail
STATE_FILE="/tmp/infra_state.json"
REGION="eu-west-1"
BUCKET="devops-bootstrap-$(date +%Y%m)"
ROLE="BootstrapRole"
log() { echo "[$(date -u +%T)] [$1] ${*:2}"; }
trap 'log ERROR "Script failed at line $LINENO"' ERR
# Initialize state
[[ -f "$STATE_FILE" ]] || echo '{}' > "$STATE_FILE"
# --- Step 1: S3 bucket ---
EXISTING_BUCKETS=$(aws s3api list-buckets --query 'Buckets[].Name' --output json)
if echo "$EXISTING_BUCKETS" | jq -e --arg b "$BUCKET" 'index($b) != null' > /dev/null; then
log INFO "Bucket $BUCKET exists — skipping."
else
aws s3api create-bucket --bucket "$BUCKET" --region "$REGION" \
--create-bucket-configuration LocationConstraint="$REGION" > /dev/null
log INFO "Bucket $BUCKET created."
fi
# Update state file
jq --arg b "$BUCKET" '.bucket = $b' "$STATE_FILE" > /tmp/_state_tmp && mv /tmp/_state_tmp "$STATE_FILE"
# --- Step 2: IAM role ---
if aws iam get-role --role-name "$ROLE" &>/dev/null; then
log INFO "Role $ROLE exists — skipping."
else
aws iam create-role --role-name "$ROLE" \
--assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]}' \
--output json | jq '{RoleName: .Role.RoleName, Arn: .Role.Arn}'
log INFO "Role $ROLE created."
fi
jq --arg r "$ROLE" '.role = $r' "$STATE_FILE" > /tmp/_state_tmp && mv /tmp/_state_tmp "$STATE_FILE"
log INFO "Bootstrap complete. State: $(cat "$STATE_FILE" | jq -c .)"ज्ञान-जाँच: jq की पुनरावृत्ति-सुरक्षा
jq की सहायता से बार-बार सुरक्षित रूप से चलने वाली क्लाउड स्क्रिप्टिंग की अपनी समझ जाँचें।
पुनरावलोकन: CLI और jq से क्लाउड संसाधनों का प्रबंधन
इस पाठ में शेल स्क्रिप्टों, क्लाउड CLI उपकरणों और jq का उपयोग करके बार-बार सुरक्षित रूप से चलने वाले क्लाउड स्वचालन का पूरा जीवनचक्र शामिल किया गया।
मुख्य सिद्धांत:
- लिखने से पहले पढ़ें — पहले हमेशा मौजूदा स्थिति की जाँच करें; केवल अंतर के अनुसार कार्रवाई करें।
- सुरक्षा-जाँच के लिए jq -e — JSON प्रतिक्रियाओं के आधार पर
ifशाखाएँ चलाने के लिए निकास-स्थिति मोड का उपयोग करें। - त्रुटि कोड का अर्थ — पहले से सूची बनाने के बजाय, जब यह अधिक प्रभावी हो, तो प्रदाता-विशिष्ट त्रुटि कोड जैसे
EntityAlreadyExistsपकड़ें। - अतुल्यकालिक स्थिति की जाँच करें — समय-सीमाओं के साथ
untilलूप का उपयोग करें; संसाधन बनने के तुरंत बाद उसके तैयार होने की धारणा कभी न बनाएँ। - स्थिति फ़ाइलें — संसाधन पहचान संख्याएँ साझा JSON फ़ाइल में लिखें, ताकि स्क्रिप्ट का हर चरण और संसाधन हटाने की प्रक्रिया उन्हीं संदर्भों को साझा कर सके।
- पूर्वावलोकन संकेतक — विनाशकारी कार्रवाइयों से पहले संचालक की सुरक्षित समीक्षा के लिए हमेशा
--dry-runका समर्थन करें।
ये प्रतिरूप — सख्त set -euo pipefail हेडर और ERR पकड़ने की व्यवस्था के साथ — C2 स्तर पर उत्पादन-स्तरीय अवसंरचना स्क्रिप्टिंग की नींव बनाते हैं।
एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 142
- पाठ
- 568
अक्सर पूछे जाने वाले प्रश्न
क्या “CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग” पाठ निःशुल्क है?
हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग” में मैं क्या सीखूँगा?
क्लाउड प्रदाता के CLI को idempotent ढंग से चलाएँ और संसाधन बनाने तथा हटाने के लिए JSON प्रतिक्रियाएँ पार्स करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना
- envsubst और heredoc से कॉन्फ़िगरेशन टेम्पलेट बनाना
- CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग
- स्वास्थ्य जाँच, तत्परता द्वार और प्रतीक्षा लूप