아래는 JSP로 구축한 웹사이트의 특정 이벤트를 발생 시켰을때 .py파일 실행 시키는 부분
//content_s_user_id는 jsp에서 로그인한 계정ID의 세션 변수
Process p1 = Runtime.getRuntime().exec("python3 /절대경로/initial.py 1 "+content_s_user_id);
인스턴스들 자동 생성 코드
import sys, subprocess, os
run = sys.argv[1] //'0'은 실행되는 명령어 출력(실행X) '1'은 실제로 실행
name = sys.argv[2] //생성할 인스턴스들에 들어갈 공통 이름
def envset(project_id, project_name) : //'admin'계정은 공통이고 'project'만 바꿀거라 바뀔 프로젝트 ID,NAME값 받음
os.environ['OS_AUTH_URL'] = "http://192.168.0.3:5000/v3"
os.environ['OS_PROJECT_ID'] = project_id
os.environ['OS_PROJECT_NAME'] = project_name
os.environ['OS_USER_DOMAIN_NAME'] = "default"
os.environ['OS_PROJECT_DOMAIN_ID'] = "default"
os.environ['OS_USERNAME'] = "admin"
os.environ['OS_PASSWORD'] = 패스워드 입력
os.environ['OS_REGION_NAME'] = "RegionOne"
os.environ['OS_INTERFACE'] = "public"
os.environ['OS_IDENTITY_API_VERSION'] = "3"
if run == '0' : //실행될 명령어만 출력
print(f"subprocess.run(['mkdir','/절대경로/{name}'])") //사용자 별로 heat YAML파일을 관리를 위해 디렉터리 생성
for i in ["첫번째 프로젝트 이름","첫번째 프로젝트 ID"], ["두번째 프로젝트 이름","두번째 프로젝트 ID"], ["세번째 프로젝트 이름","세번째 프로젝트 ID"] :
print(f"envset({i[1]},{i[0]})") //openrc 파일 환경변수 등록
cmd=f"sed 's/$name/{name}/g' /절대경로/{i[0]}.yaml.ori > /절대경로/{name}/{i[0]}.yaml" //공통 heat YAML에서 원하는 값으로 값 변경
print(cmd) //명령어 출력
print(f"subprocess.Popen(['openstack','stack','create', '{name}_{i[0]}', '-t', '/절대경로/{name}/{i[0]}.yaml'])\n") //명령어 출력
elif run == '1' : //진짜로 실행
subprocess.run(['mkdir',f'/절대경로/{name}'])
for i in ["첫번째 프로젝트 이름","첫번째 프로젝트 ID"], ["두번째 프로젝트 이름","두번째 프로젝트 ID"], ["세번째 프로젝트 이름","세번째 프로젝트 ID"] :
cmd=f"sed 's/$name/{name}/g' /절대경로/{i[0]}.yaml.ori > /절대경로/{name}/{i[0]}.yaml"
os.system(cmd) //subprocess로 하고 싶은데 sed에 ''(작은따옴표)랑 뭐가 자꾸 에러가 떠서 os.system으로 대체.....
envset(i[1],i[0])
subprocess.Popen(['openstack','stack','create', f'{name}_{i[0]}', '-t', f'/절대경로/{name}/{i[0]}.yaml'])
'Language > Python' 카테고리의 다른 글
openstack Openrc File 자동등록 스크립트 (0) | 2021.06.09 |
---|---|
Openstack Instance 자동 생성 스크립트 (0) | 2021.05.17 |