第4天:Ansible模块
Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下:
1)将模块拷贝到远程服务器
2)执行模块定义的操做,完成对服务器的修改
3)在远程服务器中删除模块
需要说明的是,Ansible中的模块是幂等的。也就是说,多次执行相同的操作,只有第一次会起作用。这也是在编写自定义Ansible模块的需要注意的地方。
Ansible提供了大量的模块,ansible-doc命令用于在命令行查看模块列表,也可以使用该工具在命令行获取模块帮助信息
ansible-doc -l
下面命令用户获取file模块的帮助信息
ansible-doc file
ansible-doc -l file
下面是一些比较基础,重要,同时也是使用频率比较高的模块
ping
ping模块是Ansible中最简单的模块,用来测试现有的SSH参数是否能够顺利连通远程服务器
ansible test -m ping
远程命令模块
command 是Ansible的默认模块,可以不指定模块名称直接运行Linux命令, 也可以显示地通过-m指定command模块
command在执行Linux命令时不能使用管道
ansible test -a 'hostname'
ansible test -m command -a 'hostname'
raw模块相当于使用SSH直接执行Linux命令,不会进入到Ansible的模块子系统中
ansible test -m raw -a 'cat /etc/passwd|wc -l'
shell模块不仅可以执行Linux命令,还是可以执行远程服务器上的shell脚本文件
ansible test -m shell -a 'cat /etc/passwd|wc -l' ansible test -m shell -a '/home/heboan/test.sh' #脚本需要加上执行权限
script模块可以在远程服务器上执行主控节点的脚本文件,起功能相当于scp+shell的组合。脚本执行完成以后会在远程服务器上删除脚本文件
ansible test -m script -a 'test.sh'
file
file模块主要用于对远程服务器上的文件(包括链接和目录)进行操作,包括修改文件的权限,修改文件的所有者、创建文件、删除文件等。
创建一个目录
ansible test -m file -a 'path=/tmp/dd state=directory mode=0755' #目录不存在,会创建目录
#如果state取值为file,即使文件不存在也不会被创建
修改权限
ansible test -m file -a 'path=/tmp/dd state=touch mode=''' #如果文件不存在,则创建一个新文件,如果 文件或目录以存在,更新其最后访问时间和修改时间 #state取值为absent时,删除目录,文件或软连接
创建一个软连接
ansible test -m file -a "src=/tmp/dd dest=/tmp/dd1 owner=heboan group=heboan state=link"
修改一个文件的所有者
ansible test -m file -a "path=/tmp/dd owner=root group=root mode=0644"
copy
copy模块用来将主控节点的文件或目录拷贝到远程服务器上。
copy模块中的重要选项:
- src:要复制到远程主机的文件地址,可以是绝对路径,也可以是相对路径,如果路径是一个目录,将递归复制,如果路径使用‘/’结尾,则只复制目录里面的内容,包在包含目录在内的整个内容
- dest:文件复制的目的地,必须是一个绝对路径,如果源文件是一个目录,那么dest指向的也必须是一个目录
- force:默认取值 为yes,表示目标主机包含该文件,但内容不同时会强制覆盖,如果未no,只有目标主机不存在该文件时,才会进行复制
- backup:默认取值为no,如果取值为yes,那么,在覆盖之前将原文件进行备份
- directory_mode:递归设定目录权限,默认为系统默认权限
- others:所有file模块里的选项都可以在这里使用
拷贝文件到远程服务器
ansible test -m copy -a "src=test.sh dest=/tmp/test.sh"
拷贝文件到远程服务器,如果远程服务器已经存在,则备份文件
ansible test -m copy -a "src=test.sh dest=/tmp/test.sh backup=yes force=yes"
拷贝文件到远程服务器,并且修改文件的所有者和权限
ansible test -m copy -a "src=test.sh dest=/tmp/test.sh owner=root group=root force=yes" -become
user/group
创建一个用户
ansible test -m user -a "name=sellsa comment='sellsa' uid=1329 group=heboan" -become comment:用户的详细描述
删除一个用户
ansible test -m user -a 'name=sellsa state=absent' -become
创建一个组
ansible test -m group -a 'name=ansible state=present gid=1234' -become
删除一个组
ansible test -m group -a 'name=ansible state=absent' -become
get_url
下载文件到远程服务器
ansible test -m get_url -a "url=https://dldir1.qq.com/qqfile/qq.exe dest=/tmo/qq.exe"
下载文件到远程服务器,并修改文件的权限
ansible test -m get_url -a "url=https://dldir1.qq.com/qqfile/qq.exe dest=/tmo/qq.exe mode=0777"
下载文件到远程服务器,并检查文件的md5校验
ansible test -m get_url -a "url=https://dldir1.qq.com/qqfile/qq.exe dest=/tmo/qq.exe mode=0777 checksum=md5:xxxxxxx"
unarchive
unarchive模块用于解压文件,其作用类似于Linux下的tar命令。默认情况下是将控制节点的压缩包拷贝到远程服务器,然后进行解压。
ansible test -m unarchive -a "src=heboan.tar.gz dest=/tmp/data"
解压远程的文件
ansible test -m unarchive -a "src=/tmp/heboan.tar.gz dest=/tmp/data remote_src=yes "
git
git模块就是远程服务器执行git相关的操作,该模块常用的选项如下:
- repo:远程git 库地址,可以是git协议、ssh协议或http协议的地址
- dest:必选选项,git库clone到本地服务器以后保存的绝对路径
- version:克隆远程git库的版本,取值可以为HEAD、分支名称、tag的名称,也可以是一个commit的hash值
- force:默认值为no, 当为yes时,当本地的库有修改时,则会放弃本地的修改
- accept_hostkey:当该选项取值为yes时,如果git库的服务器不在know_hosts中,则添加到know_hosts中
- key_file:指定克隆远程git库地址时使用的私钥
ansible test -m git -a "repo=https://github.com/kennethreitz/requests.git dest=/tmp/requests version=HEAD"
stat
stat模块用户获取远程服务器上的文件信息,其作用类似于linux下的stat命令。stat模块可以获取atime、ctime、mtime、checksum、size、uid、gid等信息
stat只有path这一关必选项,用来指定文件或目录的路径
#获取文件的相应信息
ansible test -m stat -a "path=/etc/passwd"
cron
cron是管理Linux下计划任务的模块,该模块包含以下重要选项:
- backup:取值为yes 或no,默认为no,表示修改之前先做备份
- state:取值为present或absent,用来确认该任务是创建还是删除
- name:该任务的描述
- job:添加或删除任务,主要取决于state的值
- user:操作哪一个用户的crontab
- cront_file:如果指定该选项,则该文件替换远程主机上的cron.d目录下的用户任务计划
- month weekday day minute hour 取值与crontab类似,例如,对于minute的取值范围0-59,也可以选择‘*’表示没分钟运行,或者'*/5'表示每5分钟运行
ansible test -m cron -a "backup=yes name='test cron' minute=*/2 hour=* job='ls /tmp >/dev/null'"
service
service模块的作用类似于Linux下的service命令,用来启动、停止、重启服务。
- name:服务的名称,该选项为必选项
- state: 可以取值started、stopped、restarted和reloaded。其中started和stoped是幂等的,也就是说如果服务已经启动了,执行started不会执行任何操作
- sleep:重启的过程中,先停止服务然后sleep几秒再启动
- enabled:取值为yes或no,用来设置服务是否开机启动
ansible test -m service -a "name=redis state=started"
sysctl
该模块的作用于Linux下的 sysctl命令相似,用于控制Linux的内核参数,常用选项:
- name:需要设置的参数
- value:需要设置的值
- sysctl_file:sysctl.conf文件的绝对路径,默认路径是/etc/sysctl.conf
- reload:该选项可以取值为yes或no,默认为yes,表示设置完成以后是否需要执行sysctl -p操作
#将overcommit_memory参数的值为1
ansible test -m sysctl -a "name=vm.overcommit_memory value=1" -become
mount
在远程服务器上挂载磁盘每, 当进行磁盘操作时,如果挂载点指定的路径不存在,将创建该路径
#挂载/dev/vda盘到/mnt/data目录
ansible test -m mount -a "name=/mnt/data src=/dev/vda fstype=ext4 state=mounted"
synchronize
synchronize模块是对rsync命令的封装,以便对常见的 rsync任务进行处理
synchronize模块的常用选项:
- src:需要同步到远程服务器的文件或目录
- dest:远程服务器保存数据的路径
- archive:默认取值为yes,相当于同时开启recursive、links、perms、times、owner、group、-D选项
- compress:默认为yes,表示文件在同步过程中是否启用压缩
- delete:默认为no,当取值为yes时,表示删除dest中存在而src中不存在的文件
ansible test -m synchronize -a 'src=heboan/ dest=/tmp/www' #heboan/ 同步heboan目录里面的内容到www目录
#heboan 同步heboan整个目录到www目录
第4天:Ansible模块的更多相关文章
- ansible模块
ansible模块: 模块(Modules),类似于 "任务插件"("task plugins")或"库插件"("library ...
- ansible笔记(3):ansible模块的基本使用
ansible笔记():ansible模块的基本使用 在前文的基础上,我们已经知道,当我们使用ansible完成实际任务时,需要依靠ansible的各个模块,比如,我们想要去ping某主机,则需要使用 ...
- ansible模块command、shell、raw、script
简介 环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v ...
- win10的pycharm中安装ansible模块过程
前面的安装报错信息 ansible模块安装报错:Could not install packages due to an OSError: [Errno 2] No such file or dire ...
- Ansible 模块命令介绍
copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...
- ansible 模块 分享
A a10_server 管理A10 Networks AX / SoftAX / Thunder / vThunder设备 a10_service_group 管理A10网络设备的服务组 a10_v ...
- ansible 模块
1. #vim /etc/ansible/yaml/back.yml - hosts: siyi tasks: - name: "yum rsync" yum: name=rsyn ...
- ansible模块学习
ansible的功能: 模块化任务,调用特定的模块,完成特定的任务 基于python语言实现,由paramiko.pyyaml和jinja2三个模块构建 部署简单,agentless,ansible基 ...
- 4.1、Ansible模块
ansible-doc -l 列出所有模块 ansible-doc 模块名 查看模块的help说明 ansible-doc -s module_name:获取指定模块的使用信息 ***文 ...
随机推荐
- asp.net RDLC报表入门
Asp.net RDLC 报表入门 这几天帮给同事讲解Asp.net RDLC 报表方面的知识,顺便做个简单教程,在这里分享给大家. 由于图片多又大,写了一半,光上传图片就把我累个半死,所以我教把程放 ...
- Tomcat 7下如何利用 catalina.properties 部署公用类
Tomcat 有很多配置文件,其中一个是 catalina.properties ,本文介绍catalina.properties 中的设置项. 一.组成 catalina.properties ...
- java分页通用篇
一.创建分页通用类 package com.dkyw.util; import java.util.List; public class Page<T> { private int tot ...
- Quick-Cocos2dx-Community_3.6.3_Release 编译时libtiff.lib 无法解析
Quick-Cocos2dx-Community_3.6.3_Release 使用VS2012编译,报错: libtiff.lib lnk2001 无法解析的外部符号 ltod3 类似于上面这种,刚才 ...
- OPENId是什么, OAUTH 是什么
what is openId open id is said to be a protocol which uses url as username, so if a website supports ...
- 程序员你为什么这么累? - Controller规范
导读:程序员你为什么这么累? 接口定义:程序员你为什么这么累? - 接口定义 第一篇文章中,我贴了2段代码,第一个是原生态的,第2段是我指定了接口定义规范,使用AOP技术之后最终交付的代码,从15行到 ...
- HDU 1728 逃离迷宫 (广搜)
题目链接 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...
- bzoj 3028 母函数
首先我们可以求出来所有食物的母函数: 汉堡:f(x)=1/(1-x^2). 可乐:f(x)=1+x. 鸡腿:f(x)=1+x+x^2. 蜜桃多:f(x)=x/(1-x^2). 鸡块:f(x)=1/(1 ...
- Eureka服务下线(Cancel)源码分析
Cancel(服务下线) 在Service Provider服务shut down的时候,需要及时通知Eureka Server把自己剔除,从而避免其它客户端调用已经下线的服务,导致服务不可用. co ...
- python模块(requests,logging)
一.requests Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythone ...