Ansible: sao chép tệp tùy thuộc vào tên máy chủ hoặc vai trò


9

Cách tốt nhất để sao chép qua một tập tin tùy thuộc vào tên máy chủ là gì?

Tôi cần sao chép các tệp có nội dung khác nhau nhưng có cùng tên tệp vào một số máy.

Tôi có một số tệp:

file.role1
file.role2
file.role3

Tùy thuộc vào tên máy chủ và / hoặc vai trò, tôi muốn sao chép file.roleXvà đổi tên nó thànhfile

Cảm ơn.

Câu trả lời:


31

Có rất nhiều cách để làm điều này. Đơn giản nhất:

- name: Copy file.role1 to host1
  copy: src=file.role1 dest=/somewhere/file
  when: inventory_hostname == "host1"
- name: Copy file.role2 to host2
  copy: src=file.role2 dest=/somewhere/file
  when: inventory_hostname == "host2"

Thay thế, gọn hơn:

- name: Copy file to host
  copy: src=file.{{ inventory_hostname }} dest=/somewhere/file

Hoặc, sử dụng một mẫu:

- name: Copy file to host
  template: src=file dest=/somewhere/file

trong đó mẫu có thể là một cái gì đó như thế này:

{% if inventory_hostname == "host1" %}
{% include "file1" %}
{% endif %}
...

Nếu bạn muốn các tệp khác nhau trong các vai trò khác nhau, tại sao bạn không chỉ cần đặt tệp này:

- name: Copy file.role1 to file
  copy: src=file.role1 dest=/somewhere/file

trong mã của mỗi vai trò?

Không có cách nào ưa thích để làm điều đó - nó phụ thuộc vào những gì bạn đang thực sự cố gắng thực hiện.


5
điểm thưởng cho TIMTOWTDI !
tedder42

Cảm ơn - Tôi thực sự đã cho một tệp apt.source khác tùy thuộc vào hệ điều hành & kiến ​​trúc mà không tạo ra một mớ hỗn độn hoặc có quá nhiều vai trò / tệp kho lớn. Tôi đã tìm một biến phía sau tên máy chủ trong tệp kiểm kê: nguồn_list = debian và điều đó khiến cho các nguồn.list.debian sao chép vào nguồn.list.
Tuinslak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.