はじめに
こんばんは。
またまた備忘録です。
しかも今回はちょっとした小ネタレベルです。
関わったプロジェクトで、踏み台サーバを経由して本番サーバへデプロイしたいということになり、こんな感じで良いかな?という、以下の方法でまとまりました。
本題
1. CircleCIにPrivate Keyを登録する
CircleCI -> Settings -> Corporation -> ProjectのSSH Permissionsのページで、private keyを登録します。
2. CircleCI用に使用するssh configファイルを作成
# vi /path/to/project/.circleci/circleci_ssh_config Host bastion_host HostName ************ User ************ IdentityFile /home/circleci/.ssh/id_rsa_{sshkeyを登録した際に表示されるfingerprintsで、「:」を抜いたもの} StrictHostKeyChecking no UserKnownHostsFile=/dev/null Host prod_server HostName ************ User ************ IdentityFile /home/circleci/.ssh/id_rsa_{sshkeyを登録した際に表示されるfingerprintsで、「:」を抜いたもの} ProxyCommand ssh -W %h:%p bastion_host StrictHostKeyChecking no UserKnownHostsFile=/dev/null
3. CircleCIのconfig.ymlにsshkeyとsshconfigを登録する
executors: deploy: working_directory: ~/workspace commands: # sshKeyをCircleCIのconfigに設定する deploy_ssh_setting: steps: - add_ssh_keys: fingerprints: - "{sshkeyを登録した際に表示されるfingerprints}" - run: cat ~/workspace/.circleci/circleci_ssh_config >> ~/.ssh/config jobs: deploy: executor: name: deploy steps: - checkout - deploy_ssh_setting
これで一応狙ったことは出来ます。
以前あげたLaravel-Deployerでのデプロイでまさにこの方法でbackend_serverへデプロイしてます。
終わり
もっとスマートなやり方があればぜひ教えてくださいm( )m
小さなネタになりましたが、現場からは以上です。