AWS Organization के भीतर SSM Agent का प्रबंधन
यह अनुभाग AWS Organization के भीतर SSM agent इंस्टॉलेशन को प ्रबंधित करने का तरीका बताता है और CloudFormation, Terraform, Shell, PowerShell, Ansible, Chef, और Puppet के लिए सैंपल कोड प्रदान करता है।
कृपया ध्यान रखें कि यह सैंपल कोड है और प्रोडक्शन वातावरण में किसी भी उपयोग से पहले विकास वातावरण में पूरी तरह से परीक्षण और मान्य किया जाना चाहिए।
SSM Agent को समझना
जैसा कि पिछले अनुभागों में चर्चा की गई है, Systems Manager का उपयोग करके अपने वातावरण में अपने नोड्स को प्रबंधित करना शुरू करने के लिए, नोड्स को managed होना चाहिए, जिसका अर्थ है कि SSM Agent मशीन पर इंस्टॉल है और agent आवश्यक अनुमतियों के साथ Systems Manager सर्विस endpoints के साथ संवाद कर सकता है।
AWS Systems Manager Agent (SSM Agent) Amazon सॉफ़्टवेयर है जो Amazon Elastic Compute Cloud (Amazon EC2) इंस्टेंस, एज डिवाइस, ऑन-प ्रिमाइसेस सर्वर, और वर्चुअल मशीन (VMs) पर चलता है। SSM Agent का सोर्स कोड GitHub पर उपलब्ध है। SSM Agent Systems Manager के लिए इन संसाधनों को अपडेट, प्रबंधित और कॉन्फ़िगर करना संभव बनाता है। Agent AWS Cloud में Systems Manager सेवा से अनुरोधों को संसाधित करता है, और फिर अनुरोध में निर्दिष्ट अनुसार उन्हें चलाता है।
इसलिए, SSM Agent का नोड्स पर इंस्टॉल होना सुनिश्चित करना आवश्यक है और AWS Systems Manager सेवा का उपयोग करके नोड प्रबंधन संचालन की यात्रा शुरू करते समय यह सबसे पहला कदम है।
ऑपरेटिंग सिस्टम समर्थन
SSM Agent ऑपरेटिंग सिस्टम और मशीन प्रकारों की एक विस्तृत श्रृंखला पर समर्थित है। यह सत्यापित करने के लिए कि आपका ऑपरेटिंग सिस्टम (OS), OS संस् करण, और मशीन प्रकार समर्थित है, उपयोगकर्ता गाइड में Supported operating systems and machine types देखें।
SSM Agent पूर्व-इंस्टॉल AMIs
Systems Manager के साथ शुरू करने के लिए, AWS Systems Manager Agent (SSM Agent) AWS और विश्वसनीय तृतीय-पक्षों द्वारा प्रदान किए गए कुछ Amazon Machine Images (AMIs) पर पूर्व-इंस्टॉल होता है। जिन ऑपरेटिंग सिस्टम पर यह पूर्व-इंस्टॉल है उनकी सूची प्राप्त करने के लिए Find AMIs with the SSM Agent preinstalled देखें।
SSM Agent इंस्टॉलेशन विधियाँ
अब जब हम समझ गए हैं कि कौन से ऑपरेटिंग सिस्टम SSM Agent का समर्थन करते हैं, तो आइए उन इंस्टेंस पर agent इंस्टॉल करने की विभिन्न विधियों का अन्वेषण करें जिन पर SSM Agent पूर्व-इंस्टॉल नहीं है। इंस्टॉलेशन दृष्टिकोण को दो मुख्य परिदृश्यों में वर्गीकृत किया जा सकता है:
- नए इंस्टेंस तैनाती: नए इंस्टेंस लॉन्च करते समय SSM Agent इंस्टॉल करना।
- मौजूदा इंस्टेंस प्रबंधन: पहले से चल रहे इंस्टेंस पर SSM Agent इंस्टॉल करना।
नए इंस्टेंस पर SSM Agent इंस्टॉल करना
नए इंस्टेंस लॉन्च करते समय, अपनी प्रारंभिक सेटअप प्रक्रिया में SSM Agent इंस्टॉलेशन को शामिल करना शुरू से ही सुसंगत प्रबंधन क्षमताओं को सुनिश्चित करता है। यह दृष्टिकोण तैनाती-पश्चात इंस्टॉलेशन की आवश्यकता को समाप्त करता है। आप Golden AMIs, user data scripts, या infrastructure as code टूल आदि जैसी विभिन्न विधियों के माध्यम से इसे प्राप्त कर सकते हैं। विधि का चयन अक्सर आपके संगठन की तैनाती प्रथाओं और स्केलिंग आवश्यकताओं पर निर्भर करता है।
Golden AMI दृष्टिकोण
Golden AMI एक अनुकूलित Amazon Machine Image है जो EC2 इंस्टेंस लॉन्च करने के लिए एक मानकीकृत टेम्पलेट के रूप में कार्य करती है। Systems Manager एकीकरण के लिए, संगठन SSM Agent पूर्व-इंस्टॉल के साथ Golden AMIs बना सकते हैं, यह सुनिश्चित करते हुए कि इन AMIs से लॉन्च किए गए सभी इंस्टेंस Systems Manager के माध्यम से तुरंत प्रबंधनीय हों। यह दृष्टिकोण लॉन्च-पश्चात इंस्टॉलेशन स्क्रिप्ट की आवश्यकता को समाप्त करता है और तैनाती विफलताओ ं के जोखिम को कम करता है।
Golden AMI बनाना
- मैन्युअल रूप से: Golden AMI को मैन्युअल रूप से बनाना एक इंस्टेंस लॉन्च करके, SSM Agent इंस्टॉल और कॉन्फ़िगर करके, कॉन्फ़िगरेशन का परीक्षण करके, और फिर उस इंस्टेंस से AMI बनाकर किया जा सकता है।
- EC2 Image builder: यदि आप गोल्डन इमेज बनाने के लिए EC2 Image Builder का उपयोग कर रहे हैं, तो image recipe कॉन्फ़िगर करें और आउटपुट इमेज में SSM agent रखने के विकल्प का चयन करें।
- Hashicorp Packer: यदि आप Hashicorp Packer का उपयोग कर रहे हैं, तो SSM agent इंस्टॉल करने के लिए shell कमांड चलाने के लिए shell Packer provisioner का उपयोग करें।
{
"provisioners": [
{
"type": "shell",
"inline": [
"if [ -f /etc/system-release ]; then",
" # Amazon Linux",
" sudo yum install -y amazon-ssm-agent",
" sudo systemctl enable amazon-ssm-agent",
" sudo systemctl start amazon-ssm-agent",
"elif [ -f /etc/lsb-release ]; then",
" # Ubuntu",
" sudo snap install amazon-ssm-agent —classic",
" sudo systemctl enable snap.amazon-ssm-agent.amazon-ssm-agent.service",
" sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service",
"fi"
]
}
]
}
वैकल्पिक रूप से, Agent इंस्टॉलेशन shell कमांड वाली स्क्रिप्ट का पथ प्रदान करें।
{
"provisioners": [{
"type": "shell",
"script": "scripts/install_ssm.sh"
}]
}
script provisioner के साथ Packer का उपयोग करते समय, install_ssm.sh को आपकी Packer कॉन्फ़िगरेशन फ़ाइल (.json या .pkr .hcl) के सापेक्ष संग्रहीत किया जाना चाहिए।
Infrastructure as Code (IaC)
- CloudFormation
- Terraform
यदि आप उन AMIs का उपयोग करके इंस्टेंस लॉन्च करने के लिए CloudFormation का उपयोग करते हैं जिनमें SSM agent पूर्व-इंस्टॉल नहीं है, तो आप SSM agent इंस्टॉल करने के लिए UserData प्रॉपर्टी का लाभ उठा सकते हैं।
# EC2 Instance
EC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: !FindInMap
- RegionMap
- !Ref AWS::Region
- !Ref OperatingSystem
InstanceType: !FindInMap
- EnvironmentSettings
- !Ref EnvironmentType
- InstanceType
IamInstanceProfile: !Ref SSMInstanceProfile
UserData: !If
- !Base64
'Fn::Sub': |
#!/bin/bash
# Install SSM Agent based on OS
if [ -f /etc/os-release ]; then
. /etc/os-release
case "$ID" in
amzn|rhel)
yum install -y amazon-ssm-agent
systemctl enable amazon-ssm-agent
systemctl start amazon-ssm-agent
;;
ubuntu)
snap install amazon-ssm-agent —classic
systemctl enable snap.amazon-ssm-agent.amazon-ssm-agent.service
systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service
;;
esac
fi
Terraform का उपयोग करते समय, एक स्क्रिप्ट फ़ाइल बनाएँ जिसमें SSM agent इंस्टॉलेशन shell कमांड हों। फिर इंस्टॉलेशन स्क्रिप्ट फ़ाइल को इंगित करने के लिए instance resource की user_data प्रॉपर्टी का उपयोग करें।
# EC2 Instance
resource "aws_instance" "web" {
ami = data.aws_ami.amazon_linux_2.id
instance_type = "t2.micro"
subnet_id = data.aws_subnet.main.id
vpc_security_group_ids = [aws_security_group.allow_ssm.id]
iam_instance_profile = aws_iam_instance_profile.ssm_profile.name
associate_public_ip_address = true
user_data = filebase64("${path.module}/scripts/install_ssm.sh")
tags = {
Name = "SSM-enabled-instance"
}
}
# Output
output "instance_id" {
value = aws_instance.web.id
}
EC2 Console/API/SDK
EC2 कंसोल या किसी SDK का उपयोग करके EC2 इंस्टेंस लॉन्च करते समय, इंस्टेंस लॉन्च करने से पहले Amazon EC2 इंस्टेंस में SSM Agent इंस्टॉलेशन कमांड के साथ user data जोड़ें।
- Linux के लिए इस आर्टिकल में बताए गए कदमों को देखें: How do I install SSM Agent on an Amazon EC2 Linux instance at launch?
- Windows के लिए इस आर्टिकल में बताए गए कदमों को देखें: How do I install AWS Systems Manager Agent (SSM Agent) on an Amazon EC2 Windows instance at launch?
Application Migration Service (MGN)
यदि आपके सर्वर Application Migration Service का उपयोग करक े माइग्रेट और लॉन्च किए गए हैं, तो SSM Agent इंस्टॉल करने के लिए post-launch सेटिंग्स का उपयोग करें। यहाँ बताए गए कदमों को देखें।
Amazon EKS
नवीनतम Amazon EKS optimized AMIs स्वचालित रूप से SSM Agent इंस्टॉल करती हैं। यदि आप अनुकूलित AMI का उपयोग कर रहे हैं, तो SSM Agent इंस्टॉल करने के लिए यहाँ बताए अनुसार preBootstrapCommands प्रॉपर्टी का उपयोग करें।
चल रहे इंस्टेंस पर SSM Agent इंस्टॉल करना
उन इंस्टेंस के लिए जो पहले से आपके वातावरण में चल रहे हैं, आप विभिन्न रिमोट एक्सेस और ऑटोमेशन विधियों का उपयोग करके SSM Agent इंस्टॉल कर सकते हैं। इंस्टॉलेशन प्रक्रिया आपके ऑपरेटिंग सिस्टम प्रकार, उपलब्ध एक्सेस विधियों, और नेटवर्क कॉन्फ़िगरेशन के आधार पर भिन्न होती है। यह अनुभाग विभिन्न दृष्टिकोणों का वर्णन करता है जिनका उपयोग आप अपने मौजूदा इंस्टेंस पर SSM Agent इंस्टॉल करने के लिए कर सकते हैं।
कस्टम समाधान
Unmanaged Amazon EC2 nodes पर AWS Systems Manager agent की स्वचालित इंस्टॉलेशन पर सार्वजनिक ब्लॉग देखें। यह समाधान ssm agent इंस्टॉल करने के लिए userdata का उपयोग करता है और automation runbooks इस प्रक्रिया को क्षेत्रों और खातों में ऑर्केस्ट्रेट करते हैं।
कॉन्फ़िगरेशन प्रबंधन टूल
यदि आपका संगठन Puppet, Chef, या Ansible जैसे कॉन्फ़िगरेशन प्रबंधन टूल का उपयोग करता है, तो आप अपने इंस्टेंस में SSM Agent तैनात करने के लिए इन मौजूदा टूल का लाभ उठा सकते हैं।
- Ansible
- Chef
- Puppet
- name: Install SSM Agent across fleet
hosts: all
become: yes
tasks:
- name: Detect OS family
ansible.builtin.set_fact:
os_family: "{{ ansible_facts['os_family'] }}"
- name: Install SSM Agent on RedHat family
block:
- name: Download SSM Agent RPM
get_url:
url: "https://s3.{{ aws_region }}.amazonaws.com/amazon-ssm-{{ aws_region }}/latest/linux_amd64/amazon-ssm-agent.rpm"
dest: /tmp/amazon-ssm-agent.rpm
mode: '0644'
- name: Install SSM Agent
yum:
name: /tmp/amazon-ssm-agent.rpm
state: present
when: os_family == "RedHat"
- name: Install SSM Agent on Debian family
block:
- name: Install SSM Agent via Snap
community.general.snap:
name: amazon-ssm-agent
classic: yes
when: os_family == "Debian"
- name: Enable and start SSM Agent
systemd:
name: amazon-ssm-agent
enabled: yes
state: started
- name: Verify installation
command: systemctl status amazon-ssm-agent
register: ssm_status
ignore_errors: yes
- name: Report status
debug:
var: ssm_status.stdout_lines
if $facts['os']['family'] == 'RedHat' {
package { 'amazon-ssm-agent':
ensure => installed,
source => 's3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm',
provider => 'rpm',
}
} elsif $facts['os']['family'] == 'Debian' {
package { 'amazon-ssm-agent':
ensure => installed,
source => 's3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb',
provider => 'dpkg',
}
}
service { 'amazon-ssm-agent':
ensure => running,
enable => true,
require => Package['amazon-ssm-agent'],
}
# cookbooks/ssm_agent/recipes/default.rb
case node['platform_family']
when 'rhel'
remote_file '/tmp/amazon-ssm-agent.rpm' do
source "https://s3.#{node['region']}.amazonaws.com/amazon-ssm-#{node['region']}/latest/linux_amd64/amazon-ssm-agent.rpm"
mode '0644'
action :create
end
package 'amazon-ssm-agent' do
source '/tmp/amazon-ssm-agent.rpm'
action :install
end
when 'debian'
execute 'install_ssm_agent' do
command 'snap install amazon-ssm-agent —classic'
not_if 'snap list | grep amazon-ssm-agent'
end
end
service 'amazon-ssm-agent' do
action [:enable, :start]
end
EC2 user data
डिफ़ॉल्ट रूप से, user data कमांड और cloud-init निर्देश केवल पहले बूट चक्र के दौरान चलते हैं जब EC2 इंस्टेंस लॉन्च किया जाता है। हालांकि, आप mime multi-part फ़ाइल के साथ अपने user data कमांड और cloud-init निर्देशों को कॉन्फ़िगर कर सकते हैं।
User data अपडेट करने के लिए, इंस्टेंस को स्टॉप करें। Actions पर क्लिक करें, Instance settings चुनें और Edit User Data चुनें।
- Linux
- Windows
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
# Amazon Linux 2, RHEL
dnf install -y s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
systemctl enable amazon-ssm-agent
systemctl start amazon-ssm-agent
--//--