2장. 설치

2.1. 사전 요구 사항

Ansible Automation Platform을 설치하고 등록하려면 서비스 작동 방식, 데이터 저장 방법 및 이러한 서비스를 사용하여 개인 정보에 미치는 영향을 포함하여 AWS에 대해 잘 알고 있어야 합니다. 또한 Amazon Web Services 계정을 설정해야 합니다.

AWS Marketplace에서 Ansible Automation Platform을 설정하려면 SSH 키 쌍 또는 Amazon EC2(Elastic Compute Cloud) 쌍도 있어야 합니다. 자세한 내용은 EC2 쌍 생성을 참조하십시오.

Amazon Web Services의 다음 측면에 대한 실무 지식이 있어야합니다.

  • AWS Marketplace에서 솔루션 배포
  • Elastic Compute Cloud (EC2) 인스턴스
  • EBS( Elastic Block Store ) 볼륨
  • EBS( Elastic File Storage )
  • AWS Virtual Private Clouds (VPC)

    • 서브넷
    • 루트 테이블
    • 보안 그룹
    • 로드 밸런서
  • 네트워크 설계
  • 허브 및 스포크 네트워킹 설계
  • VPC 피어링
  • CIDR( Class Inter-Domain Routing ) 블록
  • 전송 라우팅
  • AWS CloudWatch
  • SSH
  • RDS
  • AWS SecretsManager

Amazon Web Services 및 용어에 대한 자세한 내용은 AWS 제품 설명서 를 참조하십시오.

2.1.1. 정책 및 권한

AWS 계정에는 Ansible Automation Platform 배포를 생성하고 관리하려면 다음과 같은 IAM( Identity and Access Management ) 권한과 애플리케이션 아키텍처에 설명된 리소스가 있어야 합니다.

AWS Marketplace에서 Ansible Automation Platform을 배포하려면 AWS 계정에도 라이센스가 필요합니다.

IAM 정책이 이러한 리소스의 배포 및 관리를 제한하는 경우 애플리케이션이 배포되지 않을 수 있습니다.

애플리케이션에는 다음 두 가지 배포 옵션이 있습니다.

  1. 새 VPC를 사용한 배포
  2. 기존 VPC를 사용한 배포

다음 표에는 필요한 IAM 정책 목록이 포함되어 있습니다.

