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 ...
随机推荐
- Cookie的Secure属性
基于安全的考虑,需要给cookie加上Secure和HttpOnly属性,HttpOnly比较好理解,设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie ...
- ue4 shooterGame 第一步 搭建git linux服务器
1.分别在linux(服务器)上安装git.和openssh服务, 在windows(客户机)上安装cygwin,模拟linux环境以及安装windows git客户端. 2.windows的cygw ...
- mb_系列函数和普通字符函数的区别
<?php //phpinfo(); $str = 'abcdef'; echo strlen($str);// 6 echo '<br/>'; echo substr($str, ...
- android 获取系统联系人 完全解析
一.代码 1.ContactsEngine.java import java.util.ArrayList; import java.util.HashMap; import java.util.Li ...
- 海量数据相似度计算之simhash短文本查找
在前一篇文章 <海量数据相似度计算之simhash和海明距离> 介绍了simhash的原理,大家应该感觉到了算法的魅力.但是随着业务的增长 simhash的数据也会暴增,如果一天100w, ...
- Odoo Shell
Odoo shell 提供了一个简便的操作 Odoo的交互界面, 从 odoo 9.0 开始就是标准功能, 无需安装第三方应用. 本文基于Odoo10 说明 Odoo Shell以及 Odoo Mod ...
- Test注解的两个属性(转)
Test注解的两个属性:expected和timeout Junit的Test注解支持两个可选的参数expected和timeout.expected声明一个测试方法必须抛出一个异常.如果不抛出异常或 ...
- [Docker]Docker快速上手学习笔记
0. 学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器.这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器 ...
- 解决PKIX(PKIX path building failed) 问题 unable to find valid certification path to requested target
最近在写java的一个服务,需要给远程服务器发送post请求,认证方式为Basic Authentication,在请求过程中出现了 PKIX path building failed: sun.se ...
- cxf+spring+数字签名开发webservice(二)
场景 上一章中的webservice接口,因为现场正式环境的项目与外部单位网络不通,是通过前置机与外部进行数据交换,所以我们将webservice部署在前置机,在使用HttpURLCo ...