如何在CentOS 8上安装AWS SSM代理| CentOS 7

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

SSM代表系统管理器。这是用于管理AWS上服务器的管理服务。 以下是使用系统管理器的具体示例。

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

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

Systems Manager允许用户无需使用ssh或KeyPairs即可连接到实例。 这对于安全性很有用,因为您不必打开端口22进行ssh访问。

CentOS8上的SSM代理|安装CentOS7的前提条件

设置要求如下:

  • AWS账户。
  • 有权在AWS上创建资源的用户。
  • 用于创建和编辑CloudFormation模板的IDE。

步骤1:创建EC2实例,配置文件和角色

我没有手动创建单个资源,而是使用了一个CloudFormation模板。模板创建。

  • SSM的作用。
  • 使用上面创建的角色的EC2实例配置文件。
  • EC2实例安全组
  • 最后,安装了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   

参数部分允许用户输入自己的值。在这种情况下,用户必须用AWS账户的唯一ID替换VPC和子网ID。

在“资源”部分中,模板首先创建一个实例角色。实例角色具有允许ec2实例承担角色的信任策略。此外,该角色具有两个与之关联的策略。 适用于SSM的Amazon EC2Role和Amazon SSM托管实例核心。用户可以自定义角色名称和标签以适合他们的选择。

然后,模板创建一个实例配置文件,并将上面创建的角色附加到它。同样,用户可以自定义角色的名称。 N / B:实例配置文件和角色名称必须相同。否则,该角色将不会出现在ec2实例中。

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

步骤2:运行CloudFormation模板

您可以使用CodePipeline部署模板,也可以在CloudFormation控制台中手动部署模板。本教程使用CloudFormation控制台。

在CloudFormation控制台中,[スタックの作成]单击。

创建一个堆栈

下一个,[新しいテンプレートとリソースを使用してスタックを作成する]选择。

如何在CentOS 8上安装AWS SSM代理| CentOS 7用新资源创建堆栈

然后选择一个模板。在这种情况下,请上传创建的模板。

如何在CentOS 8上安装AWS SSM代理| CentOS 7上载范本

在打开的选项卡中,您需要指定堆栈的名称并输入模板参数。输入自定义值的详细信息,然后[次へ]单击。

如何在CentOS 8上安装AWS SSM代理| CentOS 7输入模板参数和堆栈名称

下一个选项卡允许用户将标签添加到堆栈。它还为用户提供了配置堆栈策略和通知的选项。完成后[次へ]单击。它提供了一个“检查”选项卡,可为您提供所有已完成配置的完整图片。如果用户对显示的内容感到满意,[スタックの作成]您可以单击。 CloudFormation将开始创建资源。

手动安装SSM代理

如果要在使用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

请注意以下教程,该教程演示了如何使用CodePipeline部署CloudFormation模板。

Sidebar