사용자 도구

사이트 도구


ci:jenkins:aws_plugin

Jenkins AWS Plugins

AWS Credentials Plugin

EC2 Fleet

ECS/Fargate

ec2 plugin

  • Jenkins Master 에대한 IAM Role : EC2FullAccess 가 있어야 Slave Agent EC2를 생성할 수 있다. 또한, iam:PassRole도 필요한데, 아래부분 참조.
  • Security Group, Subnet : Slave EC2에 지정할 SG, Subnet. 이름이 아니라 ID로 입력해야한다. 쉼표로 구분. 당연히 Master 에서 SSH 접근 가능한 SG와 Subnet 이어야 한다.
  • EC2 Key Pair's Private Key(Agent EC2 접속 SSH Private Key): AWS 에 등록된 pem private Key 를 Jenkins Credential 로 등록하면, master 가 agent EC2 생성시 자동으로 private key 에 맞는 키로 등록해준다.
  • Agent 용 AMI 는 JDK 가 깔려있고 PATH가 걸려있는게 좋다. 안그러면 JDK 설치까지도 EC2 Plugin 이 수행한다.
  • Remote FS root : Amazon Linux 는 /home/ec2-user. 배포판마다 적절히 지정
  • Remote user : Amazon linux 는 ec2-user. 배포판마다 적절히 지정.
  • Minimum number of instances : 최소 유지 agent 갯수
  • Minimum number of spare instances : 사용중인 agent 들에 더해서 추가로 상시 유지할 인스턴스. 즉 최소유지가 1개이고 최소 spare가 2개이면 첫번째 agent 노드에 job 이돌면 spare 2개가 더 뜨게된다.
  • Instance Cap : 최대 Agent 인스턴스 갯수. 무한정 agent 가 늘어나는 것을 방지. 지정 AMI에만 해당하는 설정임.
  • Launch Timeout in seconds : SSH 접속 최대 대기시간(초), 빈값,0 이면 무한정 대기
  • Host Key Verification Strategy : offno. 신규 AMI들은 check-new-hard로 하는게 좋음(신규 AMI는 콘솔에 host key를 출력함). 단, check-new-hard, check-new-soft는 EC2 인스턴스의 콘솔이 뜨면 콘솔에 뜬 값과 SSH키 값을 대조한다고 함. 그래서 콘솔 뜨기까지 launch timeout 을 길게 잡아야 한다. 뜨는데 오래걸림.
  • IAM Instance Profile : Slave Agent EC2 인스턴스에 IAM Role을 지정하려면 IAM instance profile ARN을 지정해줘야한다.
    • Slave EC2에 지정되길 원하는 IAM Role 의 Summary 화면에서 Instance Profile ARNs에 있는 arn:aws:iam:<userid>:instance-profile/<role-name> 형태의 값을 해당 설정에 넣어주면된다.

  • 또한 Master 자체에 iam:PassRole 이 있어야 한다. Jenkins Master IAM Role 에 다음 정책추가필요.
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iam:GetRole",
            "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::<account-id>:role/원하는Role" # 여기는 Role
    }]
}
# 혹시 필요하면, "iam:ListInstanceProfilesForRole"도 함께.

EC2 Plugin 참조

ElasticBeansTalk Deployment

  • AWS BeansTalk Publisher Plugin : 이미 배포됐던 것을 다른 환경에 재배포하거나, Workspace에 있는 압축 파일을 S3 에 업로드하고 ElasticBeansTalk 배포를 자동으로 호출함. 이게 더 나은 듯.
  • AWS Elastic Beanstalk Deployment : Workspace에 있는 파일을 압축하여 (혹은 압축된 파일을) S3 에 버전 붙여 업로드하고 ElasticBeansTalk 배포를 자동으로 호출하는 것까지 됨.

참조

ci/jenkins/aws_plugin.txt · 마지막으로 수정됨: 2022/07/07 10:38 저자 kwon37xi