云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 8/CentOS 7上安装AWS SSM Agent(SSM代理)

在CentOS 8/CentOS 7上安装AWS SSM Agent(SSM代理)

2020-10-09 09:40:10作者:吴增景稿源:云网牛站

本文为用户提供有关如何在CentOS 8/CentOS 7 EC2 Linux实例上安装AWS SSM Agent(SSM代理)的指南。

 

前言

SSM代表系统管理器,它是用于管理AWS上服务器的管理服务,System Manager的特定用例是:

假设用户要使用相同的配置来配置多个服务器/ec2实例,用户可以使用系统管理器一次在所有服务器上同时运行命令,而不必一次在每个实例上都这样做。

它也是使您要在ec2实例上执行的任务自动化的出色工具,例如,更新操作系统版本或确保您的ec2实例符合某些管理策略。

Systems Manager还允许用户连接到实例,而无需使用ssh或具有KeyPairs,这对安全性有好处,因为现在我们不必开放端口22进行ssh访问。

 

CentOS 8/CentOS 7上的SSM Agent安装先决条件

设置要求是:

1、一个AWS账户。

2、有权在AWS上创建资源的用户。

3、用于编写和编辑CloudFormation模板的IDE。

参考:在CentOS 8/RHEL 8上安装AWS CloudFormation帮助脚本

 

创建EC2实例,配置文件和角色

我没有使用手动创建单个资源的方法,而是使用了一个CloudFormation模板,模板将创建:

1、SSM角色。

2、将使用上面创建的角色的EC2实例配置文件。

3、EC2实例安全组

4、最后,安装了SSM代理的EC2实例。

这是我的CloudFormation模板:

AWSTemplateFormatVersion: "2010-09-09"

Description: "Template to create Centos ec2 instance and install SSM on it"

Parameters:

    VPC:

        Type: String

        Description: The vpc to launch the service

        Default: vpc-ID

    PublicSubnet1:

        Type: String

        Description: The subnet where to launch the ec2

        Default: subnet-ID

Resources:

    IAMInstanceRole:

        Type: 'AWS::IAM::Role'

        Properties:

          Description: The SSM Instance Profile

          RoleName: AWSEC2SSMtest

          AssumeRolePolicyDocument:

            Version: 2012-10-17

            Statement:

              - Effect: Allow

                Principal:

                  Service:

                  - ec2.amazonaws.com

                Action:

                  - 'sts:AssumeRole'

          ManagedPolicyArns:

            - arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM

            - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

          Tags:

            - 

              Key: "Project"

              Value: "test-blog"

            - 

              Key: "Environment"

              Value: "test"

            - 

              Key: "createdBy"

              Value: "Maureen Barasa"

            - 

              Key: "Name"

              Value: "AWSEC2SSMtest"

    IAMInstanceProfile:

        Type: AWS::IAM::InstanceProfile

        Properties:

            InstanceProfileName: AWSEC2SSMtest

            Roles:

             - !Ref IAMInstanceRole

    CentosServer:

        Type: "AWS::EC2::Instance"

        Properties:

            ImageId: "ami-ID"

            InstanceType: "t2.micro"

            KeyName: "test-key"

            AvailabilityZone: !Sub "${AWS::Region}a"

            Tenancy: "default"

            DisableApiTermination: true

            SubnetId: !Ref PublicSubnet1

            EbsOptimized: false

            SecurityGroupIds:

              - !Ref CentosSecurityGroup

            SourceDestCheck: true

            BlockDeviceMappings:

              - 

                DeviceName: "/dev/xvda"

                Ebs:

                    Encrypted: false

                    VolumeSize: 20

                    VolumeType: "gp2"

                    DeleteOnTermination: true

            UserData:

                "Fn::Base64":

                    !Sub |

                       #!/bin/bash

                       cd /tmp

                       sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

                       sudo systemctl enable amazon-ssm-agent

                       sudo systemctl start amazon-ssm-agent

            IamInstanceProfile: !Ref IAMInstanceProfile

            Tags:

              - 

                Key: "Project"

                Value: "test-blog"

              - 

                Key: "Environment"

                Value: "test"

              - 

                Key: "createdBy"

                Value: "Maureen Barasa"

              - 

                Key: "Name"

                Value: "Test-Centos"

    CentosSecurityGroup:

        Type: "AWS::EC2::SecurityGroup"

        Properties:

            GroupDescription: "Security Group to control access to the test Centos server"

            GroupName: "Test-Centos-SG"

            VpcId: !Ref VPC

            SecurityGroupIngress: 

              - 

                CidrIp: 0.0.0.0/0

                FromPort: 22

                IpProtocol: "tcp"

                ToPort: 22

              - 

                CidrIp: 0.0.0.0/0

                FromPort: 443

                IpProtocol: "tcp"

                ToPort: 443

Outputs:

  Server1:

    Description: The created studio server

    Value: !Ref CentosServer

  SecurityGroup:

    Description: The server sg

    Value: !Ref CentosSecurityGroup

参数(Parameter)部分允许用户输入自己的值,对于我们的情况,用户应使用其AWS账户中的ID替换VPC和子网ID。

在资源(Resources)部分中,模板首先创建一个实例角色,实例角色具有允许ec2实例担任该角色的信任策略。此外,该角色还将附加两个策略,AmazonEC2RoleforSSM和AmazonSSMManagedInstanceCore,用户可以根据自己的选择自定义角色名称和标签。

接下来,模板将创建一个实例配置文件,并将上面创建的角色附加到它。再次,用户可以自定义角色的名称。N/B:实例配置文件和角色名称应该相同,否则,ec2实例将看不到您的角色。

最后,模板将创建ec2实例安全组和ec2实例,使用资源的user-data属性安装SSM代理,用户可以自定义名称和标签以为其选择合适的选项。另外,请确保使用与您的AWS账户关联的Centos AMI替换AMI-ID。

 

执行CloudFormation模板

可以使用CodePipeline部署模板,也可以在CloudFormation控制台上手动部署模板,在本文中,我们将使用CloudFormation控制台。

在CloudFormation控制台上,单击创建堆栈:

在CentOS 8/CentOS 7上安装AWS SSM Agent(SSM代理)

然后,选择使用新模板和资源创建堆栈:

在CentOS 8/CentOS 7上安装AWS SSM Agent(SSM代理)

接下来选择您的模板,对于我们的情况,我们将上传我们创建的模板:

在CentOS 8/CentOS 7上安装AWS SSM Agent(SSM代理)

在打开的选项卡上,将要求您提供堆栈的名称并输入模板参数,输入您的自定义值的详细信息,然后单击下一步:

在CentOS 8/CentOS 7上安装AWS SSM Agent(SSM代理)

下一个选项卡允许用户为其堆栈添加标签,它还为用户提供了为其堆栈配置策略和通知的选项。完成后,单击下一步,它将为您提供一个查看选项卡,用户可以在其中查看他们所做的所有配置的整体视图。如果用户认为显示的内容正确,则可以单击创建堆栈,然后,CloudFormation将开始为您创建资源。

 

手动安装SSM代理(SSM Agent)

如果您希望在创建带有CloudFormation的角色并附加到EC2实例后手动安装SSM代理,请在VM控制台中运行以下命令:

sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

sudo systemctl enable amazon-ssm-agent

sudo systemctl start amazon-ssm-agent

 

相关主题

了解AWS中的云存储选项:S3、EBS和EFS介绍

精选文章
热门文章