本文为用户提供有关如何在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控制台上,单击创建堆栈:
然后,选择使用新模板和资源创建堆栈:
接下来选择您的模板,对于我们的情况,我们将上传我们创建的模板:
在打开的选项卡上,将要求您提供堆栈的名称并输入模板参数,输入您的自定义值的详细信息,然后单击下一步:
下一个选项卡允许用户为其堆栈添加标签,它还为用户提供了为其堆栈配置策略和通知的选项。完成后,单击下一步,它将为您提供一个查看选项卡,用户可以在其中查看他们所做的所有配置的整体视图。如果用户认为显示的内容正确,则可以单击创建堆栈,然后,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
相关主题 |