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


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.