다양한 대륙에 있는 여러 Linux 서버에 소프트웨어 패키지를 대규모로 배포

다양한 대륙에 있는 여러 Linux 서버에 소프트웨어 패키지를 대규모로 배포

저는 여기에 처음 왔으며 Linux 서버의 대규모 원격 구성에 대해 흥미로운 질문을 하고 싶었습니다.

Ubuntu를 새로 설치하고, 인터넷에서 공개적으로 액세스할 수 있고, Authorized_keys에 SSH 키가 있고, 각 서버에 대한 sudo 비밀번호가 있는 100개의 서버에 대한 IP 주소 목록이 제공된다고 상상해 보세요. 이러한 서버를 구성하고 OpenVPN을 설치하는 방법을 설명합니다.

Puppet은 새 서버에 설치되지 않으며 SSHD만 활성화됩니다.

답변1

가장 쉬운 방법은 sudo서버 이름/IP 및 비밀번호 목록을 얻는 것입니다.

server1 pass1
server2 pass2
server3 pass3
...
server100 pass100

그런 다음 파일을 반복하고, 서버와 비밀번호를 변수로 읽고, 다음을 ssh사용하여 서버에서 원격 명령을 실행할 수 있습니다.

while read server pass; do 
    ssh  "$server" sudo -S apt-get install network-manager-openvpn <<<"$pass"
done < file

옵션을 사용하면 표준 입력에서 비밀번호를 전달할 -S수 있습니다 .sudo

 -S, --stdin
             Write the prompt to the standard error and read the password
             from the standard input instead of using the terminal device.
             The password must be followed by a newline character.

다음은 <<<bash(및 기타 쉘) 트릭입니다.여기에 있는 문자열.

관련 정보