Ansible提供两种方式去执行命令,一种是ad-hoc命令,一种是写入Ansible playbook。类似于前者在命令行敲shell,后者是写shell-script脚本,前者解决一些简单的任务,后者执行较复杂的任务。

  ad-hoc命令格式:ansible <pattern_goes_here> -m <module_name> -a <arguments>

pattern_goes_here:被管理的目标主机

module_name:使用的模块名,ansible中有多个模块,默认为command模块

arguments:模块参数

  在管理主机上执行ansible-doc -l,可以查看当前可以使用的所有模块;执行ansible-doc <module_name>,可以得到该模块的帮助文档

1、command模块为默认的模块,可以执行一些命令来执行简单的任务

现在执行如下命令,列出test组中所有主机的/etc/passwd文件,-f设置并行执行的客户端个数,实例中每次并行执行2个主机,在ansible.cfg中对-f有默认配置个数

[root@client01 ansible]# ansible test -a "ls -l /etc/passwd" -f 2
192.168.144.129 | SUCCESS | rc=0 >>
-rw-r--r--. 1 root root 2238 Jan 7 2017 /etc/passwd
192.168.144.130 | SUCCESS | rc=0 >>
-rw-r--r--. 1 root root 2238 Jan 7 2017 /etc/passwd

command 模块不支持 shell 变量,也不支持管道等 shell 相关的东西.如果你想使用 shell相关的这些东西, 要使用’shell’ 模块

在使用shell模块时,要注意使用引号规则,下面这个例子中,希望得到被管理主机的变量名,使用双引号得到的却是当前管理主机系统的变量,若要反馈被管理主机的系统变量,要用单引号

[root@client01 log]# ansible test1 -m shell -a "echo $HOSTNAME"
192.168.144.129 | SUCCESS | rc=0 >>
client01

[root@client01 log]# ansible test1 -m shell -a 'echo $HOSTNAME'
192.168.144.129 | SUCCESS | rc=0 >>
client03

2、文件传输

Ansible 能够以并行的方式同时 SCP 大量的文件到多台机器,使用copy模块

[root@client01 ansible]# ansible 192.168.144.130 -m copy -a "src=/etc/passwd dest=/tmp/"
192.168.144.130 | SUCCESS => {
"changed": true,
"checksum": "60f009c54c884e9e761ea571974eeea3b1182465",
"dest": "/tmp/passwd",
"failed": false,
"gid": 0,
"group": "root",
"md5sum": "82ef84d58047cb303e91d22a1ba4ed69",
"mode": "0644",
"owner": "root",
"secontext": "unconfined_u:object_r:admin_home_t:s0",
"size": 2238,
"src": "/root/.ansible/tmp/ansible-tmp-1515069024.7-268861670275734/source",
"state": "file",
"uid": 0
}
[root@client01 ansible]#
[root@client01 ansible]# ansible 192.168.144.130 -m command -a "ls -l /tmp/passwd"
192.168.144.130 | SUCCESS | rc=0 >>
-rw-r--r--. 1 root root 2238 Jan 4 20:30 /tmp/passwd
[root@client01 ansible]#

3、service模块,管理远程主机上的服务

[root@client01 ansible]# ansible test1 -m service -a "name=sshd state=started"

4、script模块,将参数中的脚本传到远程主机上,并在远程主机的shell环境下执行,该模块的执行不依赖远程主机的python环境

[root@client01 ansible]# ansible all -i hosts -m script -a "/home/zhuwan/ansible/test.sh arg1"

Ansible学习 ad-hoc命令的更多相关文章

  1. Linux中级之ansible概念及hoc命令行调用模式

    一.Ansible简介 ansible是新出现的开源的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统 ...

  2. ansible常用ad hoc操作

    ansible group001 -i hosts.ip -m shell -a -v

  3. Ansible学习记录二:命令

    0.ansible 命令参数详解: [root@localhost ~]# ansible Usage: ansible <host-pattern> [options] Options: ...

  4. ansible 学习与实践

    title: ansible 学习与实践 date: 2016-05-06 16:17:28 tags: --- ansible 学习与实践 一 介绍 ansible是新出现的运维工具是基于Pytho ...

  5. ansible学习笔记一

    ansible学习笔记一 参考博客: ansible学习 - 51CTO博客 一.安装 1 .下载epel源 wget -O /etc/yum.repos.d/epel.repo http://mir ...

  6. Ansible学习实战手记-你想要知道的可能都在这里了

    最近接触了ansible工具,查找了一些资料,也做了一些总结.希望能给刚接触的新手带来一些帮助. 此总结有实际例子,大部分也是从实践中用到才逐一总结的. 当然可能肯定一定会存在一些错误和纰漏,还望大家 ...

  7. ansible之基本原理及命令

    什么是ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(\(puppet.chef.func.fabric\))的优点,实现了批量系统配置.批量程序部署 ...

  8. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问

    delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...

  9. Ad hoc sql

    SQL Server如何启用Ad Hoc Distributed Queries? 2011-08-11 14:53 wangdingbang CSDN博客 字号:T | T   本文主要介绍了SQL ...

  10. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问

    消息 15281,级别 16,状态 1,第 2 行SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/Open ...

随机推荐

  1. SQL Server 创建用户

    增加角色 role_for_nc 1.exec sp_addrole 'role_for_nc'; 创建一个 SQL Server 登录名wlzx,密码为"123",默认数据库为 ...

  2. intellijidea课程 intellijidea神器使用技巧 3-4 alter+enter

    alter enter ==> 创建函数 fi() ==> alter enter

  3. Mysql慢查询 [第二篇]

    一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...

  4. 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架

    简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...

  5. 用HttpSessionListener统计在线用户或做账号在线人数管理

    使用HttpSessionListener接口可监听session的创建和失效 session是在用户第一次访问页面时创建 在session超时或调用request.getSession().inva ...

  6. app接口测试总结

    前段时间在测试一个项目,任务是测试app的API.总结下遇到的问题类型: 1 通过app提交数据,隐形数据有误.(主要通过验证数据库) 比如用户通过app输入工单提交.接口数据中,用户输入的信息都正确 ...

  7. 解决SD卡频繁读写问题 Anything-sync-daemon 映射linux目录到tmpfs并定时同步

    Anything-sync-daemon (asd) is a is a diminutive pseudo-daemon designed to manage target directories ...

  8. while循环小例

    # 使用while 循环输入 1 2 3 4 5 6 8 9 10 n = 1 while n <= 10: if n == 7: pass else: print(n) n = n + 1 # ...

  9. ArcGIS License Server Administrator 10.2 无法启动许可的解决办法

    刚刚重装了电脑,安装ArcGIS的时候,安装完desktop之后又安装了License Manager,结果把破解文件替换完之后,发现ArcGIS License Server Administrat ...

  10. iOS逆向命令集

    越狱命令行 破壳: 10.10.215.119 ssh root@10.10.215.119 ssh root@10.10.213.176 CCBMobileBank Fuqianlade-iPhon ...