새 VPC를 사용한 배포의 경우기존 VPC를 사용한 배포의 경우
  • 관리 정책

    • AWSMarketplaceFullAccess
  • 관리 정책

    • AWSMarketplaceFullAccess
  • CloudFormation 인라인 IAM 정책

    • cloudformation:DeleteStack
    • cloudformation:CreateUploadBucket
    • cloudformation:CreateStack
    • cloudformation:UpdateStack
    • cloudformation:GetTemplateSummary
    • cloudformation:ListStacks
    • cloudformation:GetStackPolicy
    • cloudformation:DescribeStacks
    • cloudformation:ListStackResources
    • cloudformation:DescribeStackEvents
  • CloudFormation 인라인 IAM 정책

    • cloudformation:DeleteStack
    • cloudformation:CreateUploadBucket
    • cloudformation:CreateStack
    • cloudformation:UpdateStack
    • cloudformation:GetTemplateSummary
    • cloudformation:ListStacks
    • cloudformation:GetStackPolicy
    • cloudformation:DescribeStacks
    • cloudformation:ListStackResources
    • cloudformation:DescribeStackEvents
  • S3 인라인 IAM 정책

    • s3:CreateBucket
    • s3:PutObject
    • s3:GetObject
  • S3 인라인 IAM 정책

    • s3:CreateBucket
    • s3:PutObject
    • s3:GetObject
  • IAM 인라인 IAM 정책

    • iam:DetachRolePolicy
    • iam:RemoveRoleFromInstanceProfile
    • iam:DeleteInstanceProfile
    • iam:DeleteRolePolicy
    • iam:CreateRole
    • iam:PutRolePolicy
    • iam:DeleteRole
    • iam:AttachRolePolicy
    • iam:CreateInstanceProfile
    • iam:AddRoleToInstanceProfile
    • iam:PassRole
    • iam:ListRoles
    • iam:GetRolePolicy
    • iam:TagRole
  • IAM 인라인 IAM 정책

    • iam:DetachRolePolicy
    • iam:RemoveRoleFromInstanceProfile
    • iam:DeleteInstanceProfile
    • iam:DeleteRolePolicy
    • iam:CreateRole
    • iam:PutRolePolicy
    • iam:DeleteRole
    • iam:AttachRolePolicy
    • iam:CreateInstanceProfile
    • iam:AddRoleToInstanceProfile
    • iam:PassRole
    • iam:ListRoles
    • iam:GetRolePolicy
    • iam:TagRole
  • SecretsManager 인라인 IAM 정책

    • secretsmanager:DeleteSecret
    • secretsmanager:GetSecretValue
    • secretsmanager:GetRandomPassword
    • secretsmanager:CreateSecret
    • secretsmanager:TagResource
    • secretsmanager:PutSecretValue
  • SecretsManager 인라인 IAM 정책

    • secretsmanager:DeleteSecret
    • secretsmanager:GetSecretValue
    • secretsmanager:GetRandomPassword
    • secretsmanager:CreateSecret
    • secretsmanager:TagResource
    • secretsmanager:PutSecretValue
  • RDS 인라인 IAM 정책

    • rds:DeleteDBSubnetGroup
    • rds:DeleteDBInstance
    • rds:CreateDBSubnetGroup
    • rds:AddTagsToResource
    • rds:CreateDBInstance
    • rds:DescribeDBSubnetGroups
    • rds:DescribeDBInstances
  • RDS 인라인 IAM 정책

    • rds:DeleteDBSubnetGroup
    • rds:DeleteDBInstance
    • rds:CreateDBSubnetGroup
    • rds:AddTagsToResource
    • rds:CreateDBInstance
    • rds:DescribeDBSubnetGroups
    • rds:DescribeDBInstances
  • Elastic File System 인라인 IAM 정책

    • elasticfilesystem:DeleteFileSystem
    • elasticfilesystem:DeleteMountTarget
    • elasticfilesystem:DeleteAccessPoint
    • elasticfilesystem:CreateFileSystem
    • elasticfilesystem:CreateAccessPoint
    • elasticfilesystem:CreateMountTarget
    • elasticfilesystem:DescribeFileSystems
    • elasticfilesystem:DescribeFileSystemPolicy
    • elasticfilesystem:DescribeBackupPolicy
    • elasticfilesystem:DescribeLifecycleConfiguration
    • elasticfilesystem:DescribeAccessPoints
    • elasticfilesystem:DescribeMountTargets
  • Elastic File System 인라인 IAM 정책

    • elasticfilesystem:DeleteFileSystem
    • elasticfilesystem:DeleteMountTarget
    • elasticfilesystem:DeleteAccessPoint
    • elasticfilesystem:CreateFileSystem
    • elasticfilesystem:CreateAccessPoint
    • elasticfilesystem:CreateMountTarget
    • elasticfilesystem:DescribeFileSystems
    • elasticfilesystem:DescribeFileSystemPolicy
    • elasticfilesystem:DescribeBackupPolicy
    • elasticfilesystem:DescribeLifecycleConfiguration
    • elasticfilesystem:DescribeAccessPoints
    • elasticfilesystem:DescribeMountTargets
  • EC2 인라인 IAM 정책

    • ec2:RevokeSecurityGroupEgress
    • ec2:RevokeSecurityGroupIngress
    • ec2:DescribeKeyPairs
    • ec2:CreateSecurityGroup
    • ec2:DescribeSecurityGroups
    • ec2:DeleteSecurityGroup
    • ec2:CreateTags
    • ec2:AuthorizeSecurityGroupEgress
    • ec2:AuthorizeSecurityGroupIngress
    • ec2:DescribeInstances
    • ec2:CreateVpc
    • ec2:DescribeVpcs
    • ec2:DeleteVpc
    • ec2:CreateSubnet
    • ec2:DeleteSubnet
    • ec2:DescribeSubnets
    • ec2:DeleteSubnetCidrReservation
    • ec2:AssociateSubnetCidrBlock
    • ec2:DisassociateSubnetCidrBlock
    • ec2:CreateSubnetCidrReservation
    • ec2:GetSubnetCidrReservations
    • ec2:DescribeAvailabilityZones
    • ec2:CreateRouteTable
    • ec2:DeleteRouteTable
    • ec2:CreateRoute
    • ec2:DeleteRoute
    • ec2:CreateInternetGateway
    • ec2:DeleteInternetGateway
    • ec2:DescribeInternetGateways
    • ec2:AttachInternetGateway
    • ec2:DetachInternetGateway
    • ec2:AssociateRouteTable
    • ec2:DescribeRouteTables
    • ec2:DisassociateRouteTable
    • ec2:ModifyVpcAttribute
    • ec2:DescribeAccountAttributes
    • ec2:DescribeAddresses
    • ec2:AssociateAddress
    • ec2:DisassociateAddress
    • ec2:DescribeAddressesAttribute
    • ec2:ModifyAddressAttribute
    • ec2:AssociateNatGatewayAddress
    • ec2:DisassociateNatGatewayAddress
    • ec2:CreateNatGateway
    • ec2:DeleteNatGateway
    • ec2:DescribeNatGateways
    • ec2:AllocateAddress
    • ec2:ReleaseAddress
  • EC2 인라인 IAM 정책

    • ec2:RevokeSecurityGroupEgress
    • ec2:RevokeSecurityGroupIngress
    • ec2:DescribeKeyPairs
    • ec2:CreateSecurityGroup
    • ec2:DescribeSecurityGroups
    • ec2:DeleteSecurityGroup
    • ec2:CreateTags
    • ec2:AuthorizeSecurityGroupEgress
    • ec2:AuthorizeSecurityGroupIngress
    • ec2:DescribeInstances
  • 인라인 IAM 정책 자동 스케일링

    • autoscaling:CreateLaunchConfiguration
    • autoscaling:CreateAutoScalingGroup
    • autoscaling:DeleteLaunchConfiguration
    • autoscaling:UpdateAutoScalingGroup
    • autoscaling:DeleteAutoScalingGroup
    • autoscaling:DescribeAutoScalingGroups
    • autoscaling:DescribeLaunchConfigurations
    • autoscaling:DescribeScalingActivities
    • autoscaling:DescribeAutoScalingInstances
  • 인라인 IAM 정책 자동 스케일링

    • autoscaling:CreateLaunchConfiguration
    • autoscaling:CreateAutoScalingGroup
    • autoscaling:DeleteLaunchConfiguration
    • autoscaling:UpdateAutoScalingGroup
    • autoscaling:DeleteAutoScalingGroup
    • autoscaling:DescribeAutoScalingGroups
    • autoscaling:DescribeLaunchConfigurations
    • autoscaling:DescribeScalingActivities
    • autoscaling:DescribeAutoScalingInstances
  • elasticloadbalancing inline IAM 정책

    • elasticloadbalancing:CreateTargetGroup
    • elasticloadbalancing:ModifyTargetGroupAttributes
    • elasticloadbalancing:DeleteTargetGroup
    • elasticloadbalancing:AddTags
    • elasticloadbalancing:CreateLoadBalancer
    • elasticloadbalancing:ModifyLoadBalancerAttributes
    • elasticloadbalancing:DescribeTargetGroups
    • elasticloadbalancing:DescribeListeners
    • elasticloadbalancing:CreateListener
    • elasticloadbalancing:DeleteListener
    • elasticloadbalancingv2:DeleteLoadBalancer
    • elasticloadbalancingv2:DescribeLoadBalancers
  • elasticloadbalancing inline IAM 정책

    • elasticloadbalancing:CreateTargetGroup
    • elasticloadbalancing:ModifyTargetGroupAttributes
    • elasticloadbalancing:DeleteTargetGroup
    • elasticloadbalancing:AddTags
    • elasticloadbalancing:CreateLoadBalancer
    • elasticloadbalancing:ModifyLoadBalancerAttributes
    • elasticloadbalancing:DescribeTargetGroups
    • elasticloadbalancing:DescribeListeners
    • elasticloadbalancing:CreateListener
    • elasticloadbalancing:DeleteListener
    • elasticloadbalancingv2:DeleteLoadBalancer
    • elasticloadbalancingv2:DescribeLoadBalancers
  • SNS 인라인 IAM 정책

    • sns:ListTopics
  • SNS 인라인 IAM 정책

    • sns:ListTopics

2.1.2. EC2 쌍 만들기

AWS Marketplace에서 Ansible Automation Platform을 설정하려면 SSH 키 쌍이 필요합니다. 기존 키 쌍을 사용하거나 새 키 쌍을 만들 수 있습니다. 기존 키 쌍이 있는 경우 이 단계를 건너뛸 수 있습니다.

절차

  1. AWS 콘솔에서 EC2 로 이동합니다.
  2. 네트워크 및 보안 섹션에서 키 쌍을 클릭합니다.
  3. 키 쌍 만들기를 클릭합니다.
  4. 입력 양식의 필드를 작성합니다.

    • ED25519를 키 쌍 유형으로 사용합니다.
    • PEM을 키 파일 형식으로 사용합니다.
  5. 키 쌍 만들기를 클릭합니다.
  6. 개인 키는 /downloads 폴더에 자동으로 다운로드됩니다. 적절한 로컬 파일 권한을 적용하여 키 파일을 보호합니다.