ไวยากรณ์ที่เหมาะสมสำหรับ symlink ที่ไม่สามารถใช้งานได้


24

ไวยากรณ์ที่เหมาะสมสำหรับการสร้าง symlink โดยใช้ ansible คืออะไร? ฉันกำลังสร้างสภาพแวดล้อมเสมือนจริงของ Vagrant และใช้งาน ansible เป็นผู้จัดเตรียมของฉัน ทุกอย่างทำงานได้ดีจนกระทั่งฉันพยายามเชื่อมโยงไปยังไฟล์การกำหนดค่าไซต์ nginx ของฉันจากเว็บไซต์ที่เปิดใช้งาน นี่คือสิ่งที่ฉันได้ลอง

- name: Create symlink to example.com
  file: 
    path: /etc/nginx/sites-enabled/example.com 
    dest: /etc/nginx/sites-available/example.com 
    state: link
  notify: nginx reload

เมื่อฉันทำสิ่งนี้ฉันพบกับข้อผิดพลาดต่อไปนี้

ข้อผิดพลาด: ข้อผิดพลาดทางไวยากรณ์ขณะโหลดสคริปต์ YAML /Users/username/project/ansible/roles/nginx/tasks/main.yml

หมายเหตุ: ข้อผิดพลาดอาจปรากฏขึ้นก่อนตำแหน่งนี้: บรรทัด 24, คอลัมน์ 1

- ชื่อ: Symlink ไปที่ example.dev.conf

ไฟล์: path = / etc / nginx / sites-enabled / example.dev.conf

สถานะการเชื่อมโยง =

^ Ansible ไม่สำเร็จให้สำเร็จ เอาต์พุตข้อผิดพลาดใด ๆ ควรปรากฏอยู่ด้านบน โปรดแก้ไขข้อผิดพลาดเหล่านี้แล้วลองอีกครั้ง

ฉันได้ลองใช้src=/etc/nginx/sites-enabledแทนpathแต่ฉันไม่สามารถหาตัวอย่างที่ชัดเจนของเรื่องนี้ได้จากเว็บ

รายละเอียด:

  • OSX Mavericks
  • คนจรจัด 1.6.3
  • VirtualBox 4.3
  • nginx 1.6.0
  • ansible 1.6.2
  • อูบุนตู 14.04

คำตอบ:


35

จากเอกสาร :

src , พา ธ ของไฟล์ที่จะลิงก์ไปยัง (ใช้ได้กับ state = link เท่านั้น) จะยอมรับเส้นทางสัมบูรณ์สัมพัทธ์และเส้นทางที่ไม่มีอยู่ เส้นทางสัมพัทธ์จะไม่ถูกขยาย

คุณจำเป็นต้องใช้srcและdestเมื่อใช้ไม่ได้state=link pathคุณต้องสลับแหล่งที่มาและปลายทางของคุณด้วยซึ่งดูเหมือนจะเป็นวิธีที่ไม่ถูกต้อง (สมมติว่าคุณต้องการเชื่อมโยงไปsites-availableจากจริง ๆsites-enabled) - srcเป็นเส้นทางที่จะเชื่อมโยงไปยังdestเป็นที่ที่จะสร้าง symlink

- name: Create symlink to example.com
  file: src=/etc/nginx/sites-available/example.com dest=/etc/nginx/sites-enabled/example.com state=link
  notify: nginx reload
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.