PowerShell의 "일대 다"원격과 동등한 Linux


38

Windows 관리에서 온 Linux (Debian)에 대해 더 깊이 파고 싶습니다. 웹 검색에 대답 할 수 없었던 불타는 질문 중 하나는 Windows 용 PowerShell에서와 같이 소위 "일대 다"원격 기능을 달성 할 수있는 방법입니다.

기본 사항으로 분류하려면 다음과 같이하십시오.

리눅스에 대한 나의 견해 :

  • 서버에 ssh하고 내 명령을 입력 할 수 있습니다
  • 결과를 얻습니다. 10 대의 서버 환경에서 각 서버에 대한 명령을 보내는 (perl / python?) 스크립트를 작성해야합니까?

Windows에서의 나의 경험 :

  1. 내 명령을 입력하고 "invoke-command"를 사용하여 이것을 여러 서버 (텍스트 파일에서)로 "송신"하여 동시에 실행하고 결과를 다시 얻을 수 있습니다 (추가 작업을위한 개체로).

  2. 여러 세션을 설정하고 연결을 백그라운드로 유지하고 선택적으로 이러한 세션에 명령을 보내고 필요에 따라 원격으로 출입 할 수 있습니다.

(저는 요리사, 꼭두각시 등을 들었습니다. 이런 식입니까?)


Update 2019:
많은 시도 후 - 내가 제안 렉스 (참조 아래이 댓글을 ) - 쉬운 설치를 (당신이 조금 알고있는 경우에 사용 (효과적으로 그냥 ssh를, 아무것도 필요) 이 더 나은의를하지만 선택 사항입니다)
렉스 (쓸어 ) adhoc 명령을 수행 하고 실제 구성 관리로 진행할 수 있습니다 (... 의미 : 처음에는 CM이지만 adoc 작업에도 좋습니다). 웹 사이트는 오래되었지만 현재는 (2019 년 1 월 기준) 현재 개발 중이며 IRC 채널도 활성화되어 있습니다.

Windows의 새로운 openssh를 사용하면 더 많은 가능성이 있습니다

당신은 시도 할 수 있습니다: rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'


병렬 ssh는 그것을 할 수있다 : serverfault.com/questions/2533/…
rogerdpack

MobaXTerm은 많은 ssh 세션에서 "다중 실행"을 지원합니다 : mobaxterm.mobatek.net/features.html (스크롤 다운). 또한 주 워크 스테이션 환경이 Windows 인 경우 Linux 박스 등을 연결하기위한 매우 유용한 도구이기도합니다.
Kev

tmux 사용 : :setw synchronize-panes on( unix.stackexchange.com/a/124800/161003 )
eli

답변:


50

요약

  • Ansible은 PowerShell을 강력하게 대체하는 DevOps 도구입니다.
  • 그래픽 인터페이스로서 RunDeck이 편리
  • 어떤 사람들은 RunDeck + Ansible을 함께 실행합니다

클러스터

초보자를 위해 여러 서버에 원격 명령을 보내려면 clusterssh를 권장 합니다.

clusterssh데비안에서 설치하려면 :

apt-get install clusterssh

다른 clusterssh 튜토리얼 :

ClusterSSH는 XTerm 및 SSH와 같은 표준 Linux 도구를 중심으로하는 Tk / Perl 래퍼입니다. 따라서 라이브러리가 존재하는 POSIX 호환 OS에서 실행됩니다. Linux, Solaris 및 Mac OS X에서 실행했습니다. Perl 라이브러리 Tk (Debian 또는 Ubuntu의 perl-tk)가 필요합니다. xterm 및 OpenSSH 외에도 X11 :: Protocol (Debian 또는 Ubuntu의 libx11-protocol-perl).

혐오

다중 시스템 관리를위한 원격 프레임 워크의 경우 Ansible 은 Puppet의 매우 흥미로운 대안입니다. 더 간결하고 SSH를 통해 작동하므로 전용 원격 에이전트가 필요하지 않습니다 (RedHat에서 구입했습니다)

플레이 북은 명령 행 옵션보다 더 정교합니다.

그러나 Ansible을 사용하려면 간단한 설치가 필요하고 클라이언트 목록 텍스트 파일을 설정해야합니다.

그 후 모든 서버에서 명령을 실행하려면 다음과 같이 간단합니다.

