Ansible——script模块

作者 : admin 本文共2318个字,预计阅读时间需要6分钟 发布时间: 2024-06-9 共2人阅读

 

目录

特点

参数总结

 使用 ansible 命令

1. 基本示例

2. 传递参数

3. 使用 creates 参数

4. 使用 removes 参数

 示例 Playbook 文件

 基本语法

1. 基本使用

2. 传递参数

3. 使用 creates 参数

4. 使用 removes 参数

5. 使用 register 捕获输出

6. 使用 args 指定参数


Ansible 的 script 模块是用来在远程主机上运行本地脚本文件的一个模块。它将本地脚本文件复制到目标主机上并执行。这个模块对于一些复杂操作性任务或者需要快速运行自定义脚本的场景非常有用。

特点

  • 脚本语言不限:可以是任何可执行的脚本,比如 Bash、Python、Perl 等。
  • 参数传递:允许传递参数给脚本。
  • 直接执行:无需考虑远程主机的具体环境,直接在远程主机上执行脚本。

 

参数总结

  1. chdir:

    • 描述:在执行脚本前更改到此目录。
    • 类型:字符串
    • 默认值:无
  2. creates:

    • 描述:仅在指定文件不存在时执行脚本。
    • 类型:字符串
    • 默认值:无
  3. executable:

    • 描述:用于执行脚本的可执行程序(例如 bash, python, ruby 等)。
    • 类型:字符串
    • 默认值:无
  4. removes:

    • 描述:仅在指定文件存在时执行脚本。
    • 类型:字符串
    • 默认值:无
  5. stdin:

    • 描述:为脚本提供标准输入。
    • 类型:字符串
    • 默认值:无
  6. stdin_add_newline:

    • 描述:如果为 yes,则在标准输入数据末尾添加一个新行。
    • 类型:布尔值
    • 默认值:yes
  7. strip_empty_ends:

    • 描述:如果为 yes,则从标准输入数据的两端移除空行。
    • 类型:布尔值
    • 默认值:no
  8. cmd:

    • 描述:要执行的本地脚本的路径和可选参数。
    • 类型:字符串或列表
    • 必需:是

 

 使用 ansible 命令

 

1. 基本示例

在远程主机上运行本地脚本 my_script.sh

ansible all -m script -a "/path/to/my_script.sh"

2. 传递参数

在远程主机上运行本地脚本 my_script.sh 并传递参数:

ansible all -m script -a "/path/to/my_script.sh --option value"

3. 使用 creates 参数

只有在远程主机上不存在 /tmp/myfile 时才运行脚本:

ansible all -m script -a "creates=/tmp/myfile /path/to/my_script.sh"

4. 使用 removes 参数

只有在远程主机上存在 /tmp/myfile 时才运行脚本:

ansible all -m script -a "removes=/tmp/myfile /path/to/my_script.sh"

 

 示例 Playbook 文件

 

 基本语法

一个典型的 script 模块结构如下:

- name: Description of the task
  script: /path/to/local/script.sh

还可以添加多个可选参数,如 creates 和 removes,来条件化执行脚本。

1. 基本使用

在远程主机上执行脚本 my_script.sh

---
- name: Run basic script
  hosts: all
  tasks:
    - name: Execute the script
      script: /path/to/my_script.sh

2. 传递参数

在远程主机上执行脚本 my_script.sh 并传递参数:

---
- name: Run script with arguments
  hosts: all
  tasks:
    - name: Execute the script with arguments
      script: /path/to/my_script.sh --option value

3. 使用 creates 参数

只有在远程主机上不存在 /tmp/myfile 文件时才执行脚本:

---
- name: Conditionally run script if file does not exist
  hosts: all
  tasks:
    - name: Execute the script if file does not exist
      script:
        path: /path/to/my_script.sh
        creates: /tmp/myfile

4. 使用 removes 参数

只有在远程主机上存在 /tmp/myfile 文件时才执行脚本:

---
- name: Conditionally run script if file exists
  hosts: all
  tasks:
    - name: Execute the script if file exists
      script:
        path: /path/to/my_script.sh
        removes: /tmp/myfile

5. 使用 register 捕获输出

捕获脚本执行的输出并在后续任务中使用:

---
- name: Capture script output
  hosts: all
  tasks:
    - name: Run script and capture output
      script: /path/to/my_script.sh
      register: script_output

    - name: Print script output
      debug:
        var: script_output.stdout

6. 使用 args 指定参数

在脚本中指定额外参数:

---
- name: Run script with specific arguments
  hosts: all
  tasks:
    - name: Execute the script with multiple arguments
      script:
        path: /path/to/my_script.sh
        args:
          creates: /tmp/myfile
          removes: /tmp/removefile

 

本站无任何商业行为
个人在线分享 » Ansible——script模块
E-->