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/)
|
- [01_Terminology/](./01_Terminology/)
|
||||||
- [02_Architecture/](./02_Architecture/)
|
- [02_Architecture/](./02_Architecture/)
|
||||||
- [workflow/README.md](./workflow/README.md)
|
- [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_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)
|
- [02_Architecture/51123_github_org_repo_bootstrap_runbook.md](./02_Architecture/51123_github_org_repo_bootstrap_runbook.md)
|
||||||
- [journey/README.md](./journey/README.md)
|
- [journey/README.md](./journey/README.md)
|
||||||
@ -26,6 +27,7 @@
|
|||||||
- [02_Architecture/Infrastructure_Project_Structure.md](./02_Architecture/Infrastructure_Project_Structure.md)
|
- [02_Architecture/Infrastructure_Project_Structure.md](./02_Architecture/Infrastructure_Project_Structure.md)
|
||||||
- [workflow/README.md](./workflow/README.md)
|
- [workflow/README.md](./workflow/README.md)
|
||||||
- [workflow/51123_nas_remote_operations_workflow.md](./workflow/51123_nas_remote_operations_workflow.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_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)
|
- [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)
|
7. [02_Architecture/Infrastructure_Project_Structure.md](./02_Architecture/Infrastructure_Project_Structure.md)
|
||||||
8. [workflow/README.md](./workflow/README.md)
|
8. [workflow/README.md](./workflow/README.md)
|
||||||
9. [workflow/51123_nas_remote_operations_workflow.md](./workflow/51123_nas_remote_operations_workflow.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)
|
10. [workflow/51124_remote_workspace_config_operations_workflow.md](./workflow/51124_remote_workspace_config_operations_workflow.md)
|
||||||
11. [02_Architecture/51123_github_org_repo_bootstrap_runbook.md](./02_Architecture/51123_github_org_repo_bootstrap_runbook.md)
|
11. [02_Architecture/51123_to_internal_nas_sync_verification_runbook.md](./02_Architecture/51123_to_internal_nas_sync_verification_runbook.md)
|
||||||
12. [journey/research/260307_value_기준_인프라철학문서_구조초안.md](./journey/research/260307_value_기준_인프라철학문서_구조초안.md)
|
12. [02_Architecture/51123_github_org_repo_bootstrap_runbook.md](./02_Architecture/51123_github_org_repo_bootstrap_runbook.md)
|
||||||
13. [journey/README.md](./journey/README.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)
|
- [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 워크스페이스 레포 동기화·푸시
|
- [local_developer_workflow.md](./local_developer_workflow.md) — 로컬 PC 워크스페이스 레포 동기화·푸시
|
||||||
|
|
||||||
## 관련 문서
|
## 관련 문서
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user