0
배포를 위해 Fabric을 사용할 때 프로그래밍 방식으로 현재 env를 변경하는 방법이 있습니까?Fabric, Python - 프로그래밍 방식으로 enchang 변경
내가하고 싶은 일은 한 번의 통화로 모든 환경에서 작업을 수행하는 것입니다. envs를 반복하면서 동일한 작업을 호출합니다.
예를 들어:
def live():
env.host = ['123.123.123.123']
def dev():
env.host = ['321.321.321.321']
environments = ['live', 'dev']
def backup_db():
run('mysqldump etc ..' % env)
def backup_all_dbs():
for environment in environments:
env = new_env(environment)
backup_db
및 다음
fab backup_all_dbs
실행하지만 즉석에서 ENV를 인스턴스화하는 방법을 모른다, 실제로에서 새 현재 ENV 변경 암호.
devv() 또는 live()와 같은 env 함수를 호출하는 것만으로는 충분하지 않습니다. 현재 env dict에 검사 할 경우 다른 것들이 있기 때문입니다.
docs에서 아무것도 볼 수 없지만 아마도 env는 명령 줄에서 한 번만 만들 수 있습니까?
감사
여러 호스트에서 동일한 명령을 실행의 측면에서, 직물을 사용하는 가장 좋은 방법은 아니다
안녕하세요. 이미 env마다 여러 개의 호스트가 설정되어 있습니다. 그러나 그것은 내가 달성하기를 원하는 것 (또는 내가 묻고있는 것)이 아닙니다. 또한 모든 호스트에 동일한 작업을 실행하도록 모든 환경을 요구하는 것은 부적절하다고 생각하지 않습니다. 예를 들어 현재 수행중인 작업을 원하는대로 백업 할 수 있습니다. –
그런데 Fabric이 작동하는 방식이 아닙니다. 즉, "환경"에 동일한 작업을 실행하도록 "요청하지"않습니다. 환경은 하나 뿐이며 글로벌 가치입니다. 또한 모든 호스트에서 동일한 작업을 수행하는 방법을 물었습니다. 그 예가 제가 제공 한 것과 정확히 같습니다. 출력 결과를보기 위해 위의 스크립트를 실행 했습니까? – YellowShark
아니요 저는 여러분의 모범을 보지 않았습니다. 왜냐하면 저는 그것이 무엇인지를 알 수 있기 때문이며 제가 구하는 것이 아니기 때문입니다. 내 질문에 대한 답을 모를 경우 완전히 좋습니다. 내가 묻는 것은 기술적으로 매우 명확합니다. 실행 중에 env의 전역 적 가치를 프로그래밍 방식으로 변경할 수 있습니까? 단지 킥킥 웃음을 위해서. –