PowerShell의 “일대 다”원격과 동등한 Linux 얻을 수 있습니다 (추가

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"'



답변

요약

  • 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을 사용하는 것은 인프라 문서의 형식 또는 일부로 해석 될 수 있으며 시간이 지남에 따라 동작 / 레시피 / 플레이 북을 복제하고 개선 할 수 있습니다.

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


답변

대화식으로 수행하려면 terminator명령을 여러 터미널에 브로드 캐스트 할 수있는을 사용할 수 있습니다 .

참조 : 둘 이상의 탭 / 셸에서 동일한 Linux 명령을 동시에 실행하려면 어떻게합니까?


답변

호스트 목록에 연결하고 모든 호스트에서 병렬로 명령을 실행하는 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

답변

간단한 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

답변

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

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

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


답변

GNU 병렬

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

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


답변

여기에 “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