zoukankan      html  css  js  c++  java
  • ansible模块及语法

    常用模块详解

    模块说明及示例:

    1.ping模块ping模块

    主要用于判断远程客户端是否在线,用于ping本身服务器,返回值是changed、ping
    示例 ansible clu -m ping

    2.Ansible command模块是Ansible默认模块

    主要用于执行Linux基础命令,可以执行远程服务器命令执行、任务执行等操作。
    但command模块不支持变量、重定向、管道符等,这些操作需要用shell模块执行
    command模块使用详解:
    chdir:执行命令前,切换到目录
    creates:当该文件存在时,不执行该步骤
    executable:切换shell来执行命令,需要使用命令的绝对路径
    free_from:需要执行的脚本,一般使用Ansible的-a参数代替。
    removes:当该文件不存在时,不执行该步骤
    warn:如果在ansible.cfg中存在告警,如果设定了false,不会告警该行
    示例ansible ansible-demo3 -m command -a "ls"
    (command执行linux命令有局限性,最好使用shell替代 )

    3.Ansible copy模块

    主要用于文件或者目录复制,支持文件、目录、权限、用户组功能
    copy模块使用详解:
    src:Ansible端源文件或者目录,空目录不复制
    content:用来替代src,用于将指定文件的内容复制到远程文件内
    dest:客户端目标目录或者文件,需要绝对路径
    backup:复制之前,先备份远程节点上的原始文件
    directory_mode:用于复制目录,新建的文件会被复制,而旧的不会被复制
    follow:支持link文件复制
    force:覆盖远程主机不一致的内容
    group:设定远程主机目录的组名
    mode:设定远程主机文件及目录的权限
    owner:设定远程主机目录的用户名
    示例
    ansible clu -m copy -a “src=/root/1.txt dest=/soft/2.txt group=root owner=root mode=755”

    4.Ansible yum模块

    主要用于软件的安装、升级、卸载,支持rpm软件包的管理
    yum模块使用详解:

    conf_file:设置远程yum执行时所依赖的yum配置文件
    disable_gpg_check:安装软件包之前是否检查gpg key
    name:需要安装的软件名称,支持软件组安装
    update_cache:安装软件之前更新缓存
    enablerepo:指定repo源名称
    skip_broken:跳过异常软件节点
    state:软件包状态,包括installed、present、latest、absent、removed
    present, installed是指安裝套件,而latest指安裝最新的套件,也就是使用 yum mirror 上最新的版本。
    absent, removed 没有什么区别
    示例ansible clu -m yum -a “name=http state=latest”

    5.Ansible user模块

    主要用于操作系统用户、组、权限、密码等操作
    user模块使用详解:
    system:默认创建为普通用户,为yes则创建系统用户
    append:添加一个新的组
    comment:添加描述信息
    createhome:给用户创建家目录
    force:强制删除用户
    group:创建用户主组
    groups:将用户加入组或者附属组添加
    home:指定用户的家目录
    name:表示状态,是否create、remove、modify
    password:指定用户的密码,为加密密码
    remove:删除用户
    shell:设置用户的shell登录环境
    uid:设置用户ID
    update_password:修改用户密码
    state:用户状态,默认为present,表示新建用户
    示例:ansible hadoop -m user -a "name=dba groups=admins,dbagroup append=yes home=/home/dba shell=/bash/shell state=present"

    6. setup模块

    主要用于获取主机信息,在playbooks里经常会用到的一个参数gather_facts就与该模块相关。setup模块下经常使用的一个参数是filter参数,具体使用示例如下

    ansible_all_ipv4_addresses # ipv4的所有地址
    ansible_all_ipv6_addresses # ipv6的所有地址
    ansible_date_time # 获取到控制节点时间
    ansible_default_ipv4 # 默认的ipv4地址
    ansible_distribution # 系统
    ansible_distribution_major_version # 系统的大版本
    ansible_distribution_version # 系统的版本号
    ansible_domain #系统所在的域
    ansible_env #系统的环境变量
    ansible_hostname #系统的主机名
    ansible_fqdn #系统的全名
    ansible_machine #系统的架构
    ansible_memory_mb #系统的内存信息
    ansible_os_family # 系统的家族
    ansible_pkg_mgr # 系统的包管理工具
    ansible_processor_cores #系统的cpu的核数(每颗)
    ansible_processor_count #系统cpu的颗数
    ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
    ansible_python # 系统上的python
    ansible cache -m setup -a 'filter=*processor*' # 用来搜索

    示例:
    ansible 10.212.52.252 -m setup -a 'filter=ansible_*_mb'   ansible host1 -m setup -a "filter=ansible_all_ipv4_addresses"
    (由于ansible执行剧本执行会去获取主机参数,对执行速度会有影响,可以使用gather_faces去进行预先缓存)

    7.file模块

    主要用于远程主机上的文件操作,file模块包含如下选项:
    force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
    group:定义文件/目录的属组
    mode:定义文件/目录的权限
    owner:定义文件/目录的属主
    path:必选项,定义文件/目录的路径
    recurse:递归的设置文件的属性,只对目录有效
    src:要被链接的源文件的路径,只应用于state=link的情况
    dest:被链接到的路径,只应用于state=link的情况
    state: :如果目录不存在,创建目录
    file:即使文件不存在,也不会被创建
    link:创建软链接
    hard:创建硬链接
    touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
    absent:删除目录、文件或者取消链接文件
    使用示例:
    ansible test -m file -a "path=/root/1.txt state=file/directory”

    8.cron模块(计划任务)

    用于定时执行任务

    相关参数:minute分、hour时、day日、month月、weekday周 (计划时间默认为*)

     name:必须 任务描述

     job:任务。要加引号(statepresent - 创建 adsent - 删除)

    示例: ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall warning" name=test'

    9.service模块

    用于管理服务

    name:服务名称

    state:服务执行操作(started、stopped、restarted)

    enable:自启动(yes)

    runlevel:运行级别

    示例:ansible host1 -m service -a "name=nginx state=started enabled=yes"

    10.group(管理用户组)

    用于创建修改用户组

    name:组名称

    gid:指定组gid

    state:absent不存在 present当前

    system:yes/no 

    示例:ansible host1 -m group -a "name=test_grp state=present"

    11.fetch:(文件拉取模块)

    用于目标主机上的文件拉取,不能拉取文件夹

    dest= # 本地存储拉取文件的目录。例如dest=/data,src=/var/log/messages

    fail_on_missing=[yes|no] # 当设置为yes时,如果拉取的源文件不存在,则此任务失败。在2.4以前是默认为no。2.4中默认为yes

    flat=[yes|no] # 允许您重写将主机名/路径/文件/文件附加到目的地的默认行为。如果dest以“/”结尾,则将使用源文件的基名称,类似于复制模块。很明显这很方便,如果文件名是唯一的。 

    src= # 远程主机上的源文件。只能是文件,不支持目录。在未来的版本中可能会支持目录递归拉取

    validate_checksum    # 获取文件后验证源和目标校验和是否匹配

    示例:ansible all -m fetch -a "src=/root/checkport.py dest=/data"

    12.mount(挂载服务)

    用于批量挂载服

    path: /mnt/dvd #挂载的目录(nfs客户端)

    src: /dev/sr0 #远端被挂载的目录 (nfs服务端)

    fstype: nfs #挂载类型

    opts: ro,noauto #自动挂载的参数

    state: present (写入自动挂载,但实际没有挂咋,需要重启服务器unmounted #取消临时挂载,但是没有清理自动挂载mounted #写入自动挂载,并且直接挂载了(常用)absent #取消临时挂载,并且清理自动挂载

     示例:ansible web01 -m mount -a 'src=172.16.1.31:/data path=/code/wordpress fstype=nfs state=mounted'

    13.user:(管理用户模块)

    name参数:必须参数,用于指定要操作的用户名称,可以使用别名 user。

    group参数:此参数用于指定用户所在的基本组。

    gourps参数:此参数用于指定用户所在的附加组。注意,如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合 append 参数使用,否则在默认情况下,当再次使用 groups 参数设置附加组时,用户原来的附加组会被覆盖。

    append参数:如果用户原本就存在多个附加组,那么当使用 groups 参数设置附加组时,当前设置会覆盖原来的附加组设置,如果不想覆盖原来的附加组设置,需要结合 append 参数,将 append 设置为 yes,表示追加附加组到现有的附加组设置,append 默认值为 no。

    shell参数:此参数用于指定用户的默认 shell。

    uid参数:此参数用于指定用户的 uid 号。

    expires参数:此参数用于指定用户的过期时间,相当于设置 /etc/shadow 文件中的的第8列,比如,你想要设置用户的过期日期为2018年12月31日,那么你首先要获取到2018年12月31日的 unix 时间戳,使用命令 “date -d 2018-12-31 +%s” 获取到的时间戳为1546185600,所以,当设置 expires=1546185600 时,表示用户的过期时间为2018年12月31日0点0分,设置成功后,查看远程主机的 /etc/shadow 文件,对应用户的第8八列的值将变成17895(表示1970年1月1日到2018年12月31日的天数,unix 时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在 Linux 和 FreeBSD 系统中使用。

    comment参数:此参数用于指定用户的注释信息。

    state参数:此参数用于指定用户是否存在于远程主机中,可选值有 present、absent,默认值为 present,表示用户需要存在,当设置为 absent 时表示删除用户。

    remove参数:当 state 的值设置为 absent 时,表示要删除远程主机中的用户。但是在删除用户时,不会删除用户的家目录等信息,这是因为 remove 参数的默认值为 no,如果设置为yes,在删除用户的同时,会删除用户的家目录。当 state=absent 并且 remove=yes 时,相当于执行 “userdel --remove” 命令。

    password参数:此参数用于指定用户的密码。但是这个密码不能是明文的密码,而是一个对明文密码”加密后”的字符串,相当于 /etc/shadow 文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在 python 的命令提示符下输入如下命令,生成明文密码对应的加密字符串。

     示例:ansible host1 -m user -a "name=test2 state=present groups=test2,test_grp shell=/bin/bash append=yes"

    14.repoace(替换模块)

    可以根据我们指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换。

    path参数 :必须参数,指定要操作的文件,2.3版本之前,只能使用 dest, destfile, name指定要操作的文件,2.4版本中,仍然可以使用这些参数名,这些参数名作为 path 参数的别名使用。

    regexp参数 : 必须参数,指定一个 python 正则表达式,文件中与正则匹配的字符串将会被替换。

    replace参数 : 指定最终要替换成的字符串。

    backup参数 :是否在修改文件之前对文件进行备份,最好设置为yes。

    示例:ansible ansible-demo3 -m replace -a 'path=/testdir/test regexp="ABC" replace=abc’

    15.lineinfile

    我们可以借助 lineinfile 模块,确保”某一行文本”存在于指定的文件中,或者确保从文件中删除指定的”文本”(即确保指定的文本不存在于文件中),还可以根据正则表达式,替换”某一行文本”

    path参数 :必须参数,指定要操作的文件。

    line参数 : 使用此参数指定文本内容。

    regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。

    state参数:当想要删除对应的文本时,需要将state参数的值设置为absent,absent为缺席之意,表示删除,state的默认值为present。

    backrefs参数:默认情况下,当根据正则替换文本时,即使regexp参数中的正则存在分组,在line参数中也不能对正则中的分组进行引用,除非将backrefs参数的值设置为yes。backrefs=yes表示开启后向引用,这样,line参数中就能对regexp参数中的分组进行后向引用了,这样说不太容易明白,可以参考后面的示例命令理解。backrefs=yes除了能够开启后向引用功能,还有另一个作用,默认情况下,当使用正则表达式替换对应行时,如果正则没有匹配到任何的行,那么line对应的内容会被插入到文本的末尾,不过,如果使用了backrefs=yes,情况就不一样了,当使用正则表达式替换对应行时,同时设置了backrefs=yes,那么当正则没有匹配到任何的行时,则不会对文件进行任何操作,相当于保持原文件不变。

    insertafter参数:借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF,如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。

    insertbefore参数:借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。

    backup参数:是否在修改文件之前对文件进行备份。

    create参数 :当要操作的文件并不存在时,是否创建对应的文件。

    示例:ansible ansible-demo3 -m lineinfile -a 'path=/testdir/test regexp="^line123" line="test lineinfile" '

    16.unarchive 解压模块

    批量部署压缩包,并解压

    src: /tmp/foo.zip #要解压的包

    dest: /usr/local/bin #解压到目标位置

    remote_src:  (yes #要解压的包在受控 no #要解压的包在控制端)

    示例:ansible web03 -m unarchive -a 'src=/package/php.tar.gz dest=/tmp/ remote_src=yes'

    17.archive 压缩模块

    用于远程压缩文件及文件夹

    path: /path/to/foo #要压缩的文件或目录

    dest: /path/to/foo.tgz #压缩后的文件

    format:bz2, gz, tar, xz, zip #指定打包的类型

    示例:ansible web01 -m archive -a 'path=/code dest=/tmp/code.tar.gz'

    18.script模块

    远程执行目标主机上脚本

    脚本路径,必须参数

    chdir:在执行脚本之前,先进入到指定目录

    creates:当远程主机上的该文件存在时,不执行脚本;反之执行

    removes:当远程主机上的该文件不存在时,不执行脚本;反之执行

    示例:ansible all -m script -a 'chdir=/opt /opt/test.sh'

     

    19.get_url(下载模块)

    用于将文件或软件从http、https或ftp下载到本地节点上
    dest: 指定将文件下载的绝对路径—必须
    url: 文件的下载地址(网址)—必须
    url_username: 用于http基本认证的用户名
    url_password: 用于http基本认证的密码
    validate_certs: 如果否,SSL证书将不会验证。这只应在使用自签名证书的个人控制站点上使用
    owner: 指定属主
    group: 指定属组
    mode: 指定权限
    示例:ansible NFS -m get_url -a "url=http://nginx.org/download/nginx-1.12.2.tar.gz dest=/tmp/"
     
  • 相关阅读:
    poj 1113 Wall 凸包的应用
    NYOJ 78 圈水池 (入门级凸包)
    Monotone Chain Convex Hull(单调链凸包)
    poj Sudoku(数独) DFS
    poj 3009 Curling 2.0(dfs)
    poj 3083 Children of the Candy Corn
    Python join()方法
    通过FISH和下一代测序检测肺腺癌ALK基因融合比较
    华大病原微生物检测
    NGS检测ALK融合大起底--转载
  • 原文地址:https://www.cnblogs.com/dahuige/p/13903395.html
Copyright © 2011-2022 走看看