修改檔案內容

  1. 下載變數格式檔 report.orig。
    [deyu1@kvm19 ansible]$ wget http://dy.csie.cyut.edu.tw/materials/report.orig
    
  2. 查看需要列出報告 report.orig 的變數。
    # Variables report
    HOST=inventoryhostname
    MEMORY=memory_in_MB
    VDA_SIZE=disk_vda_size
    KERNEL=kernel_version
    
  3. 撰寫 report.yml 腳本,使用正規表示法搜尋行首為指定開鍵字的行,等號 "=" 後的字串取代成指定的變數內容。
    [deyu1@kvm19 ansible]$ vim report.yml 
    [deyu1@kvm19 ansible]$ cat report.yml 
    - name: Report variables
      hosts: test
      tasks:
        - ansible.builtin.copy:
            src: report.orig
            dest: /root/report.txt
    
        - ansible.builtin.lineinfile:
            path: /root/report.txt
            regexp: "^{{item.key}}"
            line: "{{item.key}}={{item.value}}"
          loop:
          - { key: "HOST", value: "{{inventory_hostname}}" }
          - { key: "MEMORY", value: "{{ansible_memtotal_mb}}" }
          - { key: "VDA_SIZE", value: "{{ansible_devices.vda.size}}" }
          - { key: "KERNEL", value: "{{ansible_kernel}}" }
    
  4. ansible-playbook 執行腳本 report.yml。
    [deyu1@kvm19 ansible]$ ansible-playbook report.yml 
    
    PLAY [Report variables] ********************************************************
    
    TASK [Gathering Facts] *********************************************************
    ok: [kvm12]
    
    TASK [copy] ********************************************************************
    changed: [kvm12]
    
    TASK [ansible.builtin.lineinfile] **********************************************
    changed: [kvm12] => (item={'key': 'HOST', 'value': 'kvm12'})
    changed: [kvm12] => (item={'key': 'MEMORY', 'value': 1771})
    changed: [kvm12] => (item={'key': 'VDA_SIZE', 'value': '6.00 GB'})
    changed: [kvm12] => (item={'key': 'KERNEL', 'value': '5.14.0-162.6.1.el9_1.x86_64'})
    
    PLAY RECAP *********************************************************************
    kvm12: ok=3  changed=2  unreachable=0  failed=0  skipped=0  rescued=0  ignored=0
    
  5. ansible 使用 shell 模組查看主機 test 的 /root/report.txt,檔案內容確實已改成變數查詢結果。
    [deyu1@kvm19 ansible]$ ansible test -m shell -a "cat /root/report.txt"
    kvm12 | CHANGED | rc=0 >>
    # Variables report
    HOST=kvm12
    MEMORY=1771
    VDA_SIZE=6.00 GB
    KERNEL=5.14.0-162.6.1.el9_1.x86_64