`
hongtoushizi
  • 浏览: 374726 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Ansible常用模块

阅读更多

 Ansible通过模块的方式来完成一些远程的管理工作。可以通过ansible-doc -l查看所有模块,可以使用ansible-doc -s module来查看某个模块的参数,也可以使用ansible-doc help module来查看该模块更详细的信息。下面列出一些常用的模块:

 

1. setup

可以用来查看远程主机的一些基本信息:

ansible -i /etc/ansible/hosts test -m setup

 

2.ping

可以用来测试远程主机的运行状态:

ansible test -m ping

 

3.file
设置文件的属性

file模块包含如下选项:

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

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

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

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

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

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

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

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

    state:

            directory:如果目录不存在,创建目录

            file:即使文件不存在,也不会被创建

            link:创建软链接

            hard:创建硬链接

            touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间

            absent:删除目录、文件或者取消链接文件

示例:

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

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

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

 

4.copy

复制文件到远程主机

copy模块包含如下选项:

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

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

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

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

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

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

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

    validate :The validation command to run before copying into place. The path to the file to validate is passed in via '%s' which must be present as in the visudo example below.

示例:

    ansible test -m copy -a "src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode=0644"

    ansible test -m copy -a "src=/mine/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=644 backup=yes"

    ansible test -m copy -a "src=/mine/sudoers dest=/etc/sudoers validate='visudo -cf %s'"

 

5.command

在远程主机上执行命令

command模块包含如下选项:

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

    free_form:要执行的linux指令

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

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

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

示例:

    ansible test -a "/sbin/reboot"

 

6.shell

切换到某个shell执行指定的指令,参数与command相同。

示例:

    ansible test -m shell -a "somescript.sh >> somelog.txt"

 

7.service

用于管理服务

该模块包含如下选项:

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

    enabled:是否开机启动  yes|no

    name:必选项,服务名称

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

    runlevel:运行级别

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

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

示例:

    ansible test -m service -a "name=httpd state=started enabled=yes"

    ansible test -m service -a "name=foo pattern=/usr/bin/foo state=started"

    ansible test -m service -a "name=network state=restarted args=eth0"

 

8.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 test -m cron -a 'name="check dirs" hour="5,2" job="ls -alh > /dev/null"'

    ansible test -m cron -a 'name="a job for reboot" special_time=reboot job="/some/job.sh"'

    ansible test -m cron -a 'name="yum autoupdate" weekday="2" minute=0 hour=12 user="root" job="YUMINTERACTIVE=0 /usr/sbin/yum-autoupdate" cron_file=ansible_yum-autoupdate'

    ansilbe test -m cron -a 'cron_file=ansible_yum-autoupdate state=absent'

 

9.filesystem

在块设备上创建文件系统

选项:

    dev:目标块设备

    force:在一个已有文件系统的设备上强制创建

    fstype:文件系统的类型

    opts:传递给mkfs命令的选项

 

10.yum

使用yum包管理器来管理软件包

选项:

    config_file:yum的配置文件

    disable_gpg_check:关闭gpg_check

    disablerepo:不启用某个源

    enablerepo:启用某个源

    list

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

    state:状态(present,absent,latest)

示例:

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

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

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

     

11.user

管理用户

    home:

    groups:

    uid

    password:

    name:

    createhome:

    system:

    remove:

    state:

    shell:

    需要特别说明的是,password后面指定的密码不能是明文,后面这一串密码会被直接传送到被管理主机的/etc/shadow文件中,而登陆的时候输入的密码会被hash加密以后再去与/etc/shadow中存放的密码去做对比,会出现不一致的现象。所以需要先将密码字符串进行加密处理:openssl passwd -salt -1 "123456",然后将得到的字符串放到password中即可。

 

12.group

管理组

 

13.synchronize

使用rsync同步文件

    archive

    checksum

    delete

    dest

    src

    dest_port

    existing_only: skip createing new files on receiver

    links

    owner

    mode:(push, pull)

    recursive

    rsync_path

    times:Preserve modification times

示例:

    src=some/relative/path dest=/some/absolute/path rsync_path="sudo rsync"

    src=some/relative/path dest=/some/absolute/path archive=no links=yes

    src=some/relative/path dest=/some/absolute/path checksum=yes times=no

    src=/tmp/helloworld dest=/var/www/helloword rsync_opts=--no-motd,--exclude=.git mode=pull

 

14.mount

配置挂载点

选项:

    dump

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

    name:必选项,挂载点

    opts:传递给mount命令的参数

    passno

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

    state:必选项

            present:只处理fstab中的配置

            absent:删除挂载点

            mounted:自动创建挂载点并挂载之

            umounted:卸载

示例:

    name=/mnt/dvd src=/dev/sr0 fstype=iso9660 opts=ro state=present

    name=/srv/disk src='LABEL=SOME_LABEL' state=present

    name=/home src='UUID=b3e48f45-f933-4c8e-a700-22a159ec9077' opts=noatime state=present

 

 

 

    ansible test -a 'dd if=/dev/zero of=/disk.img bs=4k count=1024'

    ansible test -a 'losetup /dev/loop0 /disk.img'

    ansible test -m filesystem 'fstype=ext4 force=yes opts=-F dev=/dev/loop0'

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

 

15.raw

类似command,但可以传递管道

 

本文出自 “无名小卒” 博客,请务必保留此出处http://breezey.blog.51cto.com/2400275/1555530

分享到:
评论

相关推荐

    Linux自动化运维ansible概述与常用模块

    Ansible常用模块包括: * core模块:Ansible自带的模块,包括文件、命令、模板、debug等。 * 网络模块:包括ping、ssh、telnet等。 * 数据库模块:包括mysql、postgresql、oracle等。 * 云计算模块:包括AWS、Azure...

    ansible常用模块知识汇总(二)

    ansible常用模块知识汇总(一) 模块一:find模块 作用:查找文件、目录 常用参数: paths:必要参数,指定在哪个目录查找。可以指定多个路径,用逗号隔开。也可以使用path patterns:指定要查找的文件名,默认是...

    ansible的常用模块和playbook-全(cent7.x)

    "ansible的常用模块和playbook-全(cent7.x)" Ansible 是一个自动化工具,主要用于批量管理服务器。它的特点是无需在客户端安装任何软件,只需要安装 Ansible 的管理端,并使用 SSH 连接到被管理的服务器。 Ansible...

    自动化运维工具Ansible文档与笔记.zip

    5. Ansible 常用模块 6. Ansible Playbook基本使用 7. Ansible Playbook的结构及handler用法 8. Ansible变量之自定义变量 9. Ansible变量之fact 10. Ansible魔法变量及变量优先级 11. 使用lookup生成变量 12. ...

    ansible安装和及常用模块的使用

    ansible环境部署 1.准备6台虚拟机 ansible 192.168.1.40 管理主机 ansible 192.168.1.41 托管主机 ansible 192.168.1.42 托管主机 ansible 192.168.1.43 托管主机 ansible 192.168.1.44 托管主机 ansible 192.168....

    ansible入门培训.pptx

    【Ansible 常用模块 --shell】 `shell`模块允许在远程主机上执行shell命令。例如,`ansible format0 -m shell -a "mkdir /test"`会在目标主机上创建一个名为`/test`的目录。`chdir`参数可以改变执行命令的工作目录...

    15周 Ansible 应用实训—训练题.docx

    1. Ansible 常用模块(至少 6 个)?常用模块包括copy 模块、file 模块、template 模块、yum 模块、service 模块、template 模块等。 2. Ansible 模块的使用?例如,使用 copy 模块来复制文件,使用 file 模块来定义...

    ansible独家ppt 有需求的同学可以拿走

    3. Ansible常用模块 4. YAML介绍 Ansible的应用场景包括: 1. 自动化运维:Ansible可以自动化各种类型的系统和环境的运维工作 2. 配置管理:Ansible可以实现批量系统配置和部署 3. 应用程序部署:Ansible可以实现...

    3.ansible的常用模块和playbook和role-全-文档(cent7.x)详细课件笔记总结

    3.ansible命令的常用模块使用-ad-hoc模式-批量操作实战 comman/shell、copy、yum、service、file等常用模块学习 4.ansible使用-playbook剧本模式-批量操作案例实战 案例包括: 1).批量安装卸载httpd 2).批量安装nfs...

    ansible使用以及常用模块介绍.md

    ansible使用以及常用模块介绍.md

    ansible配置详解1

    Ansible常用模块包括command模块、copy模块、template模块、yum模块、service模块等。command模块可以在远程主机执行命令,不支持管道、重定向等shell的特性。copy模块可以将文件从ansible管理端复制到被管控主机上...

    三十四、运维自动化之ANSIBLE.pdf

    2. Ansible常用模块:Ansible拥有众多模块,如`file`用于文件管理,`copy`用于复制文件,`apt`和`yum`用于包管理,`service`用于服务控制等。这些模块使得Ansible能够覆盖运维中的各种需求。 3. YAML语法简介:YAML...

    Ansible基础配置和企业级项目实用案例

    #### Ansible常用模块 - **获取主机列表**: `ansible all --list-host(s)` - **主机状态检查**: `ansible 主机匹配 -m ping` - **获取模块列表**: `ansible-doc -l` - **获取模块用法**: `ansible-doc -s module` #...

    运维自动化之ANSIBLE.md

    - Ansible常用模块详解 - YAML语法简介 - Ansible playbook基础 - Playbook变量、tags、handlers使用 - Playbook模板templates - Playbook条件判断 when - Playbook字典 with_items - Ansible Roles

    Ansible学习文档

    #### 三、Ansible 常用模块介绍 - **1. ping模块** - **功能**: 测试主机是否可达。 - **用法**: ```bash ansible all -m ping ``` - **示例**: 使用 root 用户进行 ping 测试。 ```bash ansible all -m ...

    ansible安装部署和配置、常用模块整理1

    Ansible 是一个强大的自动化运维工具,它基于Python语言开发...熟练掌握其安装配置和常用模块,能显著提升运维效率,降低错误率。通过编写Playbook,还能实现复杂的工作流程自动化,极大地提高了IT基础设施的管理效率。

    Ansible:搭建环境并熟悉常用模块的使用

    在本文中,我们将深入探讨如何搭建 Ansible 环境以及如何熟悉并使用其常用模块。 1. **环境准备** 在开始使用 Ansible 之前,你需要准备至少三台虚拟机,每台虚拟机都需要进行基本配置,包括设置静态 IP 地址、...

    ansible教程

    一旦掌握了基本的YAML语法和playbook的编写规则,接下来是Ansible的常用模块。Ansible提供了很多内建模块供用户使用,例如shell和command模块用于执行命令,copy和template模块用于文件的复制和模板化,file模块用于...

Global site tag (gtag.js) - Google Analytics