GitLab CI - Docker Runner

安裝 GitLab Runner: https://docs.gitlab.com/runner/install/docker.html

docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest

for Mac

docker run -d --name gitlab-runner --restart always \
-v /Users/Shared/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest

註冊 Runner: https://docs.gitlab.com/runner/register/index.html#docker

docker exec -it gitlab-runner gitlab-runner register -n \
--url https://gitlab.com/ \
--registration-token REGISTRATION_TOKEN \
--executor docker \
--description "My Docker Runner" \
--docker-image "docker:18.02-git" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-privileged

在 Amazon Linux 安裝 SSM Agent

安裝 SSM Agent

mkdir /tmp/ssm
cd /tmp/ssm
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo status amazon-ssm-agent

關閉 requiretty

如果要讓 System Manager 能夠使用 sudo 權限的話,就必須關閉 requiretty,

不然會出現 sudo: sorry, you must have a tty to run sudo 的錯誤

sudo chmod 600 /etc/sudoers
sudo vi /etc/sudoers

註解掉 requiretty

# Defaults    requiretty

Reference

透過 IAM 管理用戶存取 RDS

藉由 IAM 發放權限給某些使用者,可以對 RDS 做某些程度的操作。除了能夠更快速地發放、收回權限,對於資料安全性也將更有保障。

以下將介紹透過 IAM 管理用戶存取 RDS 的幾項注意事項:

  1. 使用 Signature Version 4 Signing Process,比用戶密碼更加安全。
  2. Token只有 15 分鐘的有效期限,不需要再進行密碼重置。
  3. 必須使用 SSL 連接。
  4. 能夠使用 IAM Auth 的 RDS:
    • MySQL 5.6.34 以上,除了 db.t1.micro, db.m1.small
    • MySQL 5.7.16 以上,除了 db.t1.micro, db.m1.small
    • Amazon Aurora 1.10 以上,除了 db.t2.small

Read More

Dockerize Play Framefork Application and Deploy to GitLab Registry

為了將 Play Framefork 打包成 Docker image,這邊會使用到 sbt-native-packager,以下附上懶人包。

Code

build.sbt

maintainer in Docker := "Rammus Xu"
version in Docker := "latest"

dockerExposedPorts := Seq(9000, 9443)
dockerRepository := Some("registry.gitlab.com/my-gitlab-project")

// To resolve docker:stage not build swagger asset
(stage in Docker) <<= (stage in Docker).dependsOn(swagger)

Read More