热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

运维工具Ansible―常用模块的使用

常用模块使用首先在使用模块之前我们可以查看一下模块有多少,不过大多数用不到。下面主要看几个常用模块[root@soso~]#ansible-doc-l|wc-l2621、set

常用模块使用

首先在使用模块之前我们可以查看一下模块有多少,不过大多数用不到。下面主要看几个常用模块

[root@soso ~]# ansible-doc -l | wc -l
262

1、setup

##用来查看远程主机的基本信息

[root@soso ~]# ansible test -m setup

2、ping

##用来测试远程主机的运行状态

[root@soso ~]# ansible test -m ping

3、file

##设置文件属性

[root@soso ~]# ansible-doc -s file- name: Sets attributes of filesaction: fileforce                  # 需要在两种情况下创建软连接,一种是源文件不存在,但之后建立的情况下;另一种是目标软连接已存在,需要先取消之前的软链,然后创建新的软链:有两个选项:yes|nogroup                  # 定义文件/目录的所属组mode                   # 定义文件/目录的权限owner                  # 定义文件/目录的所属主path=                  # 必选项,定义文件/目录的路径recurse                # 递归设置文件的属性,只对目录有效src                    # 要被链接的源文件路径,只应用于state=link的情况有效state                  # 状态        directory        #如果目录不存在则创建目录        file                #即使文件不存在,也不会被创建        link                #创建软连接        hard                #创建硬链接        touch               #如果文件不存在,则会创建一个新的文件;如果文件或目录存在,则更新其最后的修改时间        absent              #删除目录、文件或者取消链接文件(END)

    将远程主机/etc/passwd 文件链接到 /root 目录下:

[root@soso ~]# lsPython-2.7.5  shell  soft[root@soso ~]# ansible test -m file -a "src=/etc/passwd dest=/root/passwd state=link"                192.168.1.2 | success >> {    "changed": true,     "dest": "/root/passwd",     "gid": 0,     "group": "root",     "mode": "0777",     "owner": "root",     "size": 11,     "src": "/etc/passwd",     "state": "link",     "uid": 0}[root@soso ~]# lltotal 12drwxr-xr-x 18 1000 1000 4096 Nov 26 11:11 Python-2.7.5lrwxrwxrwx  1 root root   11 Dec 16 15:35 passwd -> /etc/passwddrwxr-xr-x  3 root root 4096 Dec  7 15:06 shelldrwxr-xr-x 12 root root 4096 Dec 16 15:32 soft


    删除创建的软连接

[root@soso ~]# ansible test -m file -a 'path=/root/passwd state=absent'           192.168.1.2  | success >> {    "changed": true,     "path": "/root/passwd",     "state": "absent"}[root@soso ~]# lltotal 12drwxr-xr-x 18 1000 1000 4096 Nov 26 11:11 Python-2.7.5drwxr-xr-x  3 root root 4096 Dec  7 15:06 shelldrwxr-xr-x 12 root root 4096 Dec 16 15:32 soft


    创建文件

[root@soso ~]# ansible test -m file -a 'path=/root/1 state=touch'192.168.1.2 | success >> {    "changed": true,     "dest": "/root/1",     "gid": 0,     "group": "root",     "mode": "0644",     "owner": "root",     "size": 0,     "state": "file",     "uid": 0}[root@soso ~]# ls1  Python-2.7.5  shell  soft

4、cope

##复制本地文件到远程主机,进行统一部署

用法:

    backup          # 用于复制时,是否备份远程主机上的目标文件

    content         # 用于替代 ‘src’ ,可以直接设定指定文件的值

    dest=           # 必选项,要将源文件复制到远程主机的绝对路径,如果源文件是一个目录,那么远程路径也必须是一个目录

    directory_mode         # 递归设定目录的权限,默认为系统默认权限

    force                  # 强制覆盖。如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖;如果设置为no,则只有当目录主机的目录位置不存在该文件时,才复制。默认为yes

    group                  # 定义文件/目录的所属组

    mode                   # 定义文件/目录的权限

    owner                  # 定义文件/目录的所属主

    src                    # 要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用 '/' 结尾,则只复制目录里的内容,如果没有使用 '/' 来结尾,则包含目录在内的整个内容全部复制。


