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. 通用代码——makefile文件

    ver=debug ifeq ($(ver),debug) TARGET = testmain_d FLAG=-g -D debug else TARGET = testmain_r FLAG=-O3 ...

  2. deployment删除后,副本集未删除,解决之道

    在删除的body上加上,body.setPropagationPolicy("Foreground");就可以删除deployment的同时连同副本集一同删除.

  3. EF Core 2.1 +数据库视图

    1.参考文档 https://stackoverflow.com/questions/36012616/working-with-sql-views-in-entity-framework-core ...

  4. Python并发编程之进程池与线程池

    一.进程池与线程池 python标准模块concurrent.futures(并发未来) 1.concurrent.futures模块是用来创建并行的任务,提供了更高级别的接口,为了异步执行调用 2. ...

  5. Razor 语法糖常规用法

    1.隐匿代码表达式 例: @model.name 会将表达式的值计算并写入到响应中,输入时采用html编码方式 2.显示表达式 例:@(model.name)会将输入@model.name字符串 3. ...

  6. tomcat启动部署APP报错:This is very likely to create a memory leak

    This is very likely to create a memory leak的错误,网上很多,原因也是各种各样,这里也仅提供一个解决的思路. 问题描述:启动tomcat时,不能访问部署的AP ...

  7. Struts2_HelloWorld_2

    设置 tomcat 的位置 (jre:并不是jdk) 打开 struts2目录:apps 示例程序docs 文档lib 类库src 源码 打开 apps 目录下的 struts2-blank.war ...

  8. 中兴ZXR10 GER4核心路由器配置案例

    Connecting to 192.168.100.2:23...Connection established.To escape to local shell, press 'Ctrl+Alt+]' ...

  9. GitLab 的安装及汉化

    系统环境:CentOS7 切记:安装GitLab 时会自动安装GitLab自带的Nginx,为了避免冲突,部署环境时先不要安装Nginx. 官网安装及汉化安装 官网安装最新版GitLab:https: ...

  10. May 7th 2017 Week 19th Sunday

    A chain is no stronger than its weakest link. 链条的坚固程度取决于它最薄弱的环节. The same as the well-known buckets ...