新增含內容的檔案

  1. file 模組的 touch 只能產生空白檔,使用 copy 模組可以複製檔案,或新增有內容的檔案,copy 模組文件的範例如下:
    [deyu1@kvm19 ansible]$ ansible-doc copy
    - name: Copy using inline content
      copy:
        content: '# This file was moved to /etc/other.conf'
        dest: /etc/mine.conf
    
  2. 修改 webtest.yml 腳本,在目錄 /webtest 下新增一個內容為 "WebTest on hostname"。
    [deyu1@kvm19 ansible]$ vim webtest.yml
    [deyu1@kvm19 ansible]$ cat webtest.yml 
    ---
    - name: Web test
      hosts: dev
      tasks:
        - file:
            path: /webtest
            state: directory
            group: webtest
            mode: '2775'
          
        - file:
            src: /webtest
            dest: /var/www/html/webtest
            state: link
    
        - copy:
            content: "WebTest on {{ ansible_hostname }}"
            dest: /webtest/index.html
    
  3. ansible-playbook 執行腳本 webtest.yml。
    [deyu1@kvm19 ansible]$ ansible-playbook webtest.yml
    
    PLAY [Web test] ****************************************************************
    
    TASK [Gathering Facts] *********************************************************
    ok: [kvm11]
    
    TASK [file] ********************************************************************
    ok: [kvm11]
    
    TASK [file] ********************************************************************
    ok: [kvm11]
    
    TASK [copy] ********************************************************************
    changed: [kvm11]
    
    PLAY RECAP *********************************************************************
    kvm11 : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
    
  4. ansible 使用 shell 模組查看主機 test 的 /webtest/index.html 內容,完全符合 webtest.yml 腳本的要求。
    [deyu1@kvm19 ansible]$ ansible dev -m shell -a "cat /webtest/index.html"
    kvm11 | CHANGED | rc=0 >>
    WebTest on kvm11
    
  5. curl 連線 http://kvm11/webtest/index.html,回應 403 Forbidden,原因為 /webtest 目錄的 selinux fcontext 限制存取。
    [deyu1@kvm19 ansible]$ curl http://kvm11/webtest/index.html
    [deyu1@kvm19 ansible]$ curl http://kvm11/webtest/
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>403 Forbidden</title>
    </head><body>
    <h1>Forbidden</h1>
    <p>You don't have permission to access /webtest/
    on this server.<br />
    </p>
    </body></html>