Ansible——command 模块

目录

基本用法

指定主机

指定用户

指定不同的清单文件

通过sudo执行

使用更多的模块参数

1.使用特定的模块参数,例如chdir:

2.使用creates和removes参数:

creates参数

removes参数

并发控制

详细输出

例外处理

基本语法

常用参数

示例

示例 1:简单执行命令

示例 2:更改目录后执行命令

示例 3:仅当文件不存在时才创建文件

示例 4:仅当文件存在时才删除文件

完整的 Playbook 示例


       Ansible的command模块是一个非常基础和常用的模块,可以通过ansible命令结合一些选项来在远程主机上执行命令。与shell模块不同,command模块在执行命令时不会通过shell解释器来执行,因此无法处理像重定向、管道以及环境变量的展开等复杂的shell功能。

基本用法

执行单个命令

ansible all -m command -a "ls /home"

这里all是指所有主机(可以是Inventory文件中的一个分组),-m选项指定使用command模块,-a选项后面跟的是要执行的命令。

指定主机

指定一个特定的主机或主机组

ansible web -m command -a "ls /etc/yum.repos.d/"

这里web是清单(Inventory)文件中的一个主机组。

指定用户

使用特定的用户来执行命令

ansible all -m command -a "ls /root" -u root

这里-u选项指定用root用户执行命令。

指定不同的清单文件

使用指定的清单(Inventory)文件: 

   ansible all -i /path/to/inventory_file -m command -a "ls /home"

这里-i选项指定使用特定的Inventory文件。

通过sudo执行

使用become(sudo)来提升权限执行命令

ansible all -m command -a "ls /root" --become

这里--become选项是为了在执行命令时提升权限。

使用更多的模块参数

1.使用特定的模块参数,例如chdir
   ansible all -m command -a "cmd='ls' chdir=/home"
  • cmd='ls': 表示要执行的命令是ls(列出目录内容)。
  • chdir=/home: 表示在执行ls命令时先切换到/home目录下执行。
2.使用createsremoves参数:
   ansible all -m command -a "cmd='touch /tmp/testfile' creates=/tmp/testfile"
  • cmd='touch /tmp/testfile': 表示要执行的命令是touch /tmp/testfile,这个命令会在/tmp目录中创建一个名为testfile的空文件。
  • creates=/tmp/testfile: 表示如果/tmp/testfile文件已经存在,那么就不执行命令。
ansible all -m command -a "cmd='rm /tmp/testfile' removes=/tmp/testfile"
  • cmd='rm /tmp/testfile': 表示要执行的命令是rm /tmp/testfile,这个命令会删除/tmp目录中的testfile文件。
  • removes=/tmp/testfile: 表示如果/tmp/testfile文件不存在,那么就不执行命令。

removes参数和creates参数都是用于控制命令是否执行的条件,但二者的逻辑相反。它们主要用于避免重复操作,并确保操作的幂等性。

creates参数

作用:当指定的文件或目录存在时,不执行命令。

使用场景:常用于需要创建文件或目录的操作,确保创建操作不会重复执行。

removes参数

作用:当指定的文件或目录不存在时,不执行命令。

使用场景:常用于需要删除文件或目录的操作,确保删除操作不会重复执行。

并发控制

限制并发执行的任务数

   ansible all -m command -a "ls /home" -f 10

这里-f选项用来限制同一时间内并发执行的任务数,默认为5。

详细输出

显示详细信息

ansible all -m command -a "ls /home" -v

这里-v选项用来显示详细信息,还可以使用-vv-vvv等来增加详细级别。

例外处理

忽略某些错误继续执行

ansible all -m command -a "ls /nonexistent" --ignore-errors

下面是如何在 Ansible 的 YAML 文件中使用 command 模块的总结和示例。

基本语法

- name: 描述任务的名称
  command: <命令以及其参数>

常用参数

  • cmd: (必需)要执行的命令。
  • chdir: 在执行命令前更改的目录。
  • creates: 只有在指定的文件或目录不存在时才执行命令。
  • removes: 只有在指定的文件或目录存在时才执行命令。

示例

示例 1:简单执行命令
- name: Echo a message
  command: echo "Hello, World!"

示例 2:更改目录后执行命令
- name: List files in the /tmp directory
  command: ls -l
  args:
    chdir: /tmp

示例 3:仅当文件不存在时才创建文件
- name: Create a file if it does not exist
  command: touch /tmp/myfile
  args:
    creates: /tmp/myfile

示例 4:仅当文件存在时才删除文件
- name: Remove a file if it exists
  command: rm /tmp/myfile
  args:
    removes: /tmp/myfile

完整的 Playbook 示例

这是一个完整的 Ansible Playbook 示例,包含多个使用 command 模块的任务:

---
- name: Example Playbook for using command module
  hosts: all
  tasks:
    - name: Echo Hello World
      command: echo "Hello, World!"

    - name: List root directory
      command: ls -l /
      
    - name: Check if /tmp/testfile exists and create if it doesn't
      command: touch /tmp/testfile
      args:
        creates: /tmp/testfile

    - name: Remove /tmp/testfile if exists
      command: rm /tmp/testfile
      args:
        removes: /tmp/testfile

相关推荐

  1. 驱动模块--内核模块

    2024-06-07 07:40:04       43 阅读
  2. 模块一:登录模块

    2024-06-07 07:40:04       5 阅读
  3. DSP28335模块配置模板系列——EQEP模块配置模板

    2024-06-07 07:40:04       6 阅读
  4. random模块

    2024-06-07 07:40:04       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 07:40:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 07:40:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 07:40:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 07:40:04       18 阅读

热门阅读

  1. 简述浏览器和 Node.js 中的事件循环 ?

    2024-06-07 07:40:04       11 阅读
  2. 统计每天某个时间范围内得 数据状态

    2024-06-07 07:40:04       9 阅读
  3. 45-4 护网溯源 - 溯源相关思路

    2024-06-07 07:40:04       8 阅读
  4. http和websocket区别

    2024-06-07 07:40:04       8 阅读
  5. 前端面试题日常练-day56 【面试题】

    2024-06-07 07:40:04       9 阅读
  6. PostgreSQL中有没有类似Oracle的dba_objects系统视图

    2024-06-07 07:40:04       7 阅读
  7. UDP声音传输:播放的声音有很大的噪音

    2024-06-07 07:40:04       10 阅读
  8. MySQL DBA项目实战系列培训课程【MySQL 8.4最新版】

    2024-06-07 07:40:04       10 阅读
  9. 使用docker安装mysql详细教程

    2024-06-07 07:40:04       10 阅读
  10. 数组知识点

    2024-06-07 07:40:04       8 阅读
  11. 天气数据集2-应用RNN做天气预测

    2024-06-07 07:40:04       9 阅读