उत्तर देने योग्य: होस्टनाम या भूमिका के आधार पर कॉपी फ़ाइल


9

होस्टनाम के आधार पर फ़ाइल पर प्रतिलिपि बनाने का सबसे अच्छा तरीका क्या है?

मुझे अलग-अलग सामग्री वाली फ़ाइलों की प्रतिलिपि बनाने की आवश्यकता है लेकिन एक ही फ़ाइल नाम के साथ कई मशीनों के लिए।

मेरे पास कई फाइलें हैं:

file.role1
file.role2
file.role3

होस्टनाम और / या भूमिका के आधार पर, मैं इसे कॉपी file.roleXऔर नाम बदलना चाहूंगाfile

धन्यवाद।

जवाबों:


31

इसे करने के कई तरीके हैं। सरल:

- 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"

वैकल्पिक, अधिक कॉम्पैक्ट:

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

या, टेम्पलेट का उपयोग कर:

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

जहां टेम्प्लेट कुछ इस तरह हो सकता है:

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

यदि आप अलग-अलग भूमिकाओं में अलग-अलग फ़ाइल चाहते हैं, तो आप इसे बस क्यों नहीं डालते हैं:

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

प्रत्येक भूमिका के कोड में?

इसे करने का कोई पसंदीदा तरीका नहीं है - यह इस बात पर निर्भर करता है कि आप वास्तव में क्या हासिल करना चाहते हैं।


5
TIMTOWTDI के लिए बोनस अंक !
tedder42

धन्यवाद - मैं वास्तव में एक अलग apt.sources फ़ाइल के लिए था, जो OS और आर्किटेक्चर पर निर्भर करता है, बिना गड़बड़ किए या बहुत अधिक भूमिकाएँ / एक बड़ी इन्वेंट्री फ़ाइल। मैं इन्वेंट्री फ़ाइल में hostname के पीछे एक वैरिएबल के लिए गया था: सूत्रों_सूची = डेबियन और जो source.list को कॉपी करने के लिए source.list.debian का कारण बनता है।
तुइंसलाक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.