ansible模块解析及使用
模块一:setup(收集远程主机信息)
[root@zabbix30 /]# ansible test -m setup
模块二:ping(测试主机是否在线)
[root@zabbix30 /]# ansible test -m ping
模块三:shell(可以使用特殊字符)
注:file copy user yum service 几个模块其实可以直接使用shell模块进行操作
[root@zabbix30 /]# ansible test -m shell -a 'useradd -M -s /sbin/nologin -r -u 321 abc'
模块四:cron(定时任务)
[root@zabbix30 /]# ansible test -m cron -a 'name="hello" minute=25 hour=11 job="touch /bye"'
模块五:copy(远程复制)
如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制。
[root@zabbix30 /]# ansible test -m copy -a 'src=/in.sh dest=/ mode=777'
[root@zabbix30 /]# scp -r root@10.0.0.7:/bye . (远程复制到本地)
shell > ansible Client -m copy -a "src=/home/test.sh dest=/tmp/ owner=root group=root mode=0755" # 向 Client 组中主机拷贝 test.sh 到 /tmp 下,属主、组为 root ,权限为 0755
模块六:script(远程执行脚本)
注:可以配合copy模块使用,copy发送完脚本后,在script批量执行脚本
[root@zabbix30 /]# ansible test -m script -a '/in.sh'
模块七:stat模块
获取远程文件状态信息,atime/ctime/mtime/md5/uid/gid 等信息
shell > ansible Client -m stat -a "path=/etc/syctl.conf"
模块八:mount
远程主机分区挂载
shell > ansible Client -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext4 opts=ro state=present"
模块九: service
远程主机系统服务管理
shell > ansible Client -m service -a "name=nginx state=stoped"
shell > ansible Client -m service -a "name=nginx state=restarted"
shell > ansible Client -m service -a "name=nginx state=reloaded"
模块十: user
远程主机用户管理
shell > ansible Client -m user -a "name=wang comment='user wang'"
shell > ansible Client -m user -a "name=wang state=absent remove=yes" # 添加删除用户
模块十一:group_by
在playbook执行的过程中,动态的创建主机组
模块十二:add_host
在playbook执行的过程中,动态的添加主机到指定的主机组中 常用参数: groups:添加主机至指定的组 name:要添加的主机名或IP地址
示例:
- name: add a host to group webservers hosts: webservers
tasks:
- add_host name={{ ip_from_ec2 }} group=webservers foo=42 #添加主机到webservers组中,主机的变量foo的值为42
模块十三:wait_for
在playbook的执行过程中,等待某些操作完成以后再进行后续操作
常用参数:
connect_timeout:在下一个任务执行之前等待连接的超时时间
delay:等待一个端口或者文件或者连接到指定的状态时,默认超时时间为300秒,在这等待的300s的时间里,wait_for模块会一直轮询指定的对象是否到达指定的状态,delay即为多长时间轮询一次状态。
host:wait_for模块等待的主机的地址,默认为127.0.0.1
port:wait_for模块待待的主机的端口
path:文件路径,只有当这个文件存在时,下一任务才开始执行,即等待该文件创建完成
state:等待的状态,即等待的文件或端口或者连接状态达到指定的状态时,下一个任务开始执行。当等的对象为端口时,状态有started,stoped,即端口已经监听或者端口已经关闭;当等待的对象为文件时,状态有present或者started,absent,即文件已创建或者删除;当等待的对象为一个连接时,状态有drained,即连接已建立。默认为started
timeout:wait_for的等待的超时时间,默认为300秒
示例:
- wait_for: port=8080 state=started #等待8080端口已正常监听,才开始下一个任务,直到超时
- wait_for: port=8000 delay=10 #等待8000端口正常监听,每隔10s检查一次,直至等待超时
- wait_for: host=0.0.0.0 port=8000 delay=10 state=drained #等待8000端口直至有连接建立
- wait_for: host=0.0.0.0 port=8000 state=drained exclude_hosts=10.2.1.2,10.2.1.3 #等待8000端口有连接建立,如果连接来自10.2.1.2或者10.2.1.3,则忽略。
- wait_for: path=/tmp/foo #等待/tmp/foo文件已创建
- wait_for: path=/tmp/foo search_regex=completed #等待/tmp/foo文件已创建,而且该文件中需要包含completed字符串
- wait_for: path=/var/lock/file.lock state=absent #等待/var/lock/file.lock被删除
- wait_for: path=/proc/3466/status state=absent #等待指定的进程被销毁
- local_action: wait_for port=22 host="{{ ansible_ssh_host | default(inventory_hostname) }}" search_regex=OpenSSH delay=10 #等待openssh启动,10s检查一次
模块十四:debug
调试模块,用于在调试中输出信息
常用参数:
msg:调试输出的消息
var:将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出
verbosity:debug的级别
示例:
# Example that prints the loopback address and gateway for each host
- debug: msg="System {{ inventory_hostname }} has uuid {{ ansible_product_uuid }}" - debug: msg="System {{ inventory_hostname }} has gateway {{ ansible_default_ipv4.gateway }}" when: ansible_default_ipv4.gateway is defined
- shell: /usr/bin/uptime
register: result
- debug: var=result verbosity=2 #直接将上一条指令的结果作为变量传递给var,由debug打印出result的值 - name: Display all variables/facts known for a host
- debug: var=hostvars[inventory_hostname] verbosity=4
模块十五:fail
用于终止当前playbook的执行,通常与条件语句组合使用,当满足条件时,终止当前play的运行。可以直接由failed_when取代。
选项只有一个:
msg:终止前打印出信息
示例:
- fail: msg="The system may not be provisioned according to the CMDB status." when: cmdb_status != "to-be-staged"
模块十六:assemble
用于组装文件,即将多个零散的文件,合并一个大文件
常用参数:
src:原文件(即零散文件)的路径
dest:合并后的大文件路径
group:合并后的大文件的属组
owner:合并后的大文件的属主
mode:合并后的大文件的权限
validate:与template的validate相同,指定命令验证文件
ignore_hidden:组装时,是否忽略隐藏文件,默认为no,该参数在2.0版本中新增
示例:
- hosts: all
tasks:
- name: Make a Directory in /opt
file: path=/opt/sshkeys state=directory owner=root group=root mode=0700
- name: Copy SSH keys over
copy: src=keys/{{ item }}.pub dest=/opt/sshkeys/{{ item }}.pub owner=root group=root mode=0600
with_items:
- dan
- kate
- mal
- name: Make the root users SSH config directory
file: path=/root/.ssh state=directory owner=root group=root mode=0700
- name: Build the authorized_keys file
assemble: src=/opt/sshkeys/ dest=/root/.ssh/authorized_keys owner=root group=root mode=0700 #将/opt/sshkeys目录里所有的文件合并到/root/.ssh/authorized_keys一个文件中
模块十七:file 创建文件或目录命令
- name: Create data directory for mongoc configuration server file: path={{ mongodb_datadir_prefix }}/configdb state=directory owner=mongod group=mongod
参数解析
path: 路径,一般用于创建删除文件或目录
state: file的相关操作,
directory表示创建目录,
link表示创建软连接,link还需要源路径和目标路径配合使用
touch表示创建文件,
absent表示删除文件
实例:
- name: check backupdir
shell: ls -d /usr/local/vvm/extraserver/bak
register: exist
ignore_errors: True
- name: mkdir bak
file: path=/usr/local/vvm/extraserver/bak state=directory ---?
when: exist.stdout == ""
其中exist是一个register定义接收上一个shell直接输出结果。
模块十八:unarchive 解压模块
用于解压文件,模块包含如下选项: copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,则要求目标主机上压缩包必须存在。 creates:指定一个文件名,当该文件存在时,则解压指令不执行 dest:远程主机上的一个路径,即文件解压的路径 grop:解压后的目录或文件的属组 list_files:如果为yes,则会列出压缩包里的文件,默认为no,2.0版本新增的选项 mode:解决后文件的权限 src:如果copy为yes,则需要指定压缩文件的源路径 owner:解压后文件或目录的属主
示例如下:
- unarchive: src=foo.tgz dest=/var/lib/foo
- unarchive: src=/tmp/foo.zip dest=/usr/local/bin copy=no
- unarchive: src=https://example.com/example.zip dest=/usr/local/bin copy=no
ansible模块解析及使用的更多相关文章
- TypeScript 素描 - 模块解析、声明合并
模块解析 模块解析有两种方式 相对方式 也就是以/或 ./或-/开头的,比如import jq from "/jq" 非相对方式 比如 import model from ...
- python-pcap模块解析mac地址
python-pcap模块解析mac地址 作者:vpoet mail:vpoet_sir@163.com import pcap import binascii a = pcap.pcap() a.s ...
- ansible模块
ansible模块: 模块(Modules),类似于 "任务插件"("task plugins")或"库插件"("library ...
- webpack模块解析
前面的话 在web存在多种支持JavaScript模块化的工具(如requirejs和r.js),这些工具各有优势和限制.webpack基于从这些系统获得的经验教训,并将模块的概念应用于项目中的任何文 ...
- TypeScript和Node模块解析策略
一般我们在模块化编码时,总会导入其它模块,通常我们使用如下语法: import { A } from './a'; // ES6语法 import { A } from 'a'; var A = re ...
- 利用Bioperl的SeqIO模块解析fastq文件
测序数据中经常会接触到fastq格式的文件,比如说拿到fastq格式的原始数据后希望查看测序碱基的质量并去除低质量碱基.一般而言大家都是用现有的工具,比如说fastqc这个Java写的小程序,确实很好 ...
- ansible笔记(3):ansible模块的基本使用
ansible笔记():ansible模块的基本使用 在前文的基础上,我们已经知道,当我们使用ansible完成实际任务时,需要依靠ansible的各个模块,比如,我们想要去ping某主机,则需要使用 ...
- optparse模块解析命令行参数的说明及优化
一.关于解析命令行参数的方法 关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考: ...
- 第4天:Ansible模块
Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下: 1)将模块拷贝到远程服务器 2)执行模块定义的操做,完成对服务器的修改 3)在远程服务器中删除模块 需要说明的是,Ansib ...
随机推荐
- LGP6011题解
昨天考试考到了这道题,那就来补一下题解吧. 题意简单不再阐述. 首先删除之后还要向左移动,很容易想到 ODT 平衡树,这个过于一眼,不再阐述. 重点说第二种方法. 向左平移的这个操作,我们是否可以用别 ...
- DataStage中Transformer的函数大全
一. 类型转换函数 类型转换函数用于更改参数的类型. 以下函数位于表达式编辑器的"类型转换"类别中.方括号表示参数是可选的.缺省日期格式为 %yyyy-%mm-%dd. 以下示例按 ...
- 6月4日 python学习总结 装饰器复习
1. 装饰器的原理以及为什么要使用装饰器 在代码运行期间动态增加功能的方式,称之为"装饰器"(Decorator). 在不影响原代码结构的情况下为其添加功能 2. 装饰器的基本 ...
- MySQL&SQL server&Oracle&Access&PostgreSQL数据库sql注入详解
判断数据库的类型 当我们通过一些测试,发现存在SQL注入之后,首先要做的就是判断数据库的类型. 常用的数据库有MySQL.Access.SQLServer.Oracle.PostgreSQL.虽然绝大 ...
- 【网鼎杯2020青龙组】Web WriteUp
AreUSerialz 打开题目直接给出了源代码 <?php include("flag.php"); highlight_file(__FILE__); class Fil ...
- LINUX系统、磁盘与进程的相关命令
ps ef:完整显示当前系统中所有运行的进程 kill 停止或杀死进程.9表示强制杀掉进程或任务 df 显示磁盘空间使用情况 du 用于显示指定目录下的文件以及子目录所占磁盘空间的大小. 与磁盘有关的 ...
- vue&uniapp环境搭建以及项目创建(webstorm)
以下是针对webstorm用户上手uniapp框架的学习 vue环境搭建以及配置(脚手架搭建) 首先要明确三样东西 npm:node.js的包管理器 webpack:主要用途是通过CommonJS 的 ...
- 为什么要使用 rabbitmq?
1.在分布式系统下具备异步,削峰,负载均衡等一系列高级功能; 2.拥有持久化的机制,进程消息,队列中的信息也可以保存下来. 3.实现消费者和生产者之间的解耦. 4.对于高并发场景下,利用消息队列可以使 ...
- spring-boot-learning-RabbitMQ
为什么需要MQ??? 异步处理: 场景: 用户注册后,需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式 2.并行的方式` 用户注册-发送注册邮箱-发送注册短信都完成之后才结束返回给客户端 邮 ...
- 面试问题之C++语言:Overload、Override及Overwirte的区别
Overload(重载):在C++程序中,可以将语义.功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型.顺序不同),即函数重载. 特点: (1)相同的范围(在同一个类中) (2)函数名 ...