alpacon work-session create
새 작업 세션을 생성합니다.
alpacon work-session create [flags]
--use를 전달하면 새 세션이 워크스페이스의 활성 세션으로 지정되어 이후 exec, websh, cp, tunnel 명령이 --work-session 없이 이 세션에 연결됩니다. 승인이 필요한 경우 --use를 --wait와 함께 사용하세요. 세션이 active 상태에 도달하면 연결됩니다.
작업에 sudo가 필요하면 --sudo로 명령 패턴을 사전 선언하세요. 세션에 MFA 우회 sudo 정책이 첨부되어 비대화형 호출자(예: exec를 실행하는 AI 에이전트)가 해당 sudo 명령을 대화형 MFA 프롬프트 없이 실행할 수 있습니다. 각 --sudo 값은 쉼표로 구분한 패턴 목록으로 하나의 정책을 구성하며, 패턴 안에 리터럴 쉼표는 사용할 수 없으므로 해당 정책마다 플래그를 다시 전달하세요. sudo 기능이 자동으로 추가되며, 정책은 세션과 함께 승인 요청됩니다. 이후 sudo 명령이 거부되면 alpacon work-session update로 세션에 추가하세요.
옵션 (Options)
--expires-at string 절대 만료 시각 (RFC3339)
--expires-in string 세션 사용 시간 (예: 1h, 2h, 4h)
-h, --help create 명령어에 대한 도움말 출력
--purpose string 무엇을, 왜 하는지 구체적으로 작성 (마크다운 지원, 비대화형 모드에서 필수)
--requester-type string 요청자 유형: user 또는 agent (기본값 "user")
--scope strings 요청할 기능. 유효 값: command, editor, sudo, tunnel, webftp, websh (반복 가능, 쉼표로 구분한 값도 허용)
--server strings 대상 서버 이름 (반복 가능, 쉼표로 구분한 값도 허용)
--sudo stringArray 대화형 MFA 없이 실행할 sudo 명령 패턴 사전 선언 (반복 가능, 각 값은 쉼표로 구분한 패턴 목록으로 하나의 정책을 구성, 와일드카드 허용)
--sudo-reason string --sudo로 생성한 sudo 정책에 적용할 사유
--use 생성한 세션을 워크스페이스의 활성 세션으로 지정 (상태가 'active'에 도달해야 함, 승인이 필요하면 --wait와 함께 사용)
--wait 세션이 승인될 때까지 대기 후 종료 (기본 타임아웃 5m, 활성 세션으로 지정하지는 않음, 자동 연결하려면 --use와 함께 사용)
--wait-approval string --wait와 동일하지만 대기 시간을 직접 지정 (예: 30m, 기본값 5m). --wait를 암시적으로 포함
예제
명령 실행과 터미널 접근을 위한 세션 요청:
alpacon work-session create --purpose "nginx fix" --scope command,websh --server web-01 --expires-in 2h
여러 서버를 대상으로 절대 만료 시각을 지정하고 승인 대기:
alpacon work-session create --purpose "deploy" --scope command --server web-01,db-01 --expires-at 2027-01-15T10:00:00Z --wait
세션 생성과 활성 세션 지정을 한 번에:
alpacon work-session create --purpose "deploy" --scope command --server web-01 --expires-in 2h --wait --use
비대화형 sudo를 위한 명령 패턴 사전 선언:
alpacon work-session create --purpose "nginx hotfix" --scope sudo --server web-01 --expires-in 2h \
--sudo "systemctl restart nginx,systemctl reload nginx" --sudo "tail -f /var/log/nginx/*.log"
세션은 pending(승인 대기) 상태로 시작하며 승인되면 사용할 수 있습니다. Superuser 본인의 요청은 자동으로 승인됩니다. 자세한 내용은 수명 주기와 세션 요청하기를 참고하세요.
sudo 명령 패턴
--sudo 패턴은 세션이 대화형 MFA 프롬프트 없이 실행할 수 있는 권한 명령을 결정합니다. Alpacon은 다음 규칙으로 명령을 패턴과 매칭합니다.
- 패턴은 권한 상승 대상 명령과 매칭되며, 이 명령에는
sudo접두사가 포함되지 않습니다. Alpacon이 명령을 평가할 때 입력한sudo는 이미 명령의 일부가 아니므로,sudo systemctl restart nginx는systemctl restart nginx로 매칭됩니다. 패턴에는sudo를 넣지 마세요.sudo apt-get update가 아니라apt-get update를 등록합니다.sudo가 포함된 패턴은 절대 매칭되지 않습니다. - 전체 문자열이 일치해야 합니다. 명령 전체가 패턴 전체와 일치해야 합니다.
*가 유일한 와일드카드로 임의의 텍스트와 일치하며, 그 외 glob이나 정규식 문법은 없습니다. - 복합 명령은 분리됩니다. 셸 연산자(
&&,||,;, 파이프, 리다이렉션)로 연결된 입력은 하위 명령으로 나뉘며, 각 하위 명령이 최소 하나의 패턴과 일치해야 합니다. - 공백은 정규화되고 나머지는 정확히 일치해야 합니다. 연속된 공백은 매칭 전에 하나의 공백으로 합쳐집니다. 그 외에는 플래그, 인자 순서, 절대 경로까지 그대로 일치해야 합니다.
apt-get install -y nginx는apt-get install nginx와 일치하지 않고,/usr/bin/apt-get update는apt-get update와 일치하지 않습니다.
| 패턴 | 일치 | 불일치 |
|---|---|---|
systemctl restart nginx | systemctl restart nginx (정확히 일치), sudo systemctl restart nginx (셸에 입력한 sudo는 매칭 대상 명령에 포함되지 않음) | systemctl restart nginx.service |
systemctl restart * | systemctl restart nginx, systemctl restart php-fpm | systemctl status nginx |
apt-get update | apt-get update | apt-get update && apt-get upgrade (apt-get upgrade도 등록하지 않은 경우) |
tail -f /var/log/nginx/*.log | tail -f /var/log/nginx/error.log | tail -n 100 /var/log/nginx/error.log |
docker compose * | docker compose up -d, docker compose ps | docker run nginx |