实例:

讲本地文件复制到远程主机

[root@soso ~]#  ansible test -m copy -a "src=/root/1 dest=/tmp/1  mode=600 "                         192.168.1.2 | success >> {    "changed": true,     "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",     "dest": "/tmp/1",     "gid": 0,     "group": "root",     "md5sum": "d41d8cd98f00b204e9800998ecf8427e",     "mode": "0600",     "owner": "root",     "size": 0,     "src": "/root/.ansible/tmp/ansible-tmp-1450252219.51-80486766978488/source",     "state": "file",     "uid": 0}[root@soso ~]# ll /tmp/1 -rw------- 1 root root 0 Dec 16 15:50 /tmp/1

5、command

##远程主机上执行命令

creates:一个文件名,当该文件存在,则该命令不执行

free_form:要执行的linux指令

chdir:在执行指令之前,先切换到该目录

removes:一个文件名,当该文件不存在,则该选项不执行

executable:切换shell来执行指令,该执行路径必须是一个绝对路径

[root@soso ~]# ansible test -m command -a 'ls /home'192.168.1.2| success | rc=0 >>rediszabbix

实例:

使用 creates 参数,判断一个文件是否存在,存在的话,就跳过后面的执行命令

[root@soso ~]# ansible test -m command -a 'creates=/tmp/1 ls -l /etc/passwd'              192.168.1.2  | success | rc=0 >>skipped, since /tmp/1 exists[root@soso ~]# ansible test -m command -a 'creates=/tmp/2 ls -l /etc/passwd' 192.168.1.2 | success | rc=0 >>-rw-r--r-- 1 root root 1882 Dec 14 20:11 /etc/passwd

6、shell

##与command不同的是,此模块可以支持命令管道,同时还有另一个模块也具备此功能:raw

实例1:

[root@soso ~]# ansible test -m shell -a 'cat /etc/passwd| grep root'192.168.1.2  | success | rc=0 >>root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin

7、synchronize

使用rsync同步文件。使用rsync 模块,系统必须安装rsync 包,否则无法使用这个模块

用法:

    archive                # 是否采用归档模式同步,即以源文件相同属性同步到目标地址

    checksum               # 是否效验

    compress               # 

    copy_links             # 同步的时候是否复制连接

    delete                 # 删除源中没有而目标存在的文件

    dest=                  # 目标地址

    dest_port              # 目标接受的端口

    dirs                   # 以非递归的方式传输目录

    existing_only          # Skip creating new files on receiver.

    group                  # Preserve group

    links                  # Copy symlinks as symlinks.

    mode                   # 模式,rsync 同步的方式 PUSH\PULL

    recursive              # 是否递归 yes/no

    rsync_opts             # 使用rsync 的参数

    rsync_path             # 服务的路径(源码编译时需指定)

    rsync_timeout          # Specify a --timeout for the rsync command in seconds.

    set_remote_user        # put user@ for the remote paths. If you have a custom ssh                                  config to define the remote user for

    src=\'#\'"                 # 源,同步的数据源

检查机器上是否装过rsync: 

 [root@soso ~]#which rsync

没有装过的主机可以远程安装rsync包:

 [root@soso ~]#  ansible test -m yum -a 'name=rsync state=latest'

实例:

1、将ansible 服务端/root/ 下的hello 文件同步到test的/tmp:

[root@soso ~]# ansible test -m  synchronize -a 'src=/root/hello dest=/tmp/'192.168.1.2 | success >> {    "changed": true,     "cmd": "rsync --delay-updates -F --compress --archive --rsh 'ssh  -S none -o StrictHostKeyChecking=no' --out-format='<>%i %n%L' \"/root/hello\" \"root@121.42.141.231:/tmp/\"",     "msg": "

8、cron

