때때로 같은 명령을 실행해야하는 약 12 개의 Linux 상자가 있습니다. 각 머신에 로그온하고 한 번에 하나씩 명령을 실행하는 것 외에는 더 쉬운 방법 (또는 자동화 된 방법)이 있습니까? 항상 같은 명령이 아니며 사전 설정된 시간이 아니기 때문에와 같은 도구에는 이상적이지 않습니다 cron
.
때때로 같은 명령을 실행해야하는 약 12 개의 Linux 상자가 있습니다. 각 머신에 로그온하고 한 번에 하나씩 명령을 실행하는 것 외에는 더 쉬운 방법 (또는 자동화 된 방법)이 있습니까? 항상 같은 명령이 아니며 사전 설정된 시간이 아니기 때문에와 같은 도구에는 이상적이지 않습니다 cron
.
답변:
흠, 아마도 pconsole 이 당신이 원하는 도구 일 것입니다.
여기에서 Puppet을 확인 하고 설정 및 사용에 관한 linux.com 기사 가 있습니다.
Capistrano 시도해보십시오 . 원래는 Rails 배포 도구이지만 원격 시스템으로 많은 일을 수행했습니다.
여러 머신의 관리에 대한보다 완벽한 접근을 위해서는 Chef 를 사용해보십시오 .
Ansible은 임시 명령을 수행 할 수 있으며 전체 구성 관리를 수행하도록 확장 할 수도 있습니다. 그룹별로 일치하는 능력이 우수합니다.
사람들이 좋아하는 Stack Overflow에서 내 대답을 복사하여 붙여 넣을 것 같습니다. . .
한 번에 여러 서버에서 명령을 실행하는 방법의 문제는 다른 날 펄 메일 링리스트에 와서 나는 같은 추천주지 내가 거기에 준 사용 GSH이다 : http://outflux.net/unix/를 소프트웨어 / gsh
gsh는 for box in box1_name box2_name box3_name
이미 제공된 " "솔루션 과 유사 하지만 gsh가 더 편리하다는 것을 알았습니다. 서버를 포함하는 / etc / ghosts 파일을 web, db, RHEL4, x86_64와 같은 그룹 또는 그 밖의 다른 (man ghosts) 그룹으로 설정 한 다음 gsh를 호출 할 때 해당 그룹을 사용합니다.
[pdurbin@beamish ~]$ gsh web "cat /etc/redhat-release; uname -r"
www-2.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-2.foo.com: 2.6.9-78.0.1.ELsmp
www-3.foo.com: Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
www-3.foo.com: 2.6.9-78.0.1.ELsmp
www-4.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-4.foo.com: 2.6.18-92.1.13.el5
www-5.foo.com: Red Hat Enterprise Linux Server release 5.2 (Tikanga)
www-5.foo.com: 2.6.18-92.1.13.el5
[pdurbin@beamish ~]$
예를 들어 web + db 또는 web-RHEL4를 사용하여 고스트 그룹을 결합하거나 분할 할 수도 있습니다.
또한 shmux를 사용한 적이 없지만 웹 사이트 에는 많은 서버에서 한 번에 명령을 실행할 수있는 소프트웨어 목록 (gsh 포함)이 포함되어 있습니다. Capistrano 는 이미 언급되었으며 (내가 이해 한 것에서) 그 목록에도 올 수 있습니다.
func도 살펴보십시오. Func는 모듈 아키텍처를 사용하여 패키지 처리, 명령 실행 등 시스템의 다양한 측면을 제어 할 수 있습니다. SSL을 통한 클라이언트 / 서버 모듈에서 작동하며 상당히 유연한 인증 체계를 가지고 있습니다.
ClusterSSH를 사용했으며 작동합니다. 그러나 특정 수의 터미널을 넘어 서면 확장 성이 떨어집니다.
아무도 xargs를 언급하지 않은 것에 놀랐습니다. Xargs는 대부분의 경우에 적합합니다. 사실, 나는 더 이상 clusterssh를 사용하지 않을 정도로 편안해졌습니다.
예
echo -n host1 host2 host3 host4|xargs -d" " -n1 -P30 -I+ ssh + "sudo service apache2 restart"
(모든 웹 호스트에서 아파치를 다시 시작하십시오.)
-P30
일부 수단은 "병렬로 30를 실행"
다른 도구는 다음과 같습니다.
RunDeck은 가벼운 ControlTier로 묘사 될 수도 있습니다.
이러한 도구는 클러스터 셸뿐만 아니라 웹 프런트 엔드를 제공하며 나중에 사용하기 위해 작업을 저장할 수 있습니다.
간단하고 강력한 요리를 사용하십시오 ! 이 스크립트는 내 인생을 바꿨습니다.
http://nic-nac-project.org/~drimiks/gnu/dish.shtml
diligence shell 'dish'는 여러 시스템에서 ssh / rsh / telnet / mysql을 통해 동시에 명령을 실행합니다. 그러면 수백 개의 노드에서 비밀번호 변경, 구성 업데이트, 파일 복사, 상태 확인 등이 간단 해집니다. Dish는 IBM의 'dsh'(분산 쉘)와 유사하지만 인증이 필요한 명령을 원격으로 실행할 수 있습니다. ClusterIt, 댄서의 쉘, 병렬 분산 쉘 또는 C3과 같은 분산 쉘 (또는 유사한 툴)을 포함하는 다른 오픈 소스 패키지와 비교할 때 접시는 유연한 솔루션이 필요한 경우 슬림하고 사용하기 쉬운 원격 쉘 래퍼입니다. 요리 매뉴얼 페이지를 온라인으로 검색 할 수 있습니다.
다음은 다른 답변에서 언급 한 명령을 사용하는 몇 가지 예입니다.
숫자 범위를 취할 수 있으며 호스트 이름이 먼저 출력되면 실제로 유지 관리되는 것처럼 보입니다 .
가장 간단한 버전 :
pdsh -w hostname echo done
산출:
hostname: done
더 복잡한 예 :
pdsh -w username@hostname[7-8],username@otherhost "sleep 5 && echo done"
산출:
hostname8: done
hostname7: done
otherhost: done
맥: brew install pdsh
dsh -m user@host,user@host --remoteshell ssh --concurrent-shell -- "sleep 5 && echo done"
그렇지 않으면 원격 쉘 설정이 필요합니다. 그렇지 않으면 "rsh"를 사용하거나 사용하지 못할 수도 있습니다.
맥: brew install dsh
pssh -i -H user@host -H user@host "sleep 5 && echo done"
선택적으로 파일에서 머신 목록을 모두 가져올 수 있습니다.
여기에 더 많은 예제를 추가하십시오. 커뮤니티 위키입니다.
맥: brew install pssh
클러스터 SSH ( "mac only version"은 다른 두 버전이있는 것 같습니다 )는 실제로 다른 터미널에 입력을 보내는 큰 터미널이있는 "실제 터미널"을 실제로 엽니 다. 여러 UI로 보내는 UI와 같습니다.
전의:
csshX hostname0[1-2] hostname3
그런 다음 빨간색 상자에 입력하면 각 터미널 창 (호스트 당 하나씩)으로 이동하여 팝업됩니다.
맥 : brew install csshx
(이전 버전이지만 여전히 작동)
도있다 brew install ansible
FWIW는