방금 테스트 및 배포 환경의 특정 설정을보다 잘 제어하기 위해 Fabric을 사용하기 시작했습니다. 구성을 스왑하는 최선의 방법에 대해 생각해 보려고합니다.패브릭을 사용하여 데이터베이스 연결 조작
의 내가 간단한 데이터베이스 연결 기본적으로 인증에 대한 몇 가지 상수 정의 내 응용 프로그램의 모듈 있다고 가정 해 봅시다 : 나는 직물을 발견하기 전에
host = 'db.host.com'
user = 'someuser'
passw = 'somepass'
db = 'somedb'
class DB():
def __init__(self,host=host,user=user,passw=passw,db=db,cursor='DictCursor'):
#make a database connection here and all that jazz
, 나는에 socket
라이브러리에서 getfqdn()
기능을 사용을 시스템이 푸시 된 호스트의 도메인 이름을 확인한 다음 인증 자격 증명을 조건부로 지정하십시오.
if getfqdn() == 'test.somedomain.com':
host = 'db.host.com'
user = 'someuser'
passw = 'somepass'
db = 'somedb'
elif getfqdn() == 'test.someotherdomain.com':
host = 'db.other.com'
user = 'otherguy'
passw = 'otherpass'
db = 'somedb'
이것은 분명히 그다지 크지 않습니다. 필자가 알고 싶은 것은 Fabric에서 이와 같은 것을 적용하는 가장 현명한 방법입니다. 따라서 프로젝트가 특정 테스트/배포 서버에 푸시되면이 값은 사후 푸시에서 변경됩니다.
나는 문서를보고 몇 가지 접근법을 생각할 수 있습니다. Fabric이 배포 된 내용을 기반으로 셸 명령을 사용하여 출력 할 수있는 상수를 정의한 파일을 가지고 있어야합니까? 그러면 데이터베이스 처리기를 정의하는 파일에서 파일을 가져올 수 있습니까? 이 fabfile에서 open
과 write
을 실행하는 것이 합리적입니까? 나는 또한 .gitignore
이러한 종류의 파일을 가지고 있다고 가정했기 때문에 repo에 커밋되지 않고 Fabric에 의존하여 배포했습니다.
현재 모든 구성 설정에 가장 적합한 방법을 적용 할 계획입니다. 현재는 getfqdn
을 사용하여 스왑하거나 수동으로 조정하십시오. 감사!
감사합니다.이 기능을 사용하기 위해 Fabric 출력을 일부 json으로 설정하고이를 리팩터링하는 것으로 결정했습니다. – DeaconDesperado