ansible之shell和script模块

使用shell模块,在远程命令通过/bin/sh来执行;所以,我们在终端输入的各种命令方式,都可以使用; 
但是我们自己定义在.bashrc/.bash_profile中的环境变量shell模块由于没有加载,所以无法识别;如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句;

对shell模块的使用可以分成两块:

shell模块用法和command参数一样

[[email protected] ~]# ansible-doc -s shell
less 436
Copyright (C) 1984-2009 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
- name: Execute commands in nodes.
  action: shell
      chdir                  # cd into this directory before running the command
      creates                # a filename, when it already exists, this step will *not* be run.
      executable             # change the shell used to execute the command. Should be an absolute path to the executable.
      free_form=             # The shell module takes a free form command to run, as a string.  There‘s not an actual option
                               named "free form".  See the examples!
      removes                # a filename, when it does not exist, this step will *not* be run.
      warn                   # if command warnings are on in ansible.cfg, do not warn about this particular line if set to
                               no/false.
 如果待执行的语句少,写在一起也可以,还可以加载环境......

[[email protected] ~]# ansible web -m shell -a ‘. ~/.bash_profile;ps -ef|grep httpd‘
web | SUCCESS | rc=0 >>
root       4406   4405  0 06:32 pts/0    00:00:00 /bin/sh -c . ~/.bash_profile;ps -ef|grep httpd
root       4410   4406  0 06:32 pts/0    00:00:00 grep httpd

scripts模块可以在本地写一个脚本,然后在远程服务器上执行。如下

script用法

[[email protected] ~]# ansible-doc -s script
less 436
Copyright (C) 1984-2009 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
- name: Runs a local script on a remote node after transferring it
  action: script
      creates                # a filename, when it already exists, this step will *not* be run.
      free_form=             # path to the local script file followed by optional arguments.
      removes                # a filename, when it does not exist, this step will *not* be run.

name: 将本地脚本复制到远程主机并运行之
action: script
creates      # 一个文件名,当这个文件存在,则该命令不执行
free_form=   # 本地脚本路径
removes      # 一个文件名,这个文件不存在,则该命令不执行

[[email protected] ~]# cat time.sh 
#!/bin/bash
date > /tmp/shijian

使用script模块执行,使用是相当路径也可以使用绝对路径。

[[email protected] ~]# ansible web -m script -a ‘time.sh‘
web | SUCCESS => {
    "changed": true, 
    "rc": 0, 
    "stderr": "", 
    "stdout": "", 
    "stdout_lines": []
}

验证下web服务器上内容

[[email protected] ~]# ansible web -a ‘cat /tmp/shijian‘

web | SUCCESS | rc=0 >>

Sun May  1 06:35:30 CST 2016

时间: 2024-10-07 03:51:24

ansible之shell和script模块的相关文章

ansible执行shell模块和command模块报错| FAILED | rc=127 >> /bin/sh: lsof: command not found和| rc=2 >> [Errno 2] No such file or directory

命令: ansible -i hosts_20 st  -m shell -a 'service zabbix_agentd star'  -K --become ansible -i hosts_20 st  -m shell -a 'lsof -i:10050'  -K --become 在shell模块报错:| FAILED | rc=127 >>/bin/sh: lsof: command not found 在command模块报错:| rc=2 >>[Errno 2]

ansible的安装与介绍、host-pattern格式、ansible的command模块、ansible的shell模块、ansible的script模块、ansible的copy模块

一.ansible的安装与介绍 ansible需要安装在管控机上 首先安装wget(如果机器上有可以忽略) 下载安装wget yum install -y wget 将epel源下载安装到本地 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 安装ansible yum install -y ansible ansible的命令格式 Usage: ansible <host-pattern>

ansible学习系列2-ansible常用模块使用

1. 查看支持的模块 [[email protected] ~]# ansible-doc -l 这里我们看下ansible的支持的模块个数 [[email protected] ~]# ansible-doc -l |wc -l #查看支持的模块个数 1039 [[email protected] ~]# ansible --version #查看我们的ansible版本号 ansible 2.3.1.0 config file = /etc/ansible/ansible.cfg confi

L13 ansible 基础应用与常见模块

ansible 基础应用与常见模块 ansible中文手册:http://www.simlinux.com/books/Ansible-notes.pdf 1,运维工具简介 运维工具: 系统安装(物理机.虚拟机)--> 程序安装.配置.服务启动 --> 批量操作(批量运行命令) --> 程序发布 --> 监控 ansible 能够实现:程序安装.配置.服务启动 --> 批量操作(批量运行命令) --> 程序发布 ansible的核心组件: ansible core ho

Ansible 之 概念和常用模块介绍

1  概述 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括如下的特性: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:

ansible的几个常用模块

Ansible是什么呢?ansible是最新出现的自动化运维工具,基于python开发,集合了众多的运维工具(puppet,cfengine,chef等)的优点,实现了批量管理系统配置,批量程序部署,反正啥都是批量实现就对了. ansible有如下优点: ? 1.部署简单,需要在主控端安装ansible环境,被控端不需要任何操作. ? 2.默认使用ssh协议对设备进行管理 ? 3.可扩展性强且支持API及自定义模块,可通过Python扩展 ? 4.通过Playbooks来指定强大的配置,状态管理

自动化运维工具--Ansible(安装部署、模块简介与操作)

一.Ansible概述 互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式. 自动化运维工具划分为两类: 一是需要使用代理工具的,也就是基于agent程序来实现管理功能,例如puppet.func.zabbix等 二是不需要代理配置工具的,可以直接基于SSH服务来完成管理功能,如ansible,fabric等. 自动化运维工具比较: 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python

Ansible的入门及常见模块总结实战

Ansible 帮助获取: ? ansible-doc -s 模块名 ##查看指定模块的帮助信息 ? ansible-doc -l ##查看支持的所有模块 常用模块: 模块名 用途 file 文件管理,创建文件.目录或链接文件 copy / synchronize 用于传输文件或目录,对于copy传输慢建议采用synchronize(rsync封装) cron 计划任务模块 user 用户管理 fetch 从客户端文件系统拉取文件到ansible服务端 service 服务状态管理 yum 包管

ansible之shell模块

例:通过命令对某节点修改时间[[email protected] tmp]# ansible slave -m command -a 'date -s "2016/5/13 13:12"'client02 | SUCCESS | rc=0 >>Fri May 13 13:12:00 CST 2016agent.test.com | SUCCESS | rc=0 >>Fri May 13 13:12:00 CST 2016 [[email protected] t