ansible all -m command -a "uptime"

또한 출력은 규칙 / 서버별로 매우 형식이 좋고 분리되어 있으며 백그라운드에서 실행하는 동안 파일로 리디렉션하고 나중에 참조 할 수 있습니다.

간단한 규칙으로 시작할 수 있으며 Linux에서 성장함에 따라 Ansible 사용법이 더 흥미로워지고 인프라 구조가 커집니다. 따라서 PowerShell보다 훨씬 많은 기능을 수행합니다.

예를 들어, 내가 쓴 Linux 서버를 업그레이드하는 매우 간단한 플레이 북 :

---
- hosts: all
  become: yes
  gather_facts: False
  tasks:
   - name: updates a server
     apt: update_cache=yes
   - name: upgrade a server
     apt: upgrade=full

또한 포괄적 인 정책을 쉽게 작성할 수있는 많은 모듈이 정의되어 있습니다.

모듈 색인-Ansible Documentation

또한 커뮤니티에 의해 이미 만들어진 정책을 검색 할 수있는 흥미로운 공식 허브 / "소셜"리포지토리 네트워크가 있습니다. 어 s 블 갤럭시

Ansible도 널리 사용되며 github에서 FreeRadius 설정을 위한 프로젝트와 같은 많은 프로젝트를 찾을 수 있습니다.

Ansible은 무료 오픈 소스 프레임 워크이지만 유료 웹 패널 인터페이스 인 Ansible Tower도 있지만 라이센스 비용은 다소 비쌉니다.

현재 RedHat이이를 구입 한 후 tower에는 AWX로 알려진 오픈 소스 버전도 있습니다 .

보너스로 Ansible은 Windows 서버를 관리 할 수는 없지만 그 용도로는 사용하지 않았습니다.

또한 네트워킹 장비 (라우터, 스위치 및 방화벽)를 관리 할 수있어 자동화 턴키 솔루션으로서 매우 흥미로운 솔루션입니다.

Ansible을 설치하는 방법

룬 데크

다시 한 번, 원격 프레임 워크를 사용하기는 쉽지만 Ansible만큼 강력하지 않은 경우 Rundeck을 권장 합니다.

매우 일반적인 다중 사용자 / 로그인 그래픽 인터페이스로 일상적인 많은 작업을 자동화 할 수 있으며 시스템 또는 헬프 데스크 직원에게 물을 줄 수도 있습니다.

명령을 실행하면 서버 / 작업별로 출력이 분할 된 창이 나타납니다.

백그라운드에서 여러 작업을 원활하게 실행할 수 있으며 나중에 보고서를보고 출력 할 수 있습니다.

룬 데크 이미지

RunDeck을 설치하는 방법

웹 인터페이스로 Ansible + RunDeck을 실행하는 사람들이 있습니다. 모든 경우에 적합한 것은 아닙니다.

또한 Ansible 및 / 또는 RunDeck을 사용하는 것은 인프라 문서의 형식 또는 일부로 해석 될 수 있으며 시간이 지남에 따라 동작 / 레시피 / 플레이 북을 복제하고 개선 할 수 있습니다.

마지막으로 중앙 명령 서버에 대해 말하면 작업을 위해 서버를 만들 것입니다. 실제로 기술 용어는 점프 박스입니다. '점프 박스'를 올바르게 설정하면 보안이 향상 됩니다.


1
Ansible은 명령을 여러 SSH 서버에 브로드 캐스트하는 일부 스크립트 또는 유틸리티와 비교하여 훌륭한 솔루션입니다. Ansible은 (Puppet 또는 Chef보다 그 목적에 더 적합합니다), 그러나 단순히 설치 명령을 보내는 대신 내장 모듈을 사용하여 dem 등원을 설치하는 더 나은 방법으로 목표를 달성 할 수있는 옵션을 제공합니다 최선을 바라고 있습니다.
JBentley


12

호스트 목록에 연결하고 모든 호스트에서 병렬로 명령을 실행하는 SSH 클라이언트 인 pssh(또는 parallel-ssh)을 사용할 수도 있습니다 .

$ parallel-ssh -i -H "host1 host2" uname -a
[1] 11:37:12 [SUCCESS] host2
Linux host2 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[2] 11:37:12 [SUCCESS] host1
Linux host1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

11

