Ansible 동기화 모듈을 사용하여 원격 서버 간에 파일을 복사하는 중 오류가 발생했습니다.

Ansible 동기화 모듈을 사용하여 원격 서버 간에 파일을 복사하는 중 오류가 발생했습니다.

저는 Ansible을 처음 접했습니다. 내 노트북(ansible master)에서 Ansible 2.10을 사용하여 원격 서버 A에서 원격 서버 B로 일부 파일과 디렉터리를 복사하려고 합니다.

serverA에서 sudo 사용자를 사용하여 SSH 키(id_rsa)를 생성하고 공개 키를 serverB(동일한 sudo 사용자의 authenticate_keys 파일)에 복사했습니다.

호스트 파일

[servers]
prod_server ansible_host=IP_prod
new_server ansible_host=IP_new

[servers:vars]
ansible_user=sudo_user
ansible_sudo_pass=password
ansible_ssh_private_key_file=~/.ssh/id_rsa

스크립트

- name: Transfer files from prod to new server
  hosts: new_server
  gather_facts: false
  become: true
  roles:
  - rsync

역할

- name: Copy files to new server
  synchronize:
    src: /etc/letsencrypt/live/domain/fullchain.pem
    dest: /opt
  delegate_to: prod_server

플레이북을 실행할 때 오류가 발생합니다.

fatal: [new_server -> IP_new]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates
-F --compress --archive --rsh=/usr/bin/ssh -S none -i /root/.ssh/id_rsa -o StrictHostKeyChecking=no
-o UserKnownHostsFile=/dev/null --rsync-path=sudo rsync --out-format=<<CHANGED>>%i %n%L 
/etc/letsencrypt/live/domain/fullchain.pem sudo_user@IP_new:/opt", "msg": "Warning: Identity 
file /root/.ssh/id_rsa not accessible: No such file or directory.\nWarning: Permanently added
'IP_new' (ECDSA) to the list of known hosts.\r\nsudo_user@IP_new: Permission denied (publickey).....

어떤 도움이라도 대단히 감사하겠습니다.

인사

답변1

delegate_to: prod_server이것이 작업에서 의미하는 바 synchronize:는 파일을 에서 으로 복사해야 한다는 것 prod_server입니다 new_server. become: true작업이 rsync에 의해 실행되고 rsync가 누락된 root공개 키를 사용하려고 하기 때문에-i /root/.ssh/id_rsa

경고: ID 파일 /root/.ssh/id_rsa에 액세스할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

root이 문제를 해결하려면 at에 대한 ssh 키를 생성하고 at prod_server에 연결할 수 있는지 확인하거나 new_server(root가 파일을 복사하도록 하려는 경우) 재생에서 전역을 제거하고 at에 연결하여 파일을 복사 할 수 있는지 become: true 확인하세요 .sudo_userprod_servernew_server

재생에서 전역을 제거하는 경우 become: true필요한 경우 모든 작업에서 선택적으로 활성화해야 합니다. 이 경우 플레이북에서 업그레이드를 단순화하기 위해 파일 동기화를 별도의 플레이에 넣을 수 있습니다.

관련 정보