PHP Deployerのデプロイ時のGitアカウントの入力を省略したい
解決済
回答 5
投稿
- 評価
- クリップ 1
- VIEW 3,309
前提・実現したいこと
https://deployer.org
PHPのデプロイツール「Deployer」の導入を検討しています。
目的としては、今までデプロイ先にsshして、ソースを更新して、ベンダーを更新して、アセットをビルドして...だったのを仮想開発環境内でコマンド1つでデプロイできるようにしたいです。
発生している問題・エラーメッセージ
デプロイ自体は問題なくできているのですが、
deploy:update_code
タスクの実行時に毎回GitHubアカウントの入力を求められます。
➤ Executing task deploy:update_code
Failed to add the host to the list of known hosts (dev/null).
Username for 'https://github.com':
アカウントの入力を省略できれば、本当にコマンド1つでデプロイが完了するので嬉しいです。
試したこと
リポジトリの設定で Deploy keys
という項目があったので、公開鍵を突っ込んで見たのですが特に変化もなく。。
補足情報(言語/FW/ツール等のバージョンなど)
- Mac内にVagrantでCentOS7の環境を作っています。
- deployerはCentOS内でコマンドを実行しています。
- デプロイ先はAWS EC2サーバーにデプロイしてます。
- GitHubはプライベートリポジトリを使っています。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+3
GitHubが公式に案内しているのはこちらの4つかと思います。
結論としては、質問者さんの要件に照らし合わせて、上記の中から選択することを推奨します。
質問者さんも使用されているHTTPSアクセスでも、以下のようにすれば解決できると思いますが、セキュリティ的によろしくないです。
https://<username>:<password>@github.com/deployer/repo.git
以下のOAuthトークンによるHTTPSアクセスも、セキュリティ的によろしくないです。今回の場合、トークンは基本的にパスワードと同等なので。
一応手順としてはこちらを参考にトークンを作成し、以下のいずれかでアクセスします。
https://<token>@github.com/deployer/repo.git
または
https://<token>:x-oauth-basic@github.com/deployer/repo.git
また、上記の2つともクローン時に.git/configに平文でURLを書き出しされたと思います。
なので、採用はおすすめしません。
あと、解決されましたら、他の人のために「GitHub」タグを追加されたほうがよろしいかと思います。
Deployerは単純にgit cloneしているだけで、本質はGitHubへアカウント入力を省略してアクセスするにはどのような方法があるかということ(どのデプロイツールを使っても同じ)だと思いますので。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+2
方法は2つあると思います。
1つ目は、GitHubにSSHキーを使って認証する方法です。
SSH鍵の登録方法などは、SSHの公開鍵を作成しGithubに登録する手順が参考になるかと
※SSHキーのパスフレーズはなしにしておくといいと思います。
※deployerのrepositoryの設定はgit@github.com:xxx
にします。
2つ目は、GitHubにPersonal access tokensを使って認証する方法です。
トークンの作成方法は、Github で OAuth Token を利用して clone/submodule するとかが参考になるかと
※deployerのrepositoryの設定は、https://<oauth-token>:x-oauth-basic@github.com/xxx
にします
ちなみに、自分もdeployerを使っており、2つ目の方法でやっています。セキュリティ的には1つ目の方がよいかもしれません。
追記
deployerを実行するユーザがGitHubへのSSH秘密鍵を持っているなら、deployerのhost設定でforwardAgent(true)
とすれば、SSHの鍵がデプロイユーザに渡されてそのままGitHubの認証に使うこともできます。
https://deployer.org/docs/hosts
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
.ssh/ssh_config に認証情報記述したら行けるのでは。
参考サイト
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
check解決した方法
-1
半年くらい経ちましたが...
最終的には次のように解消しました。
各ユーザーに公開鍵を登録してもらう。
https://github.com/settings/keysdeployerはssh接続でデプロイする。
仮想環境(vagrant)に秘密鍵を登録する。
仮想環境でssh-agentを起動する。
仮想環境でssh-addして秘密鍵を追加する。
4, 5が仮想環境を起動するたびに必要でした。
.bashrcに追記して毎回実行されるようにして運用しました。
これでデプロイ時にパスワードの入力は求められなくなりました。
ただ、半年運用していてデプロイのたびにvagrantを起動するのが煩わしくなり
Macに直接deployerをインストールして運用する形に落ち着きました。
ご回答頂いた方ありがとうざいました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
-1
使ったことないので想像ですが、https://deployer.org/docs/hosts
の通りに環境を作ったのだとしたら、
->addSshOption('UserKnownHostsFile', '/dev/null')
の /dev/null を ~/.ssh/known_hosts みたいに通常のやり方に
したらうまくいかないでしょうか。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.20%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/08/07 13:17
Gitでサーバーの認証情報は管理したくないのと、
本番サーバー情報になるべく個人のGit認証情報を置きたくない(自分以外も触るので)
デプロイ元の仮想環境内の設定ファイル `~/.ssh/config` で完結できれば理想です。
GitHubのリンクありがとうございます。色々試してみようと思います。