05Ansible的Ad-hoc与命令模块

Ansible的Ad-hoc与命令模块

ad-hoc:

所谓的ad-hoc(临时命令),就是使用ansible模块来完成自动化任务,每一次只能使用一个模块,来完成一个任务,因此将ad-hoc称为ansible的临时命令

ad-hoc的语法:

格式: ansible 选择的主机 -m 模块名 -a '模块的参数' ansible的参数

示例: ansible all -m shell -a 'useradd devops' -u root -k

  • all:所有主机
  • shell:模块
  • useradd:devops 模块的参数
  • -u root -k:ansible的参数
    • -u:指定远程用户
    • -k:连接时验证ssh密码

ansible的模块:

ansible的模块 是ansible功能的重要实现,所有的自动化任务都高度依赖于模块

模块的查询:
ansible-doc -l 列出当前主机上所有ansible支持的模块

模块参数的查询:
ansible-doc -s 模块名 示例 ansible-doc -s user

模块用法例子查询:
ansible-doc 模块名 进去后搜索’/EXAMPLE’ 搜索模块帮助中的例子

命令模块

所谓的命令模块,也就是Ansible在Linux主机上可以执行Linux指令的模块

在ansible中有四个模块通常用来在Linux主机上执行命令

  • command:相当于在被控端本机上执行Linux的指令,但是有四个符号例外"|、>、<、&",当出现以上四种符号时command将无法处理该指令

  • shell: 相当于在被控端本机上执行Linux的指令,和command模块的区别在于支持所有的特殊符号,也支持一些高阶特性(参数),如 creates、removes、chdir

  • raw:在主机上执行命令,不支持Linux指令的高阶参数
    不支持的高阶参数:

    • chdir: 在执行命令前切换到指定的目录(默认执行命令在ansible远程用户的家目录下执行)
      ansible node1 -m shell -a 'chdir=/opt touch rhca11111.txt' 文件创建在/opt目录下
      ansible node1 -m raw -a 'chdir=/opt touch 2222.txt' 文件创建在devops用户家目录下不支持chdir参数

    • creates:文件存在命令不执行,反之文件不存在则命令执行

    • removes:文件不存在命令不执行,文件存在则命令执行 (ansible2.8之前是不支持)
      ansible node1 -m shell -a 'removes=/opt/rhca1111111111111.txt rm -rf /opt/*' 文件不存在命令不执行
      ansible node1 -m shell -a 'creates=/opt/rhca.txt rm -rf /opt/*' 文件存在命令不执行

  • script:将主控端shell复制到被控端执行,接的是一个脚本文件,该文件不需要任何执行权限。此模块是命令执行模块中唯一一个不需要依赖python环境的模块。比如在被控节点需要安装python的环境使用raw模块安装

    ansible的 script模块是将文件中的内容通过shell的方式复制到被控端执行,因此和文件的权限没有关系

    示例:

    [root@master opt]# cat test.sh
    #!/bin/bash
    id -un
    ifconfig
    pwd
    
    [root@master opt]# ansible node1 -m script -a 'test.sh'
    

注意: 在ansible中可以直接执行Linux的命令,模块可以省略

当Ansible省略模块时,默认使用配置文件ansible.cfg中defaults段落的module_name = command参数所配置的模块,默认配置为command模块,因此省略模块默认使用command模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值