하나의 SFTP 명령으로 두 대의 컴퓨터에 파일을 전송하고 싶습니다. 가능합니까?
답변1
습관. SFTP 명령은 단일 연결에서 발생합니다.
대상 컴퓨터 목록을 가져오고 해당 컴퓨터에서 파일을 복사하고, 명령을 실행하고, 상태와 성공을 지속적으로 확인하는 간단한 프로그램이 필요한 것 같습니다.
그런 도구가 많이 있습니다! 제가 주로 사용하는 것은안시푸르.
기본적으로 두 컴퓨터 그룹에 이름을 지정하는 파일을 작성하게 됩니다. 우리는 그것을 다음과 같이 부릅니다 inventory.ini
.
[karthiksmachines]
machine1
machine2
(물론 machine1
및 를 machine2
컴퓨터의 호스트 이름이나 IP 주소로 바꾸세요)
그런 다음 다음 명령을 실행하여 작동하는지 테스트할 수 있습니다.
ansible -i inventory.ini karthiksmachines -m ping
machine1 | SUCCESS =>…
와 같은 멋진 출력을 얻어야 합니다 machine2
. (그렇지 않으면 SSH 액세스 키가 올바르게 설정되지 않았을 수 있습니다.)
작동한다면 좋습니다! 이제 글을 써보자스크립트, 즉 각 컴퓨터에서 수행되는 작업 집합입니다. 이 파일을 이라고 부르자 playbook.yaml
.
- name: Maintain the machines of Karthik
hosts: karthiksmachines
tasks:
- name: Copy file over
ansible.builtin.copy:
src: /path/to/your/local/file.ext
dest: /path/where/the/file/should/end/file.ext
짐작할 수 있듯이 목록에 더 많은 작업을 추가할 수 있습니다 tasks:
. 일반적으로 이러한 작업에는 보안 업데이트 설치, 로그 파일 다운로드 또는 서버에 서비스 설정이 포함됩니다. 어느!
그런 다음 플레이북을 실행합니다.
ansible-playbook -i inventory.ini playbook.yaml
그래서 그게 다입니다. 관리하려는 머신을 하나의 파일에 넣고 해당 머신에서 실행할 명령을 다른 파일에 넣은 후에는 명령을 실행해야 합니다. :)
나는 이것이 매우 쉽다고 생각하기 때문에 모든 서버에서 수행하는 모든 작업, 특히 소프트웨어 설치, 서비스 구성, 사용자 생성 등과 같은 작업에 대해 그렇게 하려고 노력합니다.
이는 다른 서버를 추가해야 하는 경우 이를 매니페스트에 추가하고 플레이북을 실행할 수 있다는 큰 장점이 있습니다. 재현 가능한 서버!