zoukankan      html  css  js  c++  java
  • 第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='0644''
    
    #如果文件不存在,则创建一个新文件,如果 文件或目录以存在,更新其最后访问时间和修改时间
    
    #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目录
  • 相关阅读:
    android提供ToolBar实现划动菜单的陷阱
    style="display"之后不能获取offsetHeight或clientWidth这类测量的值
    onmouseenter与onmouseover
    使用Dom的Range对象处理chrome和IE文本光标位置
    js严格模式“use strict”
    正则表达式lastIndex属性浅析
    IE中的fireEvent和webkit中的dispatchEvent
    readonly=“readonly”与readonly=“true”
    【杂文】
    【洛谷p1015】【一本通p1309】回文数(noip1999)
  • 原文地址:https://www.cnblogs.com/sellsa/p/9952121.html
Copyright © 2011-2022 走看看