📜  Ansible命令

📅  最后修改于: 2020-12-26 12:34:42             🧑  作者: Mango

Ansible命令

Ansible命令模块用于在远程目标计算机上运行任何命令或运行任何脚本。或用于在远程节点上执行命令。

命令模块用于在远程节点或服务器上运行简单的Linux命令,该节点或主机是主机组中提到的主机组或独立服务器的一部分。

Ansible命令模块和Shell模块

当我们需要在您选择的外壳中的远程服务器中执行命令时,将使用外壳模块。默认情况下,这些命令在/ bin / sh shell上运行。您可以使用各种操作,例如'|','<','>'等,以及环境变量,例如$ HOME

命令模块不会通过外壳处理命令。因此它不支持上述操作。

您以与在UNIX shell上提供的命令相同的方式提供要执行的命令,命令名称后跟参数。

- name: Executing a command using the shell module 
  shell: ls -lrt > temp.txt

第一个命令列出当前文件夹中的所有文件,并将其写入文件temp.txt。

- name: Executing a command using the command module
  command: hello.txt

上面的示例显示hello.txt文件的内容。

更改默认目录

该命令将始终在默认目录中执行。您可以使用chdir参数更改并指定要在其中运行命令的目录路径。此参数可用于命令和外壳模块。

您还可以通过在可执行参数中指定require Shell的绝对路径来更改默认Shell。

- - hosts: loc
  tasks:
  - name: ansible command with chdir and executable parameters
    command: ls -lrt
    args:
      chdir: /home/Ansible/command_chdir_example
      executable: /bin/bash

在上面的示例中,使用过时的路径/ bin / bash使用“ Bourne Again Shell”。并将目录更改为/ home / Ansible / command_chdir_example。

执行多个命令

如果需要运行多个命令,则可以使用“ with_items ”将它们同时提供给Shell和命令模块。

范例1:

- hosts: loc 
  tasks: 
  - name: Ansible command module multiple commands 
    command: "touch {{ item }}"
    with_items: 
      - hello.txt 
      - hello1.txt 
      - hello2.txt 
    args: chdir: /root/ansible

范例2:

- hosts: loc
  tasks:
  - name: Ansible shell module multiple commands
    shell: "cat {{ item }} | grep ansible"
    with_items:
      - hello.txt
      - hello1.txt
      - hello2.txt
    args:
      chdir: /root/ansible

在上面的示例中,我们要执行三个文件。 hello.txt,hello1.txt和hello2.txt。由于我在命令中输入了{{item}}关键字,因此在每次迭代中它将被列表中的元素替换。确保“ with_item”的缩进级别与模块名称处于同一级别。