zoukankan      html  css  js  c++  java
  • ansible模块详解

    【简单介绍】

    Ansible是一种agentless(基于ssh),可实现批量配置、命令执行和控制,基于Python实现的自动化运维工具。

    有以下两个特性:

    1. 模块化:通过调用相关模块,完成指定任务,且支持任何语言编写的自定义模块
    2. playbook:剧本,可根据需要一次执行完剧本中的所有任务或某些任务
       

    本次主要介绍ansible的基本模块。

       

    command

    在远程主机上执行命令。

    不加 -m 选项的时候,默认执行command

    相关参数:

    chdir

    在此目录下执行命令

    creates

    指定文件存在时,不执行

    removes

    指定文件不存在时,不执行

    示例:

    ansible host1 -m command -a "ls"

    ansible host1 -m command -a "chdir=/testdir ls"

       

    setup

    收集远程主机的一些基本信息。

    相关参数:

    filter

    条件过滤

    示例:

    # 获取主机的ipv4信息

    ansible host1 -m setup -a "filter=ansible_all_ipv4_addresses"

    # 获取主机内存信息

    ansible host1 -m setup -a "filter=ansible_memory_mb"
    #
    也可以使用通配符

    ansible host1 -m setup -a "filter=*mb"

    其他信息:

    ansible_all_ipv4_addresses

    显示ipv4的信息

    ansible_devices

    显示磁盘设备信息

    ansible_distribution

    显示是什么系统,例centos,suse

    ansible_distribution_major_version

    显示是系统主版本

    ansible_distribution_version

    显示系统版本

    ansible_machine

    显示系统类型,例32位,还是64

    ansible_eth0

    显示eth0的信息

    ansible_hostname

    显示主机名

    ansible_kernel

    显示内核版本

    ansible_lvm

    显示lvm相关信息

    ansible_memtotal_mb

    显示系统总内存

    ansible_memfree_mb

    显示可用系统内存

    ansible_memory_mb

    详细显示内存情况

    ansible_swaptotal_mb

    显示总的swap内存

    ansible_swapfree_mb

    显示swap内存的可用内存

    ansible_mounts

    显示系统磁盘挂载情况

    ansible_processor

    显示cpu个数(具体显示每个cpu的型号)

    ansible_processor_vcpus

    显示cpu个数(只显示总的个数)

       

    shell

    让远程主机在shell进程下执行命令,可支持shell的特性(如管道等)。

    参数与command相同,不做赘述。

    示例:

    ansible host1 -m shell -a "chdir=/testdir cat test"
    ansible all -m shell -a "echo "test" | passwd --stdin test1"

       

    copy

    把本地文件复制到远程主机上。

    相关参数:

    dest

    必选。远端路径,可以是文件/目录。

    src

    content其一必选。源文件/目录,如果以"/"结尾,复制内容,否则,复制包括目录在内的所有内容。

    content

    src其一必选。直接设定目的文件的值,此时dest必须是文件。

    backup

    覆盖之前备份源文件。yes/no

    directory_mode

    递归设定目标目录的权限。

    follow

    支持link文件复制

    force

    覆盖远程主机不一致的内容

    group

    设定远程主机目录的组名

    mode

    设定远程主机文件及目录的权限

    owner

    设定远程主机目录的用户名

    示例:

    ansible host1 -m copy -a 'src=/etc/passwd dest=/tmp mode=755 owner=root'

    ansible host1 -m copy -a 'content="HELLO" dest=/tmp mode=755 owner=root'

       

    file

    设置文件属性

    相关参数:

    path

    必选。用于指定要操作的文件或者目录。

    state

    属性。此参数需灵活使用,后面会介绍

    src

    state设置为link或者hard的时候,此参数为链接文件的源文件。

    dest

    state设置为link或者hard的时候,此参数为链接文件路径。

    force

    statelink的时候,force设置为yes,则就算文件不存在,依旧创建链接文件。

    group

    同上

    mode

    同上

    owner

    同上

    recurse

    被操作的文件为目录,将其设置为yes,可递归修改属性。

    示例:

    ansible host1 -m file -a "path=/test owner=test group=test mode=0644"

    ansible host1 -m file -a "src=/test dest=/testlink owner=root group=root state=link"

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

    state

    directory

    目录。不存在则创建

    touch

    文件。不存在则创建

    file

    文件。不存在则跳过

    link

    创建软连接

    hard

    创建硬链接

    absent

    删除目录,文件或者取消链接

       

    cron

    计划定时执行任务

    相关参数:

    minutehourdaymonthweekday

    计划时间,默认为*

    name

    必选。任务描述

    job

    任务。要加引号

    state

    present - 创建
    adsent -
    删除

    示例:

    ansible host1 -m cron -a " name='crontab test' minute=5 hour=1 job='echo test' "

    ansible host1 -m cron -a " name='crontab day test' minute=1 hour=1 day=*/3 job='echo test'

    yum

    管理安装相关程序包

    相关参数:

    name

    程序包名称,可带版本号

    state

    presentinstalled/presentlatest(最新)removed/absent

    enablerepo

    指定安装软件包时临时启用的 yum

    disablerepo

    指定安装软件包时临时禁用的 yum

    disable_gpg_check

    禁用对 rpm 包的公钥 gpg 验证

    示例:

    ansible host1 -m yum -a 'name=nginx state=installed disable_gpg_check=yes'

       

    service

    管理服务

    相关参数:

    name

    服务名称

    state

    startedstoppedrestarted

    enable

    truefalse

    runlevel

    运行级别

    示例:

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

       

    group

    管理用户组模块

    相关参数:

    name

    组名称

    gid

    指定组的GID

    state

    presentabsent

    system

    yesno

    示例:

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

       

    user

    管理用户模块

    相关参数:

    name

    用户名

    password

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

    update_password

    always -> 只有当密码不相同时才会更新密码(默认)
    on_create ->
    只为新用户设置密码

    shell

    用户的shell设定

    groups

    用户组设定

    home

    指定用户的家目录

    state

    present/absent

    append

    yes -> 增量添加group

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

    remove

    配合state=absent使用,删除用户的家目录 -> remove=yes

    expires

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

    示例:

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

     

  • 相关阅读:
    ArrayList源码分析_JDK1.8.0_191
    LinkedList源码分析_JDK1.8.0_191
    HashMap源码分析_JDK1.8.0_191
    生产者消费者模型Java实现
    INT整型最小值取负还是本身的问题
    字节跳动面试题
    go sqlx操作数据库问题
    go gin框架调用cmd运行python脚本问题
    Android视频播放不能使用自研播放器
    mac python版本错误问题以及pip版本错误(anacanda)
  • 原文地址:https://www.cnblogs.com/liufarui/p/12982331.html
Copyright © 2011-2022 走看看