간단한 zsh (bash) 기능으로 목표를 달성 할 수 있습니다. 서버 l61 l62 l63이 있고 종종 서버에서 명령을 실행해야한다고 가정 해 봅시다.

function run_on_cluster()
{
    (for srv in l61 l62 l63;
    do
        echo "ssh $srv $1";
    done) | parallel --gnu
}

따라서 명령 행에서 :

$ run_on_cluster "uname -r"
2.6.32-279.el6.x86_64
2.6.32-279.el6.x86_64
2.6.32-504.23.4.el6.x86_64

5
출력 전에 서버 이름을 인쇄하는 것이 좋습니다. 스크립트를 병렬로 실행하면 스크립트 출력이 어지럽히는 것과 같은 다른 문제가 발생합니다. 출력 활동을 보존하려면 추가 조치를 취해야합니다. 포 그라운드에서 각 작업을 실행하면 입력 상호 작용을 최소화 할 수 있습니다.
Rui F Ribeiro

3

KDE를 사용하는 경우 다른 방법이 있습니다.
-Konsole 창을 엽니 다.
통신하려는 각 서버의 경우 :
-탭 열기
-서버와의 ssh 연결 설정
"편집"메뉴에서 "입력 복사"를 "모든 탭"으로 선택하십시오.

해당 탭에 입력 한 모든 명령이 모든 서버에 복사됩니다.
다른 결과를보기 위해 탭에서 탭으로 전환 할 수 있습니다.

참고 : 영어 버전의 KDE를 사용하지 않으므로 메뉴 레이블 (따옴표)이 잘못되었을 수 있습니다.


1

GNU 병렬

설정이 저장된 간단한 단일 라이너를 사용할 수 있으므로 서버 목록과 공통 스위치가 포함 된 "prod"프로파일을 만들 수 있습니다. 그런 다음 원하는 명령을 추가하기 만하면됩니다. 서버가 종료되면 자동으로 삭제되며 더 큰 스크립트에는 매우 편리하며 매우 빠릅니다.

유일한 문제는 너무 많은 옵션이 있다는 것입니다.) 그러나 설명서에는 많은 예제가 포함되어 있으므로 처음부터 예제를 볼 수 있습니다.


2
안녕하세요, Linux 및 Linux에 오신 것을 환영합니다. 누군가가 이미 gnu-parallel을 사용하여 스크립트를주었습니다. 주위를 둘러보고 더 정교하게 답변 해 주시면 더 많은 포인트를 주실 것을 권합니다.
Rui F Ribeiro

1
@RuiFRibeiro 죄송합니다 .SO 코드 상자가있는 Android 앱 버그는 알지 못했으며 대부분의 내용을 볼 수 없었습니다 (빈 공백을 생성합니다). 당신은 gnu-parallel이
혼란스러운

예, 익숙하지는 않지만 이미 의심 스럽기 때문에 대답을 개선해야합니다. 감사. 더 나은 답변을 작성하는 데 방해가되는 것은 없지만 의견을 제시하려면 해당 답변에 의견을 제시하는 것이 좋습니다.
Rui F Ribeiro

1

여기에 "Rex"도 언급하고 싶습니다 : https://www.rexify.org/

perl + ssh (사용자 / 비밀번호 또는 키 인증) 를 사용하는 멋진 도구 이며 perl이 모든 (?!) Linux 시스템에 설치되어 있기 때문에 사용하는 것이 더 자연스러운 것 같습니다 (Ansible & Co.와 일부 유사 함)

여러 서버에서 한 번에 adhoc 명령을 실행할 수 있습니다 (server1, server2, server ...-인증 설정 후 또는 명령 실행을 위해 -p / -u 매개 변수 및 -s / -S 사용).

$ rex -H "server[1..3]" -e 'say run "uptime"'

다른 "태스크"를 지정하고 거기서 호출하는 파일을 만들거나

$ rex -f myConfigFile.rex uptime

그것은 저장소를 통해 또는 perls에 설치 될 수 CPAN (또는 cpanm Rex) 하고, 초기 설정은 간단입니다 참조 :
- https://www.rexify.org/ 또는
- https://www.rexify.org/docs/guides/ start_using__r__ex.html
- http://www.admin-magazine.com/Archive/2014/21/First-steps-in-IT-automation-by-Rex

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.