如何在CentOS 8| CentOS 7上安装AWS SSM代理
本文为用户提供有关如何在CentOS 8和CentOS 7 EC2 Linux实例上安装AWS SSM代理的指南。
SSM代表系统管理器。它是用于管理AWS上服务器的管理服务。系统管理器的特定用例是:
假设用户要使用相同的配置来配置多个服务器/ec2实例。用户可以使用系统管理器一次在所有服务器上同时运行命令,而不必一次在每个实例上都这样做。
它也是使我们要在ec2实例上执行的任务自动化的出色工具。例如,更新操作系统版本或者确保ec2实例符合某些管理策略。
Systems Manager还允许用户连接到实例,而无需使用ssh或者具有KeyPair。这对安全性有好处,因为现在我们不必打开端口22进行ssh访问。
CentOS 8| CentOS 7上的SSM代理安装准备工作
设置要求为:一个AWS账户。一个有权在AWS上创建资源的用户;一个IDE来编写和编辑CloudFormation模板。
创建EC2实例,配置文件和角色
我没有使用手动创建单个资源的方法,而是使用了一个CloudFormation模板。模板将创建;一个SSM Role.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实例承担该角色。此外,该角色还将添加两个策略。 AmazonEC2RoleforSSM和AmazonSSMManagedInstanceCore。用户可以根据自己的选择自定义角色名称和标签。
接下来,模板将创建一个实例配置文件,并将上面创建的角色添加到它。同样,用户可以在此处自定义角色的名称。 N/B:实例配置文件和角色名称应该相同。否则,ec2实例将看不到角色。
最后,模板将创建ec2实例安全组和ec2实例。使用资源的user-data属性安装SSM代理。用户可以自定义名称和标签以为其选择合适的选项。另外,请确保使用与AWS账户关联的Centos AMI替换AMI-ID。
执行CloudFormation模板
可以使用CodePipeline部署模板,也可以在CloudFormation控制台上手动部署模板。在本教程中,我们将使用CloudFormation控制台。
在CloudFormation控制台上,单击创建堆栈。
然后,选择使用新模板和资源创建堆栈。使用新资源创建堆栈
接下来选择模板。为此,我们将上传我们创建的模板。
在打开的选项卡上,将要求我们提供堆栈的名称并输入模板参数。输入自定义值的详细信息,然后单击下一步。输入模板参数和堆栈名称
下一个选项卡允许用户为其堆栈添加标签。它还为用户提供了为其堆栈配置策略和通知的选项。完成后,单击下一步。它将为我们提供一个"查看"选项卡,用户可以其中查看他们所做的所有配置的整体视图。如果用户对显示的内容满意,则可以单击创建堆栈。然后,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