lightsail deploy on github actions

x·2023년 1월 22일
0

dial tcp :: connect: connection refused

github action 돌릴 때 DB의 HOST와 ssh 접속 시 HOST 이름이 겹쳐서 문제가 있었다.

*** 이런 식으로 나와서 어떤 변수에 문제가 있는지 헷갈렸다.

DB HOST 환경변수 이름을 DB_HOST로 변경했다.

apple-boy꺼 썼는데 설정이 잘 안돼서 fifsky 껄로 바꿈 https://github.com/fifsky/ssh-action

또 다른 문제
ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
https://github.com/appleboy/ssh-action#if-you-are-using-openssh
https://github.com/appleboy/ssh-action/issues/6

openssh key는 id_ed25519 를 환경변수로 넣고 github profile에 ssh키를 id_ed25519.pub 공개키로 넣어야 하나?
lightsail 인스턴스에 ssh로 접속해서 키를 만들고 github action key에 넣어줌

Permissions 0644 for 'xx.pem' are too open. -> chmod 600 xx.pem

~~Permission denied (publickey) -> vi /etc/ssh/sshd_config -> PasswordAuthentication yes로 수정
~~
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes=+ssh-rsa
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
/etc/ssh/sshd_config 에 추가.

Put the public key in .ssh/authorized_keys2. cat id_ed25519.pub >> authorized_keys2
Change the permissions of .ssh to 700. chmod 700 .ssh
Change the permissions of .ssh/authorized_keys2 to 640. chmod 640 authorized_keys2

LightsailDefaultKey-ap-northeast-2.pem ssh 파일에 있는 값 등록해보기? -> 안됨

ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

인증 관련 로그 확인
sudo tail -f /var/log/auth.log

github profile setting에 이거 써야하나?
cat /etc/ssh/lightsail_instance_ca.pub -> 기존에 있던거 하면 잘 안되는 것 같음..

sudo service sshd restart 명령어로 설정 적용

~/.ssh/authorized_keys 파일에 새로 만든 id_ed25519.pub 값 넣어주고 github profile -> setting -> ssh and gpg keys 에도 등록해야 함. SSH_PRIVATE_KEY_DEV 키는 id_ed25519 넣어줘야 함
key 줄바꿈 안되면 엔터 쳐서 이런 모양 만들어야함.

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
deploy:
  name: Deploying
  needs: [ test_project ]
  runs-on: ubuntu-latest
  steps:
    - name: Deploying Application
      uses: appleboy/ssh-action@master
      with:
        host: 3.37.34.129
        username: ubuntu
        key: ${{ secrets.SSH_PRIVATE_KEY_DEV }}
        port: 22
        script: |
          whoami
          cd ~/app/.scripts
          ./docker-deploy-dev.sh

또 다른 문제 발생
can't set password and key at the same time
이번엔 DB에서 쓰이는 PASSWORD 환경변수가 ssh에서 접속에 쓰이는 이름과 같아서 key와 password를 함께 인식하는 문제였다
DB PASSWORD 이름을 DB_PASSWORD로 변경함

Pseudo-terminal will not be allocated because stdin is not a terminal.
args: "-tt"
https://github.com/fifsky/ssh-action/issues/4

./docker-deploy-dev.sh: Permission denied
chmod 600으로 파일 권한 수정? git clone {repo} . 이후 docker-deploy-dev.sh 파일을 생성해야함.

docker-deploy-dev.sh 작성
ssh로 인스턴스 접속해서 sudo bash .scripts/docker-deploy-dev.sh로 실행해보기

접속
{고정IP주소}:8000/admin/

db 컨테이너 접속
sudo docker exec -it core_db bash
로그인
psql -U postgres
db 지정
\c {db명}
테이블 조회
\dt

docker 명령어 permission denied
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/prune": dial unix /var/run/docker.sock: connect: permission denied
사용자를 도커 그룹에 추가.
sudo groupadd docker
sudo usermod -a -G docker $USER
newgrp docker

모든 컨테이너 중지
docker stop $(docker ps -a -q)

모든 컨테이너 삭제
docker rm -f $(docker ps -aq)

모든 이미지 삭제
docker rmi $(docker images -q)

사용하지 않는 이미지 삭제
prune(가지치기)은 dangling(태그가 없는) 이미지를 삭제함. 같은 이름으로 이미지를 빌드할 때 기존 이미지가 언태깅되면서 dangling 상태가 됨
docker image prune

모든 볼륨 삭제
docker volume rm $(docker volume ls -q)

안쓰는 거 한번에 싹 삭제
docker system prune
Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes.

0개의 댓글