สภาพแวดล้อมระยะไกลของเราอยู่ข้างหน้าโดยอินสแตนซ์ Linux ซึ่งทำหน้าที่เป็นผู้เฝ้าประตูระหว่างนักพัฒนาและสภาพแวดล้อมจริง (อินสแตนซ์ apache และ mysql ที่ใช้ Drupal) สิ่งนี้ทำขึ้นเพื่อจำกัดการเปิดเผยสภาพแวดล้อมจริงและจำกัดรายละเอียดที่ต้องแชร์กับนักพัฒนา (เช่น คีย์ ssh, URL, ที่อยู่ IP)
Drush ถูกติดตั้งบนเครื่อง gatekeeper และ a ~/.drush/sites/project.site.yml
มีอยู่พร้อมรายละเอียดของสภาพแวดล้อมจริง:
'พัฒนา':
db-url: ...
# รายละเอียดการพัฒนาอื่น ๆ
'ทดสอบ':
db-url: ...
# รายละเอียดการทดสอบอื่น ๆ
'มีชีวิต':
db-url: ...
# รายละเอียดสดอื่น ๆ
บนเครื่องท้องถิ่นของเรา นักพัฒนามีสิทธิ์เข้าถึงเซิร์ฟเวอร์เกตคีปเปอร์นี้แบบจำกัด SSH และมี เว็บ/drush/sites/project.site.yml
ในโครงการที่มีลักษณะดังนี้:
'*':
โฮสต์: 'gatekeeper.project.net'
ผู้ใช้: 'ผู้ดูแลระบบ'
ความคาดหวังคือนักพัฒนาควรจะสามารถทำอะไรได้บ้าง drush @project.dev sql:dump
และ Drush จะส่งต่อสิ่งนี้ไปยังเซิร์ฟเวอร์ผู้เฝ้าประตูเพื่อเรียกใช้กับ ผู้พัฒนา
นามแฝง อย่างไรก็ตาม ฉันได้รับข้อผิดพลาดต่อไปนี้:
คำสั่ง "ssh -t -o PasswordAuthentication=no [email protected] 'drush sql:dump --uri=default'" ล้มเหลว
ดูเหมือนว่าจะส่งต่อเท่านั้น drush sql:dump --uri=ค่าเริ่มต้น
ไปยังเซิร์ฟเวอร์และไม่ drush @project.dev sql:dump --uri=default
. สิ่งนี้เคยทำงานกับ Drush 8 เรามีการตั้งค่าที่ประสบความสำเร็จโดยใช้วิธีนี้ แต่วิธีนี้ใช้ไม่ได้กับ Drush 9+ ที่มีการกำหนดค่าที่แปลแล้ว
ฉันจะผ่านได้อย่างไร @project.dev
(หรือนามแฝงใดๆ) ไปยังเซิร์ฟเวอร์ระยะไกล? ฉันขาดการกำหนดค่าบางอย่างหรือไม่ มีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่?