質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

5回答

1658閲覧

PHP Deployerのデプロイ時のGitアカウントの入力を省略したい

ucan-lab

総合スコア888

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/08/04 10:46

###前提・実現したいこと

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はプライベートリポジトリを使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

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へアカウント入力を省略してアクセスするにはどのような方法があるかということ(どのデプロイツールを使っても同じ)だと思いますので。

投稿2017/08/07 03:33

xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ucan-lab

2017/08/07 04:17

回答ありがとうございます。 Gitでサーバーの認証情報は管理したくないのと、 本番サーバー情報になるべく個人のGit認証情報を置きたくない(自分以外も触るので) デプロイ元の仮想環境内の設定ファイル `~/.ssh/config` で完結できれば理想です。 GitHubのリンクありがとうございます。色々試してみようと思います。
guest

0

方法は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

投稿2017/08/05 03:20

編集2017/08/07 05:57
popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ucan-lab

2017/08/07 04:16

回答ありがとうございます。 1つ目の方法でやりたいと思っています。 複数人でデプロイする場合は個々にSSH key登録してもらう形でしょうか。 Gitリポジトリ設定のデプロイキーに鍵を登録すれば使い回せたりしますでしょうか? (この辺りの知識が疎くて...)
popobot

2017/08/07 06:58 編集

普段、開発メンバーの方々は、GitHubには1つ目の方法を使ってSSHでアクセスされているのでしょうか? であれば、その普段使っているSSH Keyをデプロイ時にも使えると思います。 それが、追記に記載したforwardAgent(true)を使う方法です。実際にやってみましたが、うまく動きました。 もし各自のSSHキーがないなら、デプロイするユーザのSSHキーをデプロイキーに設定すればよさそうですね
guest

0

自己解決

半年くらい経ちましたが...
最終的には次のように解消しました。

  1. 各ユーザーに公開鍵を登録してもらう。

https://github.com/settings/keys

  1. deployerはssh接続でデプロイする。

  2. 仮想環境(vagrant)に秘密鍵を登録する。

  3. 仮想環境でssh-agentを起動する。

  4. 仮想環境でssh-addして秘密鍵を追加する。

4, 5が仮想環境を起動するたびに必要でした。
.bashrcに追記して毎回実行されるようにして運用しました。
これでデプロイ時にパスワードの入力は求められなくなりました。

ただ、半年運用していてデプロイのたびにvagrantを起動するのが煩わしくなり
Macに直接deployerをインストールして運用する形に落ち着きました。

ご回答頂いた方ありがとうざいました。

投稿2018/01/26 02:24

ucan-lab

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

.ssh/ssh_config に認証情報記述したら行けるのでは。
参考サイト

投稿2017/08/04 13:55

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ucan-lab

2017/08/07 04:16

回答ありがとうございます 色々試してみようと思います。
guest

0

使ったことないので想像ですが、https://deployer.org/docs/hosts
の通りに環境を作ったのだとしたら、

->addSshOption('UserKnownHostsFile', '/dev/null')

の /dev/null を ~/.ssh/known_hosts みたいに通常のやり方に
したらうまくいかないでしょうか。

投稿2017/08/04 11:52

hotta

総合スコア1613

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ucan-lab

2017/08/07 04:16

回答ありがとうございます。 警告メッセージ...の問題ではなさそうですが何度もメッセージが出たら設定してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問