模組文件

  1. 查詢 shell 模組文件。
    [deyu1@kvm19 ansible]$ ansible-doc shell
    
  2. 查詢 shell 模組文件的範例,執行腳本並將輸出導向到檔案。
    [deyu1@kvm19 ansible]$ ansible-doc shell | grep ^EX -A3
    EXAMPLES:
    
    - name: Execute the command in remote shell; stdout goes to the specified file
     on the remote.
      ansible.builtin.shell: somescript.sh >> somelog.txt
    
  3. 切換到 somedir 目錄,執行腳本並將輸出導向到檔案。
    - name: Change the working directory to somedir/ before executing the command.
      ansible.builtin.shell: somescript.sh >> somelog.txt
      args:
        chdir: somedir/
    
  4. 切換到 somedir 目錄,只在 somelog.txt 不存在時,才執行腳本並將輸出導向到檔案 somelog.txt。
    # You can also use the 'args' form to provide the options.
    - name: This command will change the working directory to somedir/ and will
     only run when somedir/somelog.txt doesn't exist.
      ansible.builtin.shell: somescript.sh >> somelog.txt
      args:
        chdir: somedir/
        creates: somelog.txt
    
  5. /bin/sh 不支援 cat < /tmp/*txt,參數 executable 指定使用 /bin/bash。
    - name: Run a command that uses non-posix shell-isms (in this example /bin/sh
     doesn't handle redirection and wildcards together but bash does)
      ansible.builtin.shell: cat < /tmp/*txt
      args:
        executable: /bin/bash
    
  6. 使用樣板變數。
    - name: Run a command using a templated variable (always use quote filter to
     avoid injection)
      ansible.builtin.shell: cat {{ myfile|quote }}
    
  7. expect 互動程式。
    # You can use shell to run other executables to perform actions inline
    - name: Run expect to wait for a successful PXE boot via out-of-band CIMC
      ansible.builtin.shell: |
        set timeout 300
        spawn ssh admin@{{ cimc_host }}
    
        expect "password:"
        send "{{ cimc_password }}\n"
    
        expect "\n{{ cimc_name }}"
        send "connect host\n"
    
        expect "pxeboot.n12"
        send "\n"
        exit 0
      args:
        executable: /usr/bin/expect
      delegate_to: localhost
    
  8. 關閉警告訊息。
    # Disabling warnings
    - name: Using curl to connect to a host via SOCKS proxy (unsupported in uri).
     Ordinarily this would throw a warning.
      ansible.builtin.shell: curl --socks5 localhost:9000 http://www.ansible.com
      args:
        warn: no