정적이고 지속적인 컴퓨팅 환경인 Linux가 있다고 가정해 보겠습니다. 단방향 SSH 연결이 있고 인프라가 신뢰할 수 있습니다. 그것은 내 것입니다.
사전 설치된 루틴과 함께 제공되는 ansible과 같은 여러 브랜드의 "엔터프라이즈" 도구가 있습니다. 궁극적으로 누군가가 이를 수정하려고 한다면 고통을 겪게 될 것입니다.
다음으로 airflow(dags)와 Luigis(Python의 gnu-make 복제본, Python은 make 및 bash보다 낮은 수준의 언어이며 make와 달리 애플리케이션 바이너리 인터페이스 지원이 없음)가 있습니다. 높은 수준의 작업을 위해 낮은 수준의 코드를 작성해야 하고(Python은 입력 문제와 버전 제어 문제가 있는 낮은 수준의 언어가 되었습니다) Python 수하물(가상 환경/ anaconda/교차 플랫폼 상호 운용성)을 사용하여 무엇이든 사용할 수 있습니다.
이러한 "제품", 솔루션 및 도구 주변에는 "그냥 작동하는" 기본 Unix/Linux 운영 체제와 도커 이미지가 있습니다.
이러한 도커 이미지 및 하위 시스템(Linux용 Windows 하위 시스템) 내에는 50년 된 프로젝트 "Make"와 zsh/bash
.parallel
ssh
make
luigi
실제로 이것은 완전히 다재다능하며 빠른 자동화를 작성하고 싶을 때 1~2주 안에 수행했던 그 어떤 것보다 훨씬 빠릅니다 airflow
. 이는 또한 새로운 도구를 식별하는 방법으로도 사용됩니다. 어떤 것이 너무 복잡해지면 분명히 하위 수준 언어용으로 패키지된 도구여야 합니다.
또한 다양한 Linux 배포판과 Windows 간에 Python 종속성을 끌어서 고정 비용이 발생하지 않습니다.
그러나 누락된 부분이 있는 것 같습니다. 원격 시스템에서 실행되는 작업을 자동화하려는 경우 make의 효율성이 감소합니다. 시도해 보았지만 ssh -c "..."
결과는 약간 지저분했습니다.
pachyderm
솔루션을 검색하면서 (데이터 과학을 위한 데이터 버전 관리), luigi
(복제 만들기), airflow
(재미 없음), ansible
(다시: Python 기반 패치 시간 수신기) 등을 발견했습니다 .
expect
나는 또한 1980년대/90년대에 나온 and 라는 도구를 발견했습니다 autoexpect
. 이 도구는 기본 도구인 것으로 보이며 linux
Linux, cygwin, 원격 Linux 시스템 등의 Windows 하위 시스템에서 "정상 작동" 범주에 속합니다.
그것은 계산서에 맞는 것 같고 더 나아가 make
내 스타일의 자동화 방법과 잘 작동합니다. 전반적으로 automation.exp
스크립트 내부의 소음은 자동으로 생성되므로 전혀 문제가 없습니다 . 중요한 것은 인간이 만든 구성 요소입니다. 이러한 작은 구성 요소는 components.exp
복잡하지 않게 서로 맞습니다(모든 프로세스 제어, 구성, 사용자 로그인, 문서 및 뉴에이지 도구와 관련된 설치 수하물).
그러나 autoexpect
이는 매크로 레코더이므로 이를 사용하여 수행할 수 있는 많은 작업에는 원격 컴퓨터의 비결정적 응답이 포함됩니다. expect
전문가가 되기 위해 시간을 들이지 않는 한 이는 문제를 야기합니다 .
autoexpect
모든 서문을 제쳐두고, 이러한 시스템 내에서 "공정한" 작업 범주에 속하는 대안이 있는지 궁금합니다 .
그리고, 명백한 것을 제한하기 위해, 자동화된 시스템이 Python 가상 환경을 설치하고 유지 관리하기 위해 컴퓨터 주위를 맴돌도록 요구하지 않도록 하십시오. 혼란을 처리하는 데 지쳤습니다.
답변1
원격 실행의 경우 다음을 살펴볼 수 있습니다 env_parallel
.
dostuff() {
mystuff "$@"
}
alias mystuff='echo $my'
my=My
env_parallel -S server dostuff ::: a b c
여기서의 아이디어는 GNU Parallel이 환경을 원격 서버에 복사하도록 하는 것입니다. 따라서 발생할 수 있는 참조 서커스를 처리할 필요 없이 로컬 서버에서 복잡한 기능을 정의하고 원격으로 실행하는 것이 더 쉽습니다 ssh -c "..."
.
상호작용이 필요한지는 확실하지 않습니다 expect
. 그렇다면 이는 귀하의 요구 사항을 충족하지 못할 것입니다.