Bạn có hai tùy chọn ở đây nếu mẫu của bạn sắp có trên máy chủ từ xa.
Thứ nhất, bạn có thể sử dụng mô-đun fetch hoạt động như đối diện với mô-đun copy để đưa mẫu trở lại sau khi nhân bản repo trên máy chủ từ xa.
Một playbook cho điều này có thể giống như thế:
- name : clone repo on remote hosts
git :
repo : {{ git_repo_src }}
dest : {{ git_repo_dest }}
- name : fetch template from single remote host
run_once : true
fetch :
src : {{ template_path }}/{{ template_file }}
dest : /tmp/{{ template_file }}
flat : yes
fail_on_missing : yes
- name : template remote hosts
template :
src : /tmp/{{ template_file }}
dest : {{ templated_file_dest }}
owner : {{ templated_file_owner }}
group : {{ templated_file_group }}
mode : {{ templated_file_mode }}
Các lấy nhiệm vụ sử dụng run_once
để đảm bảo rằng nó chỉ làm phiền sao chép các mẫu từ các máy chủ đầu tiên nó chạy chống lại. Giả sử tất cả các máy chủ này trong trò chơi của bạn đều nhận được cùng một repo thì điều này sẽ ổn nhưng nếu bạn cần đảm bảo rằng nó được sao chép từ một máy chủ rất cụ thể thì bạn có thể kết hợp nó với delegate_to
.
Hoặc bạn chỉ có thể có Ansible bản sao repo địa phương và sử dụng nó trực tiếp với một cái gì đó như:
- name : clone repo on remote hosts
git :
repo : {{ git_repo_src }}
dest : {{ git_repo_dest }}
- name : clone repo on Ansible host
hosts : localhost
connection : local
git :
repo : {{ git_repo_src }}
dest : {{ git_repo_local_dest }}
- name : template remote hosts
template :
src : {{ template_local_src }}
dest : {{ templated_file_dest }}
owner : {{ templated_file_owner }}
group : {{ templated_file_group }}
mode : {{ templated_file_mode }}
Tại sao không cho phép Ansible để kéo repo khác của bạn không? – ydaetskcoR
Ansible nhái repo vào máy chủ từ xa. Một khi nó đã nhân bản, tôi cần phải thực hiện thay đổi bằng cách sử dụng các mẫu trong repo và bây giờ là trên máy từ xa. – trajan
Có nhưng tại sao Ansible không thể kéo repo của bạn cục bộ cũng như nhân bản nó trên máy chủ đích? Sau đó, nó có thể sử dụng chức năng mẫu. Cách khác của bạn là sử dụng 'fetch' để kéo mẫu trở lại từ máy chủ nhưng nó cảm thấy giống như một phương thức kém sạch hơn đối với tôi. – ydaetskcoR