GitHub のセットアップ
10 minutes前提条件
開始する前に、以下を確認します:
- リポジトリアクセス権を持つGitHubアカウント
- Ubuntu EC2インスタンスを持つAWS VPC
- ターゲットホストへの認証用SSHキーペア(PEMファイル)
- AppDynamics Smart Agentパッケージ
- SSHアクセス可能なターゲットUbuntu EC2インスタンス
リポジトリのフォークまたはクローン
まず、GitHub Actionsラボリポジトリへのアクセスを取得します。
リポジトリ URL: https://github.com/chambear2809/github-actions-lab
セルフホストランナーの設定
セルフホストランナーは、ターゲットEC2インスタンスと同じAWS VPCにデプロイする必要があります。
EC2 インスタンスへのランナーのインストール
VPC内で EC2 インスタンスを起動 します(UbuntuまたはAmazon Linux 2)
フォークしたリポジトリの ランナー設定に移動 します:
ランナーインスタンスに SSH 接続 し、インストールコマンドを実行します:
ランナーステータスの確認
ランナーが以下の場所で “Idle”(緑色)と表示されていることを確認します:
ヒント
ランナーはワークフロージョブを受け取るためにオンラインかつアイドル状態を維持する必要があります。オフラインと表示される場合は、サービスステータスを確認します: sudo ./svc.sh status
GitHub Secrets の設定
Settings → Secrets and variables → Actions → Secrets に移動します。
SSH 秘密鍵の Secret
このSecretには、ターゲットホストにアクセスするためのSSH秘密鍵が含まれます。
- “New repository secret” をクリックします
- Name:
SSH_PRIVATE_KEY - Value: PEMファイルの内容を貼り付けます
フォーマット例:
- “Add secret” をクリックします
重要
SSHキーをリポジトリにコミットしないでください。機密性の高い認証情報には必ずGitHub Secretsを使用します。
GitHub Variables の設定
Settings → Secrets and variables → Actions → Variables に移動します。
デプロイホスト Variable(必須)
このVariableには、Smart Agentをデプロイするすべてのターゲットホストのリストが含まれます。
- “New repository variable” をクリックします
- Name:
DEPLOYMENT_HOSTS - Value: ターゲットホストのIPを入力します(1行に1つ)
フォーマット要件:
- 1行に1つのIP
- カンマなし
- スペースなし
- 余分な文字なし
- Unix改行コード(LF、CRLFではなく)を使用
- “Add variable” をクリックします
オプションの Variables
これらのVariableはオプションで、Smart Agentサービスのユーザー/グループ設定に使用されます:
SMARTAGENT_USER
- “New repository variable” をクリックします
- Name:
SMARTAGENT_USER - Value: 例:
appdynamics - “Add variable” をクリックします
SMARTAGENT_GROUP
- “New repository variable” をクリックします
- Name:
SMARTAGENT_GROUP - Value: 例:
appdynamics - “Add variable” をクリックします
ネットワーク設定
同じVPCおよびセキュリティグループ内のすべてのEC2インスタンスを使用するラボセットアップの場合:
セキュリティグループルール
インバウンドルール:
- 同じセキュリティグループからのSSH(ポート22)(ソース: 同じSG)
アウトバウンドルール:
- 0.0.0.0/0へのHTTPS(ポート443)(GitHub APIアクセス用)
- 同じセキュリティグループへのSSH(ポート22)(ターゲットアクセス用)
ネットワークのベストプラクティス
DEPLOYMENT_HOSTSにはプライベートIPアドレス(172.31.x.x)を使用- ランナーとターゲットを同じセキュリティグループに配置
- ターゲットホストにパブリックIPは不要
- ランナーはプライベートネットワーク経由で通信
- GitHubポーリング用のアウトバウンドHTTPSが必要
設定の確認
ワークフローを実行する前に、セットアップを確認します:
1. ランナーステータスの確認
- Settings → Actions → Runners に移動します
- ランナーが「Idle」(緑色)と表示されていることを確認します
- 「Last seen」のタイムスタンプが最近であることを確認します
2. SSH 接続のテスト
ランナーインスタンスからターゲットホストにSSH接続します:
成功すると、ターゲットホストのシェルプロンプトが表示されます。
3. Secrets と Variables の確認
- Settings → Secrets and variables → Actions に移動します
- Secretsタブに
SSH_PRIVATE_KEYが表示されていることを確認します - Variablesタブに
DEPLOYMENT_HOSTSが表示されていることを確認します
4. リポジトリアクセスの確認
ランナーがリポジトリにアクセスできることを確認します:
「Listening for Jobs」と表示されます。
よくある問題のトラブルシューティング
ランナーがジョブを取得しない
症状: ワークフローが「queued」状態のまま
解決策:
- ランナーステータスを確認します:
sudo systemctl status actions.runner.* - ランナーを再起動します:
sudo ./svc.sh restart - GitHubへのアウトバウンドHTTPS(443)接続を確認します
SSH 接続の失敗
症状: ワークフローが「Permission denied」または「Connection refused」で失敗
解決策:
ホスト名に無効な文字
症状: エラー「hostname contains invalid characters」
解決策:
DEPLOYMENT_HOSTSVariableを編集します- 末尾にスペースがないことを確認します
- Unix改行コード(LF、CRLFではなく)を使用します
- 1行に1つのIP、余分な文字なし
Secrets が見つからない
症状: エラー「Secret SSH_PRIVATE_KEY not found」
解決策:
- Secret名が正確に一致していることを確認します:
SSH_PRIVATE_KEY - SecretがリポジトリSecrets(環境Secretsではなく)にあることを確認します
- リポジトリの管理者アクセス権があることを確認します
セキュリティのベストプラクティス
安全な運用のために、以下のベストプラクティスに従います:
- すべての秘密鍵にGitHub Secretsを使用
- SSHキーを定期的にローテーション
- ランナーをプライベートVPCサブネットに配置
- ランナーのセキュリティグループを最小限のアクセスに制限
- ランナーソフトウェアを定期的にアップデート
- ブランチ保護ルールを有効化
- 環境ごとに別のキーを使用
- リポジトリアクセスの監査ログを有効化
次のステップ
GitHubの設定とランナーのセットアップが完了したら、利用可能なワークフローを確認し、最初のデプロイを実行しましょう。