cron 模块,用于管理计划任务

用法:

    backup                 # 在对远程主机上的原计划任务修改之前做备份(也就是先备份再修改)

    cron_file              # 如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划

    day                    # 天(1-31,*,*/2, ……)

    hour                   # 小时( 0-23, *, */2, ……)

    job                    # T要执行的任务,依赖于state=present

    minute                 # 分钟(0-59,*,*/2,……)

    month                  # 月(1-12,*,*/2,……)

    name                   # 该任务的描述

    reboot                 # If the job should be run at reboot. This option

    special_time           #指定什么时候执行,参数:        reboot,yearly,annually,monthly,weekly,daily,hourly      

    state                  # 确认该任务计划是创建还是删除

    user                   #以哪个用户的身份执行

    weekday                #周(0-7,*,……)

实例:


1、给test 主机创建一个计划任务:

[root@soso ~]#  ansible test -m cron -a "name='echo ' hour=2 user=root job='echo 1 >> /root/hello' "            192.168.1.2 | success >> {    "changed": true,     "jobs": [        "echo "    ]}[root@soso ~]# ansible test -m shell -a "crontab -l"    192.168.1.2 | success | rc=0 >>* * * * 1 sh /root/shell/apache_log.sh #Ansible: echo* 2 * * * echo 1 >> /root/hello

2、删除刚才创建的计划任务

[root@soso ~]#  ansible test -m cron -a "name='echo' hour=2 user=root job='echo 1 >> /root/hello' state=absent"192.168.1.2 | success >> {    "changed": true,     "jobs": []}[root@soso ~]# ansible test -m shell -a "crontab -l"                                     192.168.1.2 | success | rc=0 >>* * * * 1 sh /root/shell/apache_log.sh

9、service

    service 模块作用于一些服务,比如对某些服务器的启动、重启、停止、重载等的管理

    arguments              # 给命令行提供一些选项

    enabled                # 是否开机启动  yes|no

    name=                  # 必选项,服务名称

    pattern                # 定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行

    runlevel               # 运行级别

    sleep                  # 如果执行了restarted,在则stop和start之间沉睡几秒钟

    state                  # 对当前服务执行启动,停止、重启、重新加载等操作               (started,stopped,restarted,reloaded)

实例:

实例:远程启动http

[root@soso ~]# ss -nlState      Recv-Q Send-Q        Local Address:Port          Peer Address:Port LISTEN     0      80                        *:3306                     *:*     LISTEN     0      128                       *:111                      *:*     LISTEN     0      128                       *:22                       *:*     LISTEN     0      128                       *:43131                    *:*     [root@soso ~]# ansible test -m service -a "name=httpd state=started enabled=yes" 192.168.1.2 | success >> {    "changed": true,     "enabled": true,     "name": "httpd",     "state": "started"}[root@soso ~]# ss -nlState      Recv-Q Send-Q        Local Address:Port          Peer Address:Port LISTEN     0      80                        *:3306                     *:*     LISTEN     0      128                       *:111                      *:*     LISTEN     0      128                       *:80                       *:*     LISTEN     0      128                       *:22                       *:*     LISTEN     0      128                       *:43131                    *:*

其他常用的模块还有  yum   user  filesystem mount  

本文出自 “linux---基础篇” 博客,请务必保留此出处http://perin.blog.51cto.com/10410663/1726277


推荐阅读
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 解决U盘安装系统后无法重启的问题
    本文详细探讨了运维新手常遇到的U盘安装系统后无法正常重启的问题,提供了从问题分析到具体解决方案的完整步骤。通过理解Boot Loader的工作原理和正确配置启动项,帮助用户顺利解决问题。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 在API测试中,我们常常需要通过大量不同的数据集(包括正常和异常情况)来验证同一个接口。如果为每种场景单独编写测试用例,不仅繁琐而且效率低下。采用数据驱动的方式可以有效简化这一过程。本文将详细介绍如何利用CSV文件进行数据驱动的API测试。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
author-avatar
铱雯_213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有