Ssh prep for pipeline

From UVOO Tech Wiki
Revision as of 19:16, 29 August 2021 by Busk (talk | contribs) (Created page with "Example of Using SSH for simple deployment in pipeline # Code main.sh ``` #!/usr/bin/env bash set -ex shopt -s expand_aliases prepSsh(){ ssh_host=$SSH_HOST ssh_user=$SS...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Example of Using SSH for simple deployment in pipeline

Code

main.sh

#!/usr/bin/env bash
set -ex
shopt -s expand_aliases

prepSsh(){
  ssh_host=$SSH_HOST
  ssh_user=$SSH_USER
  ssh_conn=$SSH_USER@$SSH_HOST
  ssh_id_file=.ssh/id
  mkdir -p .ssh
  echo "$SSH_KNOWN_HOSTS" > .ssh/known_hosts
  echo "$SSH_SECRET_KEY" > $ssh_id_file
  sudo chmod 600 $ssh_id_file
  ssh_opts="-o StrictHostKeyChecking=yes \
    -o UserKnownHostsFile=.ssh/known_hosts \
    -o ConnectionAttempts=10"
  ssh_cmd="ssh -p 22 -i $ssh_id_file ${ssh_opts}"
  alias ssh="${ssh_cmd}"
  alias scp="scp -P 22 -i $ssh_id_file ${ssh_opts}"
  alias rsync="rsync -avz --rsync-path=\"sudo rsync\" -e \"${ssh_cmd}\""
}
prepSsh


testConn(){
  ssh $ssh_conn whoami
  ssh $ssh_conn hostname
  exit
}#!/usr/bin/env bash
set -ex
shopt -s expand_aliases

prepSsh(){
  ssh_host=$SSH_HOST
  ssh_user=$SSH_USER
  ssh_conn=$SSH_USER@$SSH_HOST
  ssh_id_file=.ssh/id
  mkdir -p .ssh
  echo "$SSH_KNOWN_HOSTS" > .ssh/known_hosts
  echo "$SSH_SECRET_KEY" > $ssh_id_file
  sudo chmod 600 $ssh_id_file
  ssh_opts="-o StrictHostKeyChecking=yes \
    -o UserKnownHostsFile=.ssh/known_hosts \
    -o ConnectionAttempts=10"
  ssh_cmd="ssh -p 22 -i $ssh_id_file ${ssh_opts}"
  alias ssh="${ssh_cmd}"
  alias scp="scp -P 22 -i $ssh_id_file ${ssh_opts}"
  alias rsync="rsync -avz --rsync-path=\"sudo rsync\" -e \"${ssh_cmd}\""
}
prepSsh


testConn(){
  ssh $ssh_conn whoami
  ssh $ssh_conn hostname
  exit
}
#!/usr/bin/env bash
set -ex
shopt -s expand_aliases

prepSsh(){
  ssh_host=$SSH_HOST
  ssh_user=$SSH_USER
  ssh_conn=$SSH_USER@$SSH_HOST
  ssh_id_file=.ssh/id
  mkdir -p .ssh
  echo "$SSH_KNOWN_HOSTS" > .ssh/known_hosts
  echo "$SSH_SECRET_KEY" > $ssh_id_file
  sudo chmod 600 $ssh_id_file
  ssh_opts="-o StrictHostKeyChecking=yes \
    -o UserKnownHostsFile=.ssh/known_hosts \
    -o ConnectionAttempts=10"
  ssh_cmd="ssh -p 22 -i $ssh_id_file ${ssh_opts}"
  alias ssh="${ssh_cmd}"
  alias scp="scp -P 22 -i $ssh_id_file ${ssh_opts}"
  alias rsync="rsync -avz --rsync-path=\"sudo rsync\" -e \"${ssh_cmd}\""
}
prepSsh


testConn(){
  ssh $ssh_conn whoami
  ssh $ssh_conn hostname
  exit
}

deploy(){
  scp -r files $ssh_conn:~/files
  ssh $ssh_conn 'bash -s' < updateMyapp.sh
}


main(){
  testConn
  deploy
}

Github Actions

.github/workflows/main.yaml

name: Manage k8s ADC/LB
on:
  push:
    branches: [ main ]
jobs:
  DeployApp:
    runs-on: [self-hosted]

    steps:
      - uses: actions/checkout@v2
      - name: Run main.sh
        env:
          SSH_USER: ${{secrets.SSH_USER}}
          SSH_HOST: ${{secrets.SSH_HOST}}
          SSH_SECRET_KEY: ${{secrets.SSH_SECRET_KEY}}
          SSH_KNOWN_HOSTS: ${{secrets.SSH_KNOWN_HOSTS}}
        shell: bash
        run: ./main.sh

vim .env

export SSH_USER=
export SSH_HOST=
export SSH_SECRET_KEY=
export SSH_KNOWN_HOSTS=

Source .env to set environmental variables.

. .env

Run main.sh

main.sh