ข้อผิดพลาดของโมดูลซิงโครไนซ์ Ansible ออก

ฉันใช้ Ansible 2.9.11 บน MAC ของฉัน ฉันสร้าง Playbook เพื่อซิงโครไนซ์การกำหนดค่า freeswitch ที่กำหนดไว้ล่วงหน้ากับเซิร์ฟเวอร์ Debian 10 ใหม่ ฉันได้ติดตั้ง rsync แล้วและปฏิบัติตามข้อกำหนดทั้งหมดบนไซต์ Ansible เมื่อฉันรันงานการซิงค์ มันล้มเหลวโดยมีข้อความต่อไปนี้ สิ่งนี้จะเกิดขึ้นหลังจากที่ Playbook เชื่อมต่อกับกล่องแล้วและทำงานอื่นๆ เช่น การอัปเดตและติดตั้งข้อกำหนดเบื้องต้น

ข้อผิดพลาด:

fatal: [dev-fs02b]: FAILED! => {"changed": false, "cmd": "sshpass -d3
/usr/bin/rsync --delay-updates -F --compress --archive
--rsh=/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null --rsync-path=sudo rsync
--out-format=<<CHANGED>>%i %n%L /Users/User1/Documents/Ansible/files/sca
[email protected]:/etc/freeswitch", "msg": "Warning: Permanently added
'1.1.1.127' (ECDSA) to the list of known hosts.\r\nsudo: no tty
present and no askpass program specified\nrsync: connection
unexpectedly closed (0 bytes received so far) [sender]\nrsync error:
error in rsync protocol data stream (code 12) at
/AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-54.120.1/rsync/io.c(453)
[sender=2.6.9]\n", "rc": 12}

งาน:

  - name:  "Copies files over"
    synchronize:
      src: /Users/User1/Documents/Ansible/files/fs1
      dest: /etc/freeswitch
      recursive: yes

person user2236794    schedule 03.09.2020    source แหล่งที่มา
comment
ฉันคิดว่าข้อผิดพลาดของคุณคือ sudo: no tty present and no askpass program specified ดูเหมือนว่า sudo บนโฮสต์ระยะไกลต้องการรหัสผ่าน แต่คุณไม่ได้กำหนดค่า Ansible ให้ระบุรหัสผ่าน   -  person larsks    schedule 03.09.2020
comment
ใน Playbook ฉันกลายเป็น: ใช่แล้ว ฉันพลาดอะไรอีก?   -  person user2236794    schedule 03.09.2020
comment
คุณต้อง (a) กำหนดค่า sudo ให้ทำงานโดยไม่ต้องใช้รหัสผ่าน หรือ (b) กำหนดค่า Ansible เพื่อให้ระบุรหัสผ่านที่จำเป็นสำหรับ sudo ดู docs.ansible.com/ansible/latest/user_guide/become.html และจดบันทึกเอกสารสำหรับ ansible_become_password และตัวเลือกบรรทัดคำสั่ง --ask-become-pass   -  person larsks    schedule 03.09.2020


คำตอบ (1)


การซิงโครไนซ์เป็นส่วนเสริมของ rsync เพื่อให้งานทั่วไปใน playbooks ของคุณรวดเร็วและง่ายดาย มันถูกรันและเริ่มต้นบนโฮสต์ท้องถิ่นที่ Ansible กำลังทำงานอยู่ แน่นอน คุณสามารถใช้การดำเนินการคำสั่งเพื่อเรียก rsync ด้วยตัวเอง แต่คุณยังต้องเพิ่มตัวเลือกสำเร็จรูปและข้อเท็จจริงของโฮสต์อีกจำนวนหนึ่งด้วย การซิงโครไนซ์ไม่ได้มีวัตถุประสงค์เพื่อให้เข้าถึงพลังเต็มรูปแบบของ rsync แต่ทำให้การเรียกใช้ทั่วไปส่วนใหญ่ใช้งานได้ง่ายขึ้น คุณยังอาจจำเป็นต้องเรียก rsync โดยตรงผ่านคำสั่งหรือเชลล์ ขึ้นอยู่กับกรณีการใช้งานของคุณ

หมายความว่าคุณไม่สามารถซิงค์ในเซิร์ฟเวอร์ระยะไกลได้

person Vinamit_    schedule 03.09.2020