पाठ 5 / 26

Playbook की बनावट

Playbook पढ़ें: hosts, vars, tasks, modules और handlers।

Plays और tasks

Playbook plays की YAML सूची है। हर play बताता है कि वह कौन-से hosts को लक्षित करता है, वैकल्पिक vars, क्रम से चलने वाले tasks की सूची, और वैकल्पिक handlers। हर task का पठनीय name होता है और वह module बुलाता है, बेहतर है पूरा योग्य नाम जैसे ansible.builtin.file। YAML indentation (spaces, कभी tabs नहीं) के प्रति संवेदनशील है, इसलिए YAML समर्थन वाला editor उपयोग करें।

Plays, tasks, modules

Playbook में plays होते हैं; हर play hosts को क्रमबद्ध tasks से जोड़ता है; हर task एक module बुलाता है।

तीन स्तर: playbook, play, task।
चित्र 2.1 — Playbook, play और task।

उदाहरण playbook

यह वही site.yml है जिसे मैंने इस खंड के बाक़ी हिस्से के लिए चलाया। यह एक बार output directory बनाता है, हर web host के लिए config render करता है और handler को सूचित करता है।

---
- name: Configure web servers
  hosts: web
  gather_facts: false
  vars:
    users: [asha, ravi]
    out_dir: "{{ playbook_dir }}/out"
  tasks:
    - name: Ensure output directory exists
      ansible.builtin.file:
        path: "{{ out_dir }}"
        state: directory
        mode: "0755"
      run_once: true
      delegate_to: localhost

    - name: Render config
      ansible.builtin.template:
        src: app.conf.j2
        dest: "{{ out_dir }}/{{ inventory_hostname }}.conf"
      delegate_to: localhost
      notify: Reload app

  handlers:
    - name: Reload app
      ansible.builtin.debug:
        msg: "reloading app on {{ inventory_hostname }}"

हर task को नाम दें

अच्छे task नाम run के output को पठनीय दस्तावेज़ बनाते हैं। "Render config" पाठक को "template" से कहीं ज़्यादा बताता है।

त्वरित जाँच: हर task क्या बुलाता है?

  • पूरा play
  • एक module
  • एक inventory
  • एक vault
Answer

एक module — Task arguments के साथ एक module का एक आह्वान है।