模块一: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模块解析及使用的更多相关文章

  1. TypeScript 素描 - 模块解析、声明合并

    模块解析 模块解析有两种方式 相对方式  也就是以/或 ./或-/开头的,比如import jq  from "/jq" 非相对方式  比如 import model  from ...

  2. python-pcap模块解析mac地址

    python-pcap模块解析mac地址 作者:vpoet mail:vpoet_sir@163.com import pcap import binascii a = pcap.pcap() a.s ...

  3. ansible模块

    ansible模块: 模块(Modules),类似于 "任务插件"("task plugins")或"库插件"("library ...

  4. webpack模块解析

    前面的话 在web存在多种支持JavaScript模块化的工具(如requirejs和r.js),这些工具各有优势和限制.webpack基于从这些系统获得的经验教训,并将模块的概念应用于项目中的任何文 ...

  5. TypeScript和Node模块解析策略

    一般我们在模块化编码时,总会导入其它模块,通常我们使用如下语法: import { A } from './a'; // ES6语法 import { A } from 'a'; var A = re ...

  6. 利用Bioperl的SeqIO模块解析fastq文件

    测序数据中经常会接触到fastq格式的文件,比如说拿到fastq格式的原始数据后希望查看测序碱基的质量并去除低质量碱基.一般而言大家都是用现有的工具,比如说fastqc这个Java写的小程序,确实很好 ...

  7. ansible笔记(3):ansible模块的基本使用

    ansible笔记():ansible模块的基本使用 在前文的基础上,我们已经知道,当我们使用ansible完成实际任务时,需要依靠ansible的各个模块,比如,我们想要去ping某主机,则需要使用 ...

  8. optparse模块解析命令行参数的说明及优化

    一.关于解析命令行参数的方法 关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考: ...

  9. 第4天:Ansible模块

    Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下: 1)将模块拷贝到远程服务器 2)执行模块定义的操做,完成对服务器的修改 3)在远程服务器中删除模块 需要说明的是,Ansib ...

随机推荐

  1. HTML 基础及超链接练习

    实验一:HTML 基础及超链接练习 实验目的: 熟悉 HTML 基础及超链接的使用 实验要求: 1.建立至少 3 个以上的网页: 2.实现任意两网页之间的跳转(建议做个导航菜单): 3.每个网页里面至 ...

  2. 11 Java的方法 递归

    6.递归 A方法调用B方法,我们很容易理解! 递归就是:A方法调用A方法!就是自己调用自己 利用递归可以用简单的程序来解决一些复杂的问题. 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较 ...

  3. Eureka 基本教程

    目录 Eureka 基本教程 RestTemplate 使用 Eureka 使用 注册中心 提供者 消费者 Eureka 基本教程 RestTemplate 使用 学习Euraka的同学直接滑到最下面 ...

  4. 什么是SaaS?

    SaaS的定义 SaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务. SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际 ...

  5. 关于OAuth2.0 Authorization Code + PKCE flow在原生客户端(Native App)下集成的一点思考

    写在前面 前几天看了园友的一篇文章被广泛使用的OAuth2.0的密码模式已经废了,放弃吧 被再次提起: Implicit Flow Password Grant,均已被标记为Legacy,且OAuth ...

  6. 内置方法 __str__ __repr__

    内置方法(双下方法,魔术方法) 在不需要程序员定义,本身就存在的类中的方法就是内置方法 内置方法:  __名字__ __init__   不需要我们主动调用,而是在实例化的时候内部自动调用的,存在一种 ...

  7. 解决centos7服务器shadows已启动但是无法连接的问题

    firewall-cmd --permanent --add-port=8989/tcp firewall-cmd --reload 这是由于centos7防火墙并没有开放ss端口的问题 添加json ...

  8. VS2022 安装.NET 3.5/.NET 4/.NET 4.5/.NET 4.5.1目标包的方法

    最近重装了系统,就装了一个Visual Studio 2022,发现之前的老项目打不开了,需要下载目标包,但是在Visual Studio Installer 里面无法安装 .NET 3.5/.NET ...

  9. STM32芯片去除读写保护 | 使用ST-Link Utility去除STM32芯片读写保护

    1.使用ST-LINK V2下载器连接到STM32芯片, 点击Connect: 2.存在读保护: 3.修改选项字节(Option Bytes... ): 4.将读保护修改为Disabled. 5.打钩 ...

  10. golang实现WebSocket的商业化使用的开发逻辑(1)

    WebSocket是什么 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议.其最大特点之一就是:服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对 ...