ansible 自动化(2)
模块介绍:
copy模块
使用copy模块,可以将本地文件一键复制到远程服务器;
-a后跟上参数,参数中指定本地文件和远端路径;
[root@ZABBIX ~]# ansible glq -m copy -a "src=~/fping-3.8.tar.gz dest=~/"
10.69.69.121 | success >> {
"changed": true,
"dest": "/root/fping-3.8.tar.gz",
"gid": 0,
"group": "root",
"md5sum": "1e36467cc96a4ca959925ac167ea19af",
"mode": "0644",
"owner": "root",
"size": 147448,
"src": "/root/.ansible/tmp/ansible-tmp-1482214561.7-273384209097162/source",
"state": "file",
"uid": 0
}
10.107.2.56 | success >> {
"changed": true,
"dest": "/root/fping-3.8.tar.gz",
"gid": 0,
"group": "root",
"md5sum": "1e36467cc96a4ca959925ac167ea19af",
"mode": "0644",
"owner": "root",
"size": 147448,
"src": "/root/.ansible/tmp/ansible-tmp-1482214563.87-235871924804761/source",
"state": "file",
"uid": 0
}
10.107.2.44 | success >> {
"changed": true,
"dest": "/root/fping-3.8.tar.gz",
"gid": 0,
"group": "root",
"md5sum": "1e36467cc96a4ca959925ac167ea19af",
"mode": "0644",
"owner": "root",
"size": 147448,
"src": "/root/.ansible/tmp/ansible-tmp-1482214563.94-108812671292926/source",
"state": "file",
"uid": 0
} 10.107.2.58 | success >> {
"changed": true,
"dest": "/root/fping-3.8.tar.gz",
"gid": 0,
"group": "root",
"md5sum": "1e36467cc96a4ca959925ac167ea19af",
"mode": "0644",
"owner": "root",
"size": 147448,
"src": "/root/.ansible/tmp/ansible-tmp-1482214563.92-185412226226660/source",
"state": "file",
"uid": 0
}
验证是否copy成功:
[root@ZABBIX ~]# ansible glq -m command -a 'ls -al /root/fping-3.8.tar.gz'
10.107.2.56 | success | rc=0 >>
-rw-r--r-- 1 root root 147448 Dec 20 14:15 /root/fping-3.8.tar.gz
10.107.2.44 | success | rc=0 >>
-rw-r--r-- 1 root root 147448 Dec 20 14:15 /root/fping-3.8.tar.gz
10.107.2.58 | success | rc=0 >>
-rw-r--r-- 1 root root 147448 Dec 20 14:15 /root/fping-3.8.tar.gz
10.69.69.121 | success | rc=0 >>
-rw-r--r-- 1 root root 147448 Dec 20 07:15 /root/fping-3.8.tar.gz
command模块:
command模块为ansible默认模块,不指定-m参数时,使用的就是command模块;
comand模块比较简单,常见的命令都可以使用,但其命令的执行不是通过shell执行的,所以,像这些 "<", ">", "|", and "&"操作都不可以,当然,也就不支持管道;
缺点是:不支持管道,就没法批量执行命令;
实例:
[root@ZABBIX ~]# ansible glq -m command -a 'pwd'
10.69.69.121 | success | rc=0 >>
/root
10.107.2.56 | success | rc=0 >>
/root
10.107.2.44 | success | rc=0 >>
/root
10.107.2.58 | success | rc=0 >>
/root
shell模块
使用shell模块,在远程命令通过/bin/sh来执行;所以,我们在终端输入的各种命令方式,都可以使用;
但是我们自己定义在.bashrc/.bash_profile中的环境变量shell模块由于没有加载,所以无法识别;如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句;
对shell模块的使用可以分成两块:
1) 如果待执行的语句少,可以直接写在一句话中:
[root@ZABBIX ~]# ansible glq -a "ifconfig eth0 | grep -e "^10.";pwd" -m shell
10.69.69.121 | success | rc=0 >>
/root 10.107.2.44 | success | rc=0 >>
/rooteth0: error fetching interface information: Device not found 10.107.2.56 | success | rc=0 >>
/root 10.107.2.58 | success | rc=0 >>
/rooteth0: error fetching interface information: Device not found
2) 如果在远程待执行的语句比较多,可写成一个脚本,通过copy模块传到远端,然后再执行;但这样就又涉及到两次ansible调用;对于这种需求,ansible已经为我们考虑到了,script模块就是干这事的;
scripts模块
使用scripts模块可以在本地写一个脚本,在远程服务器上执行:
脚本如下:
[root@ZABBIX ~]# vim test.sh
#!/bin/bash
declare -i SUM=0
for ((i=1;i<=100;i+=1))
do
let SUM+=$i
done
echo $SUM
执行脚本:
[root@ZABBIX ~]# ansible glq -m script -a "/root/test.sh"
10.69.69.121 | success >> {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": "5050\r\n"
}
10.107.2.44 | success >> {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": "5050\r\n"
}
10.107.2.56 | success >> {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": "5050\r\n"
}
10.107.2.58 | success >> {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": "5050\r\n"
}
ansible 自动化(2)的更多相关文章
- Ansible自动化运维工具-上
[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...
- CentOS7系统 ansible自动化部署多台服务器部署
CentOS7系统 ansible自动化部署多台服务器部署 Ansible工作机制 从图中可以看出ansible分为以下几个部份: 1> Control Node:控制机器2> In ...
- ansible 自动化运维
Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...
- ansible自动化工具安装和简单使用
ansible自动化工具安装和简单使用 1.安装 ansible依赖于Python 2.6或更高的版本.paramiko.PyYAML及Jinja2. 2.1 编译安装 解决依赖关系 # yum -y ...
- Jenkins +svn +maven +tomcat+ ansible 自动化批量部署
Jenkins +svn +maven +tomcat+ ansible 自动化批量部署 一.部署svn yum install subversion 先创建目录 mkdir /home/svn 创建 ...
- [k8s]kubespray(ansible)自动化安装k8s集群
kubespray(ansible)自动化安装k8s集群 https://github.com/kubernetes-incubator/kubespray https://kubernetes.io ...
- Jenkins+Gitlab+Ansible自动化部署(五)
Freestyle Job实现静态网站部署交付(接Jenkins+Gitlab+Ansible自动化部署(四)https://www.cnblogs.com/zd520pyx1314/p/102445 ...
- Jenkins+Gitlab+Ansible自动化部署(六)
Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs. ...
- Jenkins+Gitlab+Ansible自动化部署(三)
接Jenkins+Gitlab+Ansible自动化部署(一)https://www.cnblogs.com/zd520pyx1314/p/10210727.html 和(二)https://www. ...
- Jenkins+Gitlab+Ansible自动化部署(一)
首先准备实验环境 虚拟机 主机名 IP地址 服务 系统版本 内核版本 Vmware Workstation 14 gitlab.example.com 192.168.244.130 gitlab ...
随机推荐
- c语言选择排序
简单选择排序是经常用到的一种排序算法. 原理: 1.简单选择排序一句话概括:每次选择无序数列中最小的将其放在有序数列的最后. 2.在简单选择排序中,我们用初始化的数字int a[6]={2,5,6,3 ...
- html5调取手机摄像头或相册
html5调用手机摄像头或者相册 由于input的type=file 格式的文件的界面并不是我们所希望的界面,所以在此我隐藏input,自定义样式,这个样式就在<a>中自己定义,这里我就不 ...
- 笔记本win8,mac10.10,ubuntu,android四系统安装
前言,最简单的是win8和ubuntu 最难啃的是mac android版只是要注意一个小技巧,目前算是独创 (被android坑了一次,两块硬件,android版把500Gntfs的硬盘整个识别为一 ...
- eclipse无法创建Server
报错:Cannot create a server using the selected type1.退出eclipse 2.到[工程目录下]/.metadata/.plugins/org.eclip ...
- PHP中spl_autoload_register函数的用法
spl_autoload_register (PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明bool spl_autolo ...
- 公网,专用,共享独立IP介绍
什么是IP地址? IP地址也被称为InternetProtocol地址,IP地址被用于在互联网上确定不同的计算机和设备.你可以认为它像一个邮寄信封一个家庭返回地址,只在数字和时间使用.IP地址被用于在 ...
- 分组 cube rollup NVL (expr1, expr2)
cube rollup NVL (expr1, expr2)->expr1为NULL,返回expr2:不为NULL,返回expr1.注意两者的类型要一致 NVL2 (expr1, expr2, ...
- 从Elo Rating System谈到层次分析法
1. Elo Rating System Elo Rating System对于很多人来说比较陌生,根据wikipedia上的解释:Elo评分系统是一种用于计算对抗比赛(例如象棋对弈)中对手双方技能水 ...
- .net 批量打印可实现方案
最近几年一直在教育行业工作,主要负责竞赛类系统的开发工作,包括网上报名,安排考场,在线考试,学业报告书等. 打印功能在这个信息化时代非常普遍,浏览器都自带打印功能,通常的做法是调用 window.pr ...
- html中的标签
1.<big></big>定义大字体的文字 2.<blockquote>标记长的引用:</blockquote>请注意,浏览器在 blockquote ...