이번 글은 사내 CI/CD작업을 하면서 알게 된 점을 적었습니다.
제가 볼려고 알게 된 점을 정리한 글입니다.
EC2 인스턴스 접속할 때 홈 디렉토리가 계정별로 다른이유
알게된 이유는 젠킨스로 작업을 하면서 파일 실행을 내부에서 시켜야하는 경우가 존재했습니다.
그런데 이것을 못읽게 되면서 발생하는 문제였습니다. 파일을 찾을 수 없는것입니다.
그래서 찾아보니 Linux시스템에서 홈디렉터리 설정되어있지않는 유저는 ssh접속시 인자없으면 홈 디렉토리는 /home/ec2-user가 됩니다. 왜냐하면 일반적으로 사용자 계정이 생성될 때, 해당 계정의 홈 디렉토리는 /home/계정이름 과 같이 설정이 되기때문입니다.
따라서 자신의 홈 디렉토리로 이동하게 됩니다. 항상 파일위치만 보다가 홈 디렉토리를 확인안하게 되었는데 이번에 확인하면서 알게되었습니다.
홈 디렉토리 경로는 각 계정의 /etc/passwd파일에 저장되어 있습니다.
파일 소유권한
항상 루트계정으로만 작업을 하다보니 사소한 내용을 놓치게된거 같습니다.
리눅스에서는 파일 생성시 소유자와 권한은 해당 파일을 생성한 사용자에 결정됩니다. 주로 400으로 소유자만 읽을 수 있도록 되어있습니다. 그래서 다른 소유자는 이 파일을 읽을 수 없게되어서 문제가 생기는데 항상 chmod 777이렇게 하는것은 절대로 올바르지 않습니다.
따라서 이러한 권한별로 파일을 관리하고 올바르게 사용하는 것을 알게되었습니다. 주로 계정을 바꾸던가 권한을 축소시키도록 최대한 만드는게 맞다고 느꼈습니다.
제가 헷갈린 부분은 루트면 모든파일에 접근이 가능한 줄 알았습니다.
그래서 사내에서 pem key를 받으면 이를 chmod해주게 되는데 이때 권한을 더 많이 넓히면 오히려 경고가 뜨면서 오류가 생깁니다. 따라서 권한을 최대한 축소해서 관리해야겠다고 느꼈습니다. 400은 소유자만 이것을 읽을 수 있다.
docker-compose, docker compose
아마존은 도커설치시에 도커컴포즈 플러그인을 제공해주지않아서 명시적으로 해줘야함
그런데 아마존 인스턴스가아닌것은 도커컴포즈 플러그인도 제공해준다
그래서 docker compose가 가능한거고 플러그인 설치안되어있으면 docker-compose로 해줘야 한다.
젠킨스 꼼수
일단 젠킨스가 아니면 home/jenkins 디렉터리에 접근을 못한다. 권한이 없기떄문이다. 물론 권한을 바꾸면 되지만 옳지 않다. 그런데 jenkins로 들어가기 귀찮은 경우가 생긴다. 따라서 이런경우 root로 jenkins경로에 디렉터리를 생성해주고 그 권한을
젠킨스 꼼수 jenkins가 생성한 파일이 아니면 권한이 없다 그래서 생성하고 cp를 통해 디렉터리 내용도 복사해주고 소유자를 젠킨스에게 넘기면 된다. sudo chown -R jenkins:jenkins /home/jenkins 소유자만 변경해주는것입니다. 권한이 아닙니다. 그런다면 젠킨스가 파일을 만든거 처럼되어서 파일을 읽을 수 있게 됩니다.
도커 이미지 지우는명령어
도커 이미지가 계속차면 용량부족이 일어납니다. 따라서 매번 이미지를 지워주는게 맞지만 혹시빠르게 백업해야하는 일이 있기때문에
docker rmi -f $(docker images -f "dangling=true" -q)
을 사용하는데 이런것도 버전별로 몇번까지 지워라 하는게 분명있을것입니다. 젠킨스를 이용하는것도 고려해봐야 겠습니다.