• Ansible常用模块


    1.Ping模块

    ansible all -m ping

    2.setup模块

    ansible web -m setup

    --tree :将所有主机的输出信息保存到/tmp/目录下,以/etc/ansible/hosts里的主机名为文件名

    ansible all -m setup -a 'filter=ansible_distribution_version' --tree /tmp/

    filter :过滤关键字

    ansible db -m setup -a 'filter=ansible_distribution_version'

    gather_subset:按子集收集信息,值有all, min, hardware, network, virtual, ohai, facter。不包含请使用!号,如,!network

    facts参数说明如下:

    关键字

    说明

    返回值例子

    ansible_nodename

    节点名

    "6-dns-1.hunk.tech"

    ansible_fqdn

    FQDN名

    "6-dns-1.hunk.tech"

    ansible_hostname

    主机短名称

    "6-dns-1"

    ansible_domain

    主机域名后缀

    "hunk.teh"

    ansible_memtotal_mb

    总物理内存

    "ansible_memtotal_mb": 222

    ansible_swaptotal_mb

    SWAP总大小

    "1023"

    ansible_processor

    CPU信息

    Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz

    ansible_processor_cores

    CPU核心数量

    4

    ansible_processor_vcpus

    CPU逻辑核心数量

    2

    ansible_all_ipv4_addresses

    有所IPV4地址

    192.168.0.200

    ansible_all_ipv6_addresses

    所有IPV6地址

     

    ansible_default_ipv4

    默认网关的网卡配置信息

     

    ansible_eth2

    具体某张网卡信息

    不同系统名称需要变化

    ansible_dns

    DNS设置信

     

    ansible_architecture

    系统架构

    x86_64

    ansible_machine

    主机类型

    x86_64

    ansible_kernel

    内核版本

    "2.6.32-696.el6.x86_64"

    ansible_distribution

    发行版本

    "CentOS"

    ansible_distribution_major_version

    操作系统主版本号

    "6"

    ansible_distribution_release

    发行版名称

    "Final"

    ansible_distribution_version

    完整版本号

    "7.4.1708"

    ansible_pkg_mgr

    软件包管理方式

    "yum"

    ansible_service_mgr

    进行服务方式

    "systemd"

    ansible_os_family

    家族系列

    "RedHat"

    ansible_cmdline

    内核启动参数

     

    ansible_selinux

    SElinux状态

    "disabled"

    ansible_env

    当前环境变量参数

     

    ansible_date_time

    时间相关

     

    ansible_python_version

    python版本

    "2.6.6"

    ansible_lvm

    LVM卷相关信息

     

    ansible_mounts

    所有挂载点

     

    ansible_device_links

    所有挂载的设备的UUID和卷标名

     

    ansible_devices

    所有/dev/下的正在使用的设备的信息

     

    ansible_user_dir

    执行用户的家目录

    "/root"

    ansible_user_gecos

    执行用户的描述信息

    "The root "

    ansible_user_gid

    执行用户的的GID

    0

    ansible_user_id

    执行用户的的用户名

    "root"

    ansible_user_shell

    执行用户的shell类型

    "/bin/bash"

    ansible_user_uid

    执行用户的UID

    0

    3.command 命令模块

    默认模块(可省略),用于在远程执行命令(不能使用变量)

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

    free_form:要执行的linux指令

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

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

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

    4.hostname模块

    ansible centos -m hostname -a 'name=centos'

    5.cron 定时任务模块

    backup:对远程主机上的原任务计划内容修改之前做备份

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

    day:日(1-31,*,*/2,……)

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

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

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

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

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

    name:该任务的描述

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

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

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

    ansible db -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state="present"'

    ansible db -a "crontab -l"

    6.user模块

    groups:指定用户的属组

    uid:指定用户的uid

    password:为用户设置登陆密码,此密码是明文密码加密后的密码

    update_password:always/on_create

        always:只有当密码不相同时才会更新密码(默认)

        on_create:只为新用户设置密码

    name:指定用户名

    createhome:是否创建家目录 yes|no(默认是yes)

    system:是否为系统用户

    remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r(默认是no)

    state:是创建还是删除 present(添加(默认值))or absent(移除)

    shell:指定用户的shell环境

    append:yes/no

        yes:增量添加group

        no:全量变更group,只设置groups指定的group组(默认)

    expires:设置用户的过期时间,值是一个时间戳

    注:指定password参数时,不能使用后面这一串密码会被直接传送到被管理主机的/etc/shadow文件中,所以需要先将密码字符串进行加密处理。然后将得到的字符串放到password中即可,加密处理过程如下:

    安装python-pip,并安装加密函数库-passlib

    yum -y install python-pip

    pip install --upgrade pip

    pip install passlib

    使用加密函数库,获取密文密码

    python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"

    Password:

    $6$0lwTSmqKOkL.ktgl$OnBexXC7haBf0FRHVMIZM2edDeFWBbpKJ2r9cxVwNvY.vh3IIUzwFz8n7jFglc0CrtQSY12ziDonVL6e71Og2.

    ansible db -m user -a 'name="testops" password="$6$0lwTSmqKOkL.ktgl$OnBexXC7haBf0FRHVMIZM2edDeFWBbpKJ2r9cxVwNvY.vh3IIUzwFz8n7jFglc0CrtQSY12ziDonVL6e71Og2."'

    7.group模块

    gid:指定组的uid

    name:指定组名

    system:是否为系统用户组

    state:是创建还是删除 present(添加(默认值))or absent(移除)

    8.copy模块

    backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no

    content:用于替代"src",可以直接设定指定文件的值

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

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

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

    others:所有的file模块里的选项都可以在这里使用

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

    ansible db -m copy -a 'src=/etc/hosts dest=/tmp/ owner=root mode=640 backup=no'

    ansible db -m copy -a 'content="Hello ansible you are clever! " dest=/tmp/ansile.txt force=yes owner=root mode=640 backup=no'

    9.fatch模块

    dest:用来存放文件的目录

    flat:允许覆盖默认行为从hostname/path到/file的,如果dest以/结尾,它将使用源文件的基础名称

    src:在远程拉取的文件,并且必须是一个file,不能是目录

    validate_checksum:当文件fetch之后进行md5检查

    ansible test -m fetch -a "src=/root/test.txt dest=/root"

    10.file模块

    force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

    group:定义文件/目录的属组

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

    owner:定义文件/目录的属主

    path:必选项,定义文件/目录的路径

    recurse:递归的设置文件的属性,只对目录有效

    src:要被链接的源文件的路径,只应用于state=link的情况

    dest:被链接到的路径,只应用于state=link的情况

    state:  directory:如果目录不存在,创建目录 file:即使文件不存在,也不会被创建 link:创建软链接 hard:创建硬链接 touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间 absent:删除目录、文件或者取消链接文件

    ansible db -m file -a "src=/etc/fstab dest=/tmp/fstab state=link"

    ansible db -m file -a "path=/tmp/fstab state=absent"

    ansible db -m file -a "path=/tmp/test state=touch"

    11.yum模块

    config_file:yum的配置文件

    disable_gpg_check:关闭gpg_check

    disablerepo:不启用某个源

    enablerepo:启用某个源

    name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径

    state:状态(present安装,absent卸载,latest最新)

    ansible web -m yum -a 'name=httpd state=latest'

    ansible web -m yum -a 'name="@Development tools" state=present'

    ansible web -m yum -a 'name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present'

    12.service模块

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

    enabled:是否开机启动 yes|no

    name:必选项,服务名称

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

    runlevel:运行级别

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

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

    ansible web -m service -a 'enabled=yes name=httpd state=started'

    13. shell模块

    ansible web -m shell -a "ps -ef|grep httpd"

    14. script模块

    ansible db -m script -a '/tmp/script.sh'

    15. synchronize模块

    archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启

    checksum: 跳过检测sum值,默认关闭

    compress:是否开启压缩

    copy_links:复制链接文件,默认为no ,注意后面还有一个links参数

    delete: 删除不存在的文件,默认no

    dest:目录路径

    dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议

    dirs:传速目录不进行递归,默认为no,即进行目录递归

    rsync_opts:rsync参数部分

    set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况

    mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件

    16. mount模块

    fstype:必选项,挂载文件的类型

    name:必选项,挂载点

    opts:传递给mount命令的参数

    src:必选项,要挂载的文件

    state:必选项 present:只处理fstab中的配置  absent:删除挂载点 mounted:自动创建挂载点并挂载之 umounted:卸载

    ansible test -m mount 'name=/mnt src=/dev/loop0 fstype=ext4 state=mounted opts=rw'

    17.raw模块

    执行原始的命令,而不是通过模块子系统

    18.apt模块

    deb:用于安装远程机器上的.deb后缀的软件包(optional)

    install_recommends:这个参数可以控制远程电脑上是否只是下载软件包,还是下载后安装,默认参数为true,设置为false的时候只下载软件包,不安装

    update_cache:当这个参数为yes的时候等于apt-get update(optional)

    name:apt要下载的软件包名字,支持name=git=1.6 这种制定版本的模式

    state:状态(present,absent,latest),表示是安装还卸载

       present: 默认的,表示为安装

       lastest: 安装为最新的版本

       absent:表示删除

    19.pip模块

    用于管理Python库依赖项

    chdir:执行pip命令前cd进入的目录

    name:要安装的Python库的名称或远程包的URL。

    requirements:一个pip requirements.txt文件的路径,它应该是远程系统的本地文件,如果使用chdir选项,则可以将文件指定为相对路径。

    version:指定的Python库的安装版本。

    extra_args:额外的参数传递给pip。

    executable:显式可执行文件或可执行文件的路径名,用于为系统中安装的特定版本的Python运行pip。 例如pip-3.3,如果系统中安装了Python 2.7和3.3,并且想要为Python 3.3安装运行pip。 它不能与“virtualenv”参数一起指定(在2.1中添加)。 默认情况下,它将采用适用于python解释器的版本。 pip3在python 3上,pip2或pip在python 2上。

    virtualenv:要安装到的virtualenv目录的可选路径。 它不能与’executable’参数一起指定(在2.1中添加)。 如果virtualenv不存在,则将在安装软件包之前创建它。 可选的virtualenv_site_packages,virtualenv_command和virtualenv_python选项会影响virtualenv的创建。

    virtualenv_command:用于创建虚拟环境的命令或路径名。 例如pyvenv,virtualenv,virtualenv2,~/bin /virtualenv,/usr/local/bin/virtualenv。

    virtualenv_python:用于创建虚拟环境的Python可执行文件。 例如python3.5,python2.7。 未指定时,将使用用于运行ansible模块的Python版本。 当virtualenv_command使用pyvenv或-m venv模块时,不应使用此参数。

    state:状态(present,absent,latest, forcereinstall),表示是安装还卸载

       present:默认的,表示为安装

       lastest: 安装为最新的版本

       absent:表示删除

       forcereinstall:“forcereinstall”选项仅适用于可ansible 2.1及更高版本。

    20.template模块

    基于模板方式生成一个文件复制到远程主机(template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。)

    backup: 如果原目标文件存在,则先备份目标文件

    src:在ansible控制器上的Jinja2格式化模板的路径。 这可以是相对或绝对的路径。

    dest:将模板渲染到远程机器上的位置。

    force:是否强制覆盖,默认为yes

    owner:目标文件属主

    group:目标文件属组

    mode:目标文件的权限模式,模式可以被指定为符号模式(例如,u + rwx或u = rw,g = r,o = r)。

    21.get_url 模块

    sha256sum:下载完成后进行sha256 check;

    timeout:下载超时时间,默认10s

    url:下载的URL

    url_password、url_username:主要用于需要用户名密码进行验证的情况

    dest:将文件下载到哪里的绝对路径。如果dest是目录,则使用服务器提供的文件名,或者如果没有提供,将使用远程服务器上的URL的基本名称。

    headers:以格式“key:value,key:value”为请求添加自定义HTTP标头。

    22.lineinfile模块

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

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

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

    regexp:使用正则表达式匹配对应的行。

    state:absent表示删除,state的默认值为present。

    backrefs:与“state=present”一起使用,“line”可以包含backreference,如果“regexp”与文件中的任何位置都不匹配,则文件将被保留不变。

    insertafte:借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,使用backrefs参数时,此参数会被忽略。

    insertbefore:借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,当使用backrefs参数时,此参数会被忽略。

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

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

    23.blockinfile模块

    blockinfile模块可以帮助我们在指定的文件中插入"一段文本"。

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

    block:此参数用于指定想要操作的那"一段文本",此参数有一个别名叫"content",使用content或block的作用相同。

    marker:ansible会自动为这段文本添加一个开始标记和一个结束标记,默认情况下,开始标记为# BEGIN ANSIBLE MANAGED BLOCK,结束标记为# END ANSIBLE MANAGED BLOCK,可以使用marker参数自定义"标记",如,marker=#{mark}test ,这样设置以后,开始标记变成了# BEGIN test,结束标记变成了# END test,{mark}会自动被替换成开始标记和结束标记中的BEGIN和END。

    state:两个可选值,present与absent,默认值就是present。在执行插入操作或更新操作时state的值为present,如果对应的文件中已经存在对应标记的文本并且将state的值设置为absent,则表示从文件中删除对应标记的段落。

    insertafter:在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的后面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为EOF,表示将文本插入到文档末尾。

    insertbefore:在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的前面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的前面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为BOF,表示将文本插入到文档开头。

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

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

  • 相关阅读:
    数据结构:关于重建二叉树的三种思路
    操作系统:进程调度算法详解之FCFS和SPF篇
    Java反射机制浅析
    数据挖掘:基于TF-IDF算法的数据集选取优化
    RC隔离 更新where条件列 没有索引的情况
    RR区间锁 不是唯一索引,即使区间内没值,也锁
    If one session has a shared or exclusive lock on record R in an index, another session cannot insert
    RR模式下利用区间锁防止幻读,RC模式没有区间锁会出现幻读
    使用next-key locks 用于搜索和索引扫描,可以防止幻读
    Gap Locks 区间锁
  • 原文地址:https://www.cnblogs.com/xiaoleimagic/p/13446976.html
Copyright © 2020-2023  润新知