Add 51124 remote workspace config workflow
This commit is contained in:
parent
d6a7029b5c
commit
d2ab9b700c
11
README.md
11
README.md
@ -15,6 +15,7 @@
|
||||
- [01_Terminology/](./01_Terminology/)
|
||||
- [02_Architecture/](./02_Architecture/)
|
||||
- [workflow/README.md](./workflow/README.md)
|
||||
- [workflow/51124_remote_workspace_config_operations_workflow.md](./workflow/51124_remote_workspace_config_operations_workflow.md)
|
||||
- [02_Architecture/51123_to_internal_nas_sync_verification_runbook.md](./02_Architecture/51123_to_internal_nas_sync_verification_runbook.md)
|
||||
- [02_Architecture/51123_github_org_repo_bootstrap_runbook.md](./02_Architecture/51123_github_org_repo_bootstrap_runbook.md)
|
||||
- [journey/README.md](./journey/README.md)
|
||||
@ -26,6 +27,7 @@
|
||||
- [02_Architecture/Infrastructure_Project_Structure.md](./02_Architecture/Infrastructure_Project_Structure.md)
|
||||
- [workflow/README.md](./workflow/README.md)
|
||||
- [workflow/51123_nas_remote_operations_workflow.md](./workflow/51123_nas_remote_operations_workflow.md)
|
||||
- [workflow/51124_remote_workspace_config_operations_workflow.md](./workflow/51124_remote_workspace_config_operations_workflow.md)
|
||||
- [02_Architecture/51123_to_internal_nas_sync_verification_runbook.md](./02_Architecture/51123_to_internal_nas_sync_verification_runbook.md)
|
||||
- [02_Architecture/51123_github_org_repo_bootstrap_runbook.md](./02_Architecture/51123_github_org_repo_bootstrap_runbook.md)
|
||||
|
||||
@ -40,7 +42,8 @@
|
||||
7. [02_Architecture/Infrastructure_Project_Structure.md](./02_Architecture/Infrastructure_Project_Structure.md)
|
||||
8. [workflow/README.md](./workflow/README.md)
|
||||
9. [workflow/51123_nas_remote_operations_workflow.md](./workflow/51123_nas_remote_operations_workflow.md)
|
||||
10. [02_Architecture/51123_to_internal_nas_sync_verification_runbook.md](./02_Architecture/51123_to_internal_nas_sync_verification_runbook.md)
|
||||
11. [02_Architecture/51123_github_org_repo_bootstrap_runbook.md](./02_Architecture/51123_github_org_repo_bootstrap_runbook.md)
|
||||
12. [journey/research/260307_value_기준_인프라철학문서_구조초안.md](./journey/research/260307_value_기준_인프라철학문서_구조초안.md)
|
||||
13. [journey/README.md](./journey/README.md)
|
||||
10. [workflow/51124_remote_workspace_config_operations_workflow.md](./workflow/51124_remote_workspace_config_operations_workflow.md)
|
||||
11. [02_Architecture/51123_to_internal_nas_sync_verification_runbook.md](./02_Architecture/51123_to_internal_nas_sync_verification_runbook.md)
|
||||
12. [02_Architecture/51123_github_org_repo_bootstrap_runbook.md](./02_Architecture/51123_github_org_repo_bootstrap_runbook.md)
|
||||
13. [journey/research/260307_value_기준_인프라철학문서_구조초안.md](./journey/research/260307_value_기준_인프라철학문서_구조초안.md)
|
||||
14. [journey/README.md](./journey/README.md)
|
||||
|
||||
186
workflow/51124_remote_workspace_config_operations_workflow.md
Normal file
186
workflow/51124_remote_workspace_config_operations_workflow.md
Normal file
@ -0,0 +1,186 @@
|
||||
---
|
||||
tags: [infra, workflow, 51124, remote-operations, workspace-config, ssh]
|
||||
---
|
||||
|
||||
# 51124 Remote Workspace Config Operations Workflow
|
||||
|
||||
## 상위 원칙
|
||||
- [../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md](../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md)
|
||||
- [../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md](../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md)
|
||||
- [../00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md](../00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md)
|
||||
|
||||
## 관련 문서
|
||||
- [../02_Architecture/Infrastructure_Project_Structure.md](../02_Architecture/Infrastructure_Project_Structure.md)
|
||||
- [../journey/worklog/260310_24서버_robeing_runtime_workspace_config_단일화.md](../journey/worklog/260310_24서버_robeing_runtime_workspace_config_단일화.md)
|
||||
- [../journey/troubleshooting/260309_24서버_우분투터미널불가_네트워크대역오류_python3apt복구.md](../journey/troubleshooting/260309_24서버_우분투터미널불가_네트워크대역오류_python3apt복구.md)
|
||||
|
||||
## 목적
|
||||
|
||||
- 51123에서 51124 서버의 공통 설정 파일 `workspace-config/runtime.env`, `workspace-config/secrets.env`를 원격 점검·수정·검증할 때 같은 순서로 작업합니다.
|
||||
- 사람과 에이전트가 24 서버 접속 기준, 수정 위치, 검증 기준을 같은 문서로 공유합니다.
|
||||
|
||||
## 적용 범위
|
||||
|
||||
- 51124 SSH 접속
|
||||
- 51124 기본 식별 확인
|
||||
- 51124 `workspace-config` 조회
|
||||
- 51124 `runtime.env`, `secrets.env` 값 추가·수정
|
||||
- 51124 권한 및 반영 검증
|
||||
|
||||
## 기본 원칙
|
||||
|
||||
- 먼저 24 서버 정의와 접속 기준을 확인한 뒤 원격 수정에 들어갑니다.
|
||||
- 24 서버 SSH 접속 기준은 `ssh -p 51124 -i ~/.ssh/id_rsa_51123_to_51124 admin@192.168.0.106`입니다.
|
||||
- 민감값은 51124의 `/home/admin/workspace-config/secrets.env`에만 넣고, 프로젝트별 `.env`는 임시 로컬 오버라이드로만 봅니다.
|
||||
- 실제 값 수정 전에는 소스 값과 대상 키 이름을 먼저 분리 확인합니다.
|
||||
- 수정 후에는 값 존재 여부와 파일 권한을 같이 확인합니다.
|
||||
- 서비스 반영이 필요할 때만 후속 `docker compose down && docker compose up -d --build`를 수행합니다.
|
||||
|
||||
## 표준 흐름
|
||||
|
||||
### 1. 23 서버 기준값 확인
|
||||
|
||||
먼저 현재 23 서버에서 기준 정보를 확인합니다.
|
||||
|
||||
```bash
|
||||
hostname
|
||||
grep -n '^HOST_51124=' /home/admin/workspace-config/runtime.env
|
||||
ls -l /home/admin/.ssh/id_rsa_51123_to_51124
|
||||
```
|
||||
|
||||
판단 기준:
|
||||
- 현재 작업 서버는 51123 제어면이다.
|
||||
- `HOST_51124=192.168.0.106`
|
||||
- SSH 키 `/home/admin/.ssh/id_rsa_51123_to_51124` 존재
|
||||
|
||||
### 2. 24 서버 SSH 접속 확인
|
||||
|
||||
```bash
|
||||
ssh -p 51124 -i /home/admin/.ssh/id_rsa_51123_to_51124 admin@192.168.0.106
|
||||
```
|
||||
|
||||
원격 접속 직후 확인:
|
||||
|
||||
```bash
|
||||
hostname
|
||||
whoami
|
||||
pwd
|
||||
```
|
||||
|
||||
판단 기준:
|
||||
- `whoami=admin`
|
||||
- `hostname=robeing-i9`
|
||||
- 홈 경로 기준 `/home/admin` 사용 가능
|
||||
|
||||
### 3. 대상 파일 확인
|
||||
|
||||
```bash
|
||||
ls -l /home/admin/workspace-config
|
||||
sed -n '1,200p' /home/admin/workspace-config/runtime.env
|
||||
sed -n '1,200p' /home/admin/workspace-config/secrets.env
|
||||
```
|
||||
|
||||
판단 기준:
|
||||
- `runtime.env`, `secrets.env` 존재
|
||||
- 민감값은 `secrets.env`에만 둔다
|
||||
- 파일 권한은 `secrets.env` 기준 `600` 유지
|
||||
|
||||
### 4. 소스 값 확인
|
||||
|
||||
값을 가져올 소스 파일에서 키 이름과 실제 값을 확인합니다.
|
||||
|
||||
예시:
|
||||
|
||||
```bash
|
||||
rg -n '^OPENAI_API_KEY=' /home/admin/projectStarsAndI/.env.local
|
||||
```
|
||||
|
||||
판단 기준:
|
||||
- 어떤 키를 옮길지 명확하다.
|
||||
- 따옴표 포함 여부를 먼저 확인한다.
|
||||
- 대상이 민감값이면 응답 본문에 평문으로 다시 쓰지 않는다.
|
||||
|
||||
### 5. 24 서버 `workspace-config` 수정
|
||||
|
||||
#### A. 점검만 할 때
|
||||
|
||||
```bash
|
||||
ssh -p 51124 -i /home/admin/.ssh/id_rsa_51123_to_51124 admin@192.168.0.106 \
|
||||
"grep -n '^OPENAI_API_KEY=' /home/admin/workspace-config/secrets.env"
|
||||
```
|
||||
|
||||
#### B. 키를 추가하거나 교체할 때
|
||||
|
||||
23 서버에서 소스 값을 정제한 뒤 표준입력으로 24 서버에 전달합니다.
|
||||
|
||||
```bash
|
||||
KEY=$(sed -n '1s/^OPENAI_API_KEY=//p' /home/admin/projectStarsAndI/.env.local | head -n1 | tr -d '"')
|
||||
printf '%s\n' "$KEY" | ssh -p 51124 -i /home/admin/.ssh/id_rsa_51123_to_51124 admin@192.168.0.106 \
|
||||
'bash -lc '\''read -r KEY; f=/home/admin/workspace-config/secrets.env; if grep -q "^OPENAI_API_KEY=" "$f"; then sed -i "s|^OPENAI_API_KEY=.*$|OPENAI_API_KEY=$KEY|" "$f"; else printf "\nOPENAI_API_KEY=%s\n" "$KEY" >> "$f"; fi; grep -n "^OPENAI_API_KEY=" "$f"; stat -c "%a %U %G %n" "$f"'\'''
|
||||
```
|
||||
|
||||
판단 기준:
|
||||
- 값 끝에 따옴표가 남지 않아야 한다.
|
||||
- 같은 키가 이미 있으면 교체, 없으면 한 줄 추가
|
||||
- 검증은 `grep -n`, `stat`까지 한 번에 끝낸다.
|
||||
|
||||
### 6. 후속 반영 필요 여부 판단
|
||||
|
||||
`workspace-config`를 읽는 서비스가 이미 실행 중이면, 값만 바꿔도 컨테이너에는 자동 반영되지 않습니다.
|
||||
|
||||
적용이 필요한 경우:
|
||||
|
||||
```bash
|
||||
cd /home/admin/<service>
|
||||
docker compose down && docker compose up -d --build
|
||||
```
|
||||
|
||||
판단 기준:
|
||||
- 단순 파일 주입과 런타임 반영을 구분해서 말한다.
|
||||
- 재기동은 사용자 요청 또는 적용 필요성이 확인된 경우만 수행한다.
|
||||
|
||||
## 자주 쓰는 작업 패턴
|
||||
|
||||
### 패턴 1. 24 서버 접속만 빠르게 확인
|
||||
|
||||
```bash
|
||||
ssh -p 51124 -i /home/admin/.ssh/id_rsa_51123_to_51124 admin@192.168.0.106 'hostname && whoami'
|
||||
```
|
||||
|
||||
### 패턴 2. 24 서버 secrets 키 존재 여부만 확인
|
||||
|
||||
```bash
|
||||
ssh -p 51124 -i /home/admin/.ssh/id_rsa_51123_to_51124 admin@192.168.0.106 \
|
||||
"grep -n '^OPENAI_API_KEY=' /home/admin/workspace-config/secrets.env"
|
||||
```
|
||||
|
||||
### 패턴 3. 23의 소스 값으로 24 secrets 키 교체
|
||||
|
||||
```bash
|
||||
KEY=$(sed -n '1s/^OPENAI_API_KEY=//p' /home/admin/projectStarsAndI/.env.local | head -n1 | tr -d '"')
|
||||
printf '%s\n' "$KEY" | ssh -p 51124 -i /home/admin/.ssh/id_rsa_51123_to_51124 admin@192.168.0.106 \
|
||||
'bash -lc '\''read -r KEY; sed -i "s|^OPENAI_API_KEY=.*$|OPENAI_API_KEY=$KEY|" /home/admin/workspace-config/secrets.env; grep -n "^OPENAI_API_KEY=" /home/admin/workspace-config/secrets.env'\'''
|
||||
```
|
||||
|
||||
## 변경 후 검증
|
||||
|
||||
- 원격 `grep -n`으로 정확한 키가 한 줄만 존재하는지 확인합니다.
|
||||
- `stat -c '%a %U %G %n'`으로 `600 admin xusers` 권한을 확인합니다.
|
||||
- 서비스 적용이 필요하면 재기동 후 컨테이너 env 또는 헬스체크까지 확인합니다.
|
||||
|
||||
## 금지선
|
||||
|
||||
- 24 서버 SSH 포트를 `22`로 가정하지 않습니다.
|
||||
- 23과 24의 `workspace-config` 경로를 같은 서버에서 혼동하지 않습니다.
|
||||
- 민감값을 문서나 일반 응답 본문에 평문으로 남기지 않습니다.
|
||||
- `.env`에만 값을 넣고 `workspace-config` SSOT 반영을 끝났다고 말하지 않습니다.
|
||||
- `docker compose restart`로 끝내지 않습니다.
|
||||
|
||||
## 기록 원칙
|
||||
|
||||
- 반복 점검이나 값 주입이 문제 없이 끝나면 `journey/worklog/`
|
||||
- SSH 실패, 포트 혼선, 권한 오류, 값 반영 불일치가 있으면 `journey/troubleshooting/`
|
||||
|
||||
## 한 줄 결론
|
||||
|
||||
- 51124 공통 설정 원격 작업은 `23 기준 확인 -> 24 SSH 접속 -> workspace-config 확인 -> 값 수정 -> 권한/반영 검증` 순서로 고정합니다.
|
||||
@ -21,6 +21,7 @@ tags: [infra, workflow, docs, operations]
|
||||
|
||||
## 현재 문서
|
||||
- [51123_nas_remote_operations_workflow.md](./51123_nas_remote_operations_workflow.md)
|
||||
- [51124_remote_workspace_config_operations_workflow.md](./51124_remote_workspace_config_operations_workflow.md) — 24 서버 SSH 접속과 workspace-config 원격 수정·검증
|
||||
- [local_developer_workflow.md](./local_developer_workflow.md) — 로컬 PC 워크스페이스 레포 동기화·푸시
|
||||
|
||||
## 관련 문서
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user