मेरे पास टेम्प्लेट निर्देशिका में .jinja2 टेम्प्लेट का एक संग्रह है जिसे मैंने Ansible में पैरामीटर किया है।
└── roles
├── copyFiles
│ ├── tasks
│ │ └── main.yml
│ └── templates
│ ├── file.one.name.xml.jinja2
│ ├── file.two.name.xml.jinja2
│ ├── file.three.name.xml.jinja2
| ...
मैं निर्देशिका को लक्षित करने के लिए फ़ाइलों की प्रतिलिपि बनाना चाहता हूं। हालांकि, मैं नीचे दिए गए एक with_items शब्दकोश में प्रत्येक व्यक्तिगत जिन्जा टेम्पलेट को निर्दिष्ट नहीं करना चाहता।
---
- name: Copy the Configuration templates
template:
src: "templates/{{ item.src }}"
dest: "target/{{ item.dest }}"
owner: "{{ user}}"
group: "{{ group }}"
mode: 0644
with_items:
- { src: 'file.one.name.xml.jinja2', dest: 'file.one.name.xml' }
- { src: 'file.two.name.xml.jinja2', dest: 'file.two.name.xml' }
- { src: 'file.three.name.xml.jinja2', dest: 'file.three.name.xml' }
...
क्या टेम्प्लेट निर्देशिका में किसी भी .jinja2 फ़ाइलों को लक्षित करने के लिए टेम्प्लेट रेंडरिंग और कॉपी को गतिशील रूप से करने का कोई तरीका है?
1 उत्तर
मुझे एक रास्ता मिल गया है। मैंने अपने सापेक्ष पथ का उपयोग करके टेम्पलेट निर्देशिका में सभी फ़ाइलों को सूचीबद्ध करने के लिए रेगेक्स का उपयोग किया। फिर नया नाम बनाने के लिए regex_replace का उपयोग करें जिसका उपयोग गंतव्य फ़ाइल के लिए किया जाएगा:
---
- name: Copy the Configuration templates
template:
src: "{{ item }}"
dest: "target/{{ item | basename | regex_replace('\.jinja2','') }}"
owner: "{{ user}}"
group: "{{ group }}"
mode: 0644
with_fileglob:
- ../templates/*.jinja2
संबंधित सवाल
नए सवाल
ansible
Red Hat Ansible एक मॉडल-चालित, कॉन्फ़िगरेशन प्रबंधन, बहु-नोड परिनियोजन / ऑर्केस्ट्रेशन और दूरस्थ कार्य निष्पादन प्रणाली है। यह डिफ़ॉल्ट रूप से SSH का उपयोग करता है, इसलिए आपके द्वारा प्रबंधित किए जाने वाले नोड पर कोई विशेष सॉफ़्टवेयर स्थापित नहीं किया जा सकता है। पाइथन में Ansible लिखा है, लेकिन इसे किसी भी भाषा में बढ़ाया जा सकता है।