আমি কীভাবে একটি অটোস্কেলিং গোষ্ঠীর অংশ হিসাবে সমস্ত দৃষ্টান্তের ব্যক্তিগত আইপি ঠিকানা পেতে পারি। আমি সমস্ত দৃষ্টান্তে কিছু অপারেশন করার চেষ্টা করছি যা একটি স্বতঃআকোষ গ্রুপের অংশ।
আমি কীভাবে একটি অটোস্কেলিং গোষ্ঠীর অংশ হিসাবে সমস্ত দৃষ্টান্তের ব্যক্তিগত আইপি ঠিকানা পেতে পারি। আমি সমস্ত দৃষ্টান্তে কিছু অপারেশন করার চেষ্টা করছি যা একটি স্বতঃআকোষ গ্রুপের অংশ।
উত্তর:
আইপি তালিকা পেতে আমি নীচের মতো একটি ছোট স্ক্রিপ্ট লিখেছি:
#! / বিন / ব্যাশ আমি-এর জন্য অটোস্কলিং-এর বর্ণনা-অটো-স্কেলিং-গ্রুপগুলি - অটো-স্কেলিং-গোষ্ঠী-নাম ASGName | grep -i উদাহরণস্বরূপ | awk '{মুদ্রণ $ 2}' | কাট-ডি ',' -ফ 1 | sed -e 's / "// g'` করা aws ec2 বর্ণনা-দৃষ্টান্তগুলি - ইনস্ট্যান্ট-আইডস $ i | গ্রেপ -i প্রাইভেটআইপিএড্রেস | awk '{মুদ্রণ $ 2}' | মাথা -1 | কাট-ডি "," -ফ 1 সম্পন্ন;
jq
জসনকে পার্স করতে কমান্ডটি ব্যবহার করতে পারেন
বিকল্প হিসাবে, আমার সংস্করণটি কোনও জকিএইচ / আওক / সেড / কাট ছাড়াই
$ aws autoscaling describe-auto-scaling-instances --region us-east-1 --output text \
--query "AutoScalingInstances[?AutoScalingGroupName=='ASG-GROUP-NAME'].InstanceId" \
| xargs -n1 aws ec2 describe-instances --instance-ids $ID --region us-east-1 \
--query "Reservations[].Instances[].PrivateIpAddress" --output text
10.228.43.71
10.230.178.160
10.228.15.171
10.233.160.163
10.228.18.123
10.225.222.195
10.237.149.97
10.136.163.109
10.152.35.71
10.233.157.230
আরও অনুকূলিতকরণ সংস্করণ
# aws ec2 describe-instances --region us-east-1 --instance-ids \
$(aws autoscaling describe-auto-scaling-instances --region us-east-1 --output text \
--query "AutoScalingInstances[?AutoScalingGroupName=='ASG_NAME'].InstanceId") \
--query "Reservations[].Instances[].PrivateIpAddress"
[
"10.230.178.160",
"10.152.35.71",
"10.233.157.230",
"10.237.149.97",
"10.228.15.171",
"10.136.163.109",
"10.225.222.195",
"10.233.160.163",
"10.228.43.71",
"10.228.18.123"
]
আউটপুটে আপনার যদি কেবল একটি সরল তালিকা প্রয়োজন হয় তবে আপনি অন্য পাইপলাইন যুক্ত করতে পারেন
| jq -r '.[]'
this creates many "describe-instances" requests
এবং? যতদূর আমি বুঝতে পেরেছি যে আপনার কোয়েরিটি কেবলমাত্র ট্যাগগুলির সাথে কাজ করবে এটি সর্বজনীন নয়, তবে
এডাব্লুএস এপিআইয়ের জন্য সূক্ষ্ম ডকুমেন্টেশন একবার দেখুন। উদাহরণস্বরূপ, অ্যাডস-ক্লাইট সরঞ্জামগুলি স্ব-স্কেলিং- বর্ণনা এবং স্বয়ংক্রিয়ভাবে স্কেলিং-দৃষ্টান্তগুলি দারুণভাবে দেখায় এবং ec2 বর্ণনা-দৃষ্টান্তগুলিতে থাকে ।
রমেশের উত্তরের অনুরূপ বর্তমান দৃষ্টান্ত এবং এর গোষ্ঠীর উপর ভিত্তি করে একটি দুর্দান্ত ছোট স্ক্রিপ্ট is আপনার অঞ্চলটি সেট করা নিশ্চিত করুন এবং এই ক্ষেত্রে আমি বর্তমান ঘটনাটি এড়িয়ে চলেছি (ক্লাস্টারিংয়ের জন্য ব্যবহৃত)। প্রয়োজনে আপনি প্রাইভেটআইপিএড্রেসগুলি সর্বজনীনতেও পরিবর্তন করতে পারেন।
#!/bin/bash
wget http://s3.amazonaws.com/ec2metadata/ec2-metadata
sudo chmod u+x ec2-metadata
INSTANCE_ID=$(./ec2-metadata | grep instance-id | awk 'NR==1{print $2}')
AG_NAME=$(aws autoscaling describe-auto-scaling-instances --instance-ids ${INSTANCE_ID} --region eu-west-1 --query AutoScalingInstances[].AutoScalingGroupName --output text)
for ID in $(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names ${AG_NAME} --region eu-west-1 --query AutoScalingGroups[].Instances[].InstanceId --output text);
do
if [ "${ID}" == ${INSTANCE_ID} ] ; then
continue;
fi
IP=$(aws ec2 describe-instances --instance-ids $ID --region eu-west-1 --query Reservations[].Instances[].PrivateIpAddress --output text)
# Do what you want with ${IP} here
done
আপনি jq
আউটপুটকে বিশ্লেষণ করতেও ব্যবহার করতে পারেন , নোড স্ট্রাকচারটি পার্স করার জন্য ডাব্লু, গ্রেপ, বা সেড ইত্যাদি ব্যবহার করা খারাপ ধারণা, এটি এইচটিএমএলকে বিশ্লেষণের জন্য নিয়মিত অভিব্যক্তি ব্যবহার করার পক্ষে খারাপ ধারণা।
$ aws ec2 describe-instances \
--instance-ids $(aws autoscaling describe-auto-scaling-groups \
|jq -r '.AutoScalingGroups[]| select( .Tags[].Value == "playground").Instances[].InstanceId' \
|paste -s -d" ") \
| jq -r '.Reservations[].Instances[].PrivateIpAddress'
192.169.0.202
192.169.0.177
192.169.0.160
jq
এটি একটি দরকারী সরঞ্জাম, এবং এটিকে এখানে রেখে দিলে অপ্স লোকেরা এটি আবিষ্কার করতে পারে, এমনকি যদি অ্যামাজনের সাহায্যে আপনি aws
কমান্ডটি
আপনি ইসি 2 -> অটো স্কেলিং গোষ্ঠী -> উদাহরণস ট্যাবের অধীনে এডাব্লুএস ওয়েব কনসোল ইউআইতেও দেখতে পারেন। আপনি বর্তমান এএসজির অধীনে সমস্ত দৃষ্টান্ত দেখতে পাবেন, তারপরে আপনি আইপি পেতে প্রতিটি ইনস্ট্যান্স-আইডিতে ক্লিক করতে পারেন (এটি আপনাকে বিভিন্ন দর্শনে পুনর্নির্দেশ করবে))
এটি একটি এএসজিতে সমস্ত প্রাইভেট আইপসকে ফিরিয়ে দেবে
PRIVATEIPS=$(aws ec2 describe-instances --filters "Name=tag:aws:autoscaling:groupName,Values=$(aws autoscaling describe-auto-scaling-instances --instance-ids="$(ec2metadata --instance-id)" | jq -r '.AutoScalingInstances[].AutoScalingGroupName')" --query 'Reservations[].Instances[].PrivateIpAddress' --output text --region $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/\(.*\)[a-z]/\1/'))