这里文章记录一下ansible的指令选项和常用的模块使用

ansible指令选项

  • -m:要执行的模块,默认为command
  • -a:模块的参数
  • -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置
  • -k:提示输入ssh登录密码,当使用密码验证的时候用
  • -s:sudo运行
  • -U:sudo到哪个用户,默认为root
  • -K:提示输入sudo密码,当不是NOPASSWD模式时使用
  • -C:只是测试一下会改变什么内容,不会真正去执行
  • -c:连接类型(default=smart)
  • -f:fork多少进程并发处理,默认为5个
  • -i:指定hosts文件路径,默认default=/etc/ansible/hosts
  • -I:指定pattern,对已匹配的主机中再过滤一次
  • --list-host:只打印有哪些主机会执行这个命令,不会实际执行
  • -M:要执行的模块路径,默认为/usr/share/ansible
  • -o:压缩输出,摘要输出
  • --private-key:私钥路径
  • -T:ssh连接超时时间,默认是10秒
  • -t:日志输出到该目录,日志文件名以主机命名
  • -v:显示详细日志

ansible指令使用方法:

ansible可以直接在命令中指定主机组或者主机来着执行命令:例如

[root@Ansible ~]# ansible nginx -m ping
192.168.214.129 | SUCCESS => {
"changed": false,
"ping": "pong"
}
...省略...
[root@Ansible ~]# ansible 192.168.214.131 -m ping
192.168.214.131 | SUCCESS => {
"changed": false,
"ping": "pong"
}

同时更ansible更灵活的是可以使用通配符来匹配符合规则的主机或主机组来执行命令

通配符匹配

匹配所有主机:all 或者 *

[root@Ansible ~]# ansible all  -m ping
192.168.214.132 | SUCCESS => {
"changed": false,
"ping": "pong"
}
...省略...

[root@Ansible ~]# ansible 192.168.214.* -m ping
192.168.214.131 | SUCCESS => {
"changed": false,
"ping": "pong"
}
...省略...

匹配主机组中部分主机: 用 :隔开主机名

[root@Ansible ~]# ansible 192.168.214.128:192.168.214.132  -m shell -a "hostname"
192.168.214.132 | SUCCESS | rc=0 >>
nginx-2 192.168.214.128 | SUCCESS | rc=0 >>
localhost.localdomain

选择主机组中的部分主机执行:比如第1台到第3台 [0:2]按段执行

[root@Ansible ~]# ansible nginx[0:2] -m shell -a "hostname"
192.168.214.131 | SUCCESS | rc=0 >>
nginx-1 192.168.214.128 | SUCCESS | rc=0 >>
localhost.localdomain 192.168.214.129 | SUCCESS | rc=0 >>
file-server

执行多个主机组

[root@Ansible ~]# ansible nginx:centos7 -m shell -a "hostname"
192.168.214.132 | SUCCESS | rc=0 >>
nginx-2 192.168.214.129 | SUCCESS | rc=0 >>
file-server 192.168.214.128 | SUCCESS | rc=0 >>
localhost.localdomain 192.168.214.131 | SUCCESS | rc=0 >>
nginx-1

ansible常用模块

ansible模块分核心模块和额外模块,其中核心模块按照模块功能来划分,分别为:云模块、命令模块、数据库模块、文件模块、资产模块、消息模块、监控模块、网络模块、通知模块、包管理模块、源码控制模块、系统模块、单元模块、web设施模块、windows模块等。

下面记录一些常用的模块:

使用指令查看ansible支持哪些模块:ansible-doc -l

查看某个模块有哪些参数: ansible-doc [模块名]

shell模块

默认ansible使用的module 是 command,这个模块并不支持 shell 变量和管道等,若想使用shell 来执行模块,请使用-m 参数指定 shell 模块

使用指令的模块后面要加‘-a’参数指定模块参数

[root@Ansible ~]# ansible centos7 -m shell -a "cat /etc/passwd | grep ^root.*"
192.168.214.128 | SUCCESS | rc=0 >>
root:x:0:0:root:/root:/bin/bash
file模块

file模块主要用于远程主机上的文件操作

模块参数

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

用法示例

在远程主机/tmp/下创建一个a.txt

[root@Ansible ~]# ansible centos7 -m file -a "dest=/tmp/a.txt state=touch"

将文件删除

[root@Ansible ~]# ansible centos7 -m file -a "dest=/tmp/a.txt state=absent"

将/tmp/b.txt属组属主该成yufu

[root@Ansible ~]# ansible centos7 -m file -a 'dest=/tmp/b.txt owner=yufu group=yufu'
copy模块

copy模块是复制文件到远程主机

模块参数

src #原文件路径

dest #目标路径

force #是否强制覆盖,yes或no

将本机的c.txt 复制到远程主机

[root@Ansible ~]# ansible centos7 -m copy -a 'src=/tmp/c.txt dest=/tmp/'
192.168.214.128 | SUCCESS => {
service模块

service模块用来管理远程主机的服务,这里不分centos6和7的管理方式,都用参数指定

模块参数

name     # 指定服务名称
enabled #是否要加入开机启动
state #运行状态,状态名称要用英文过去式

用法示例

将远程httpd服务启动

[root@Ansible ~]# ansible centos7 -m service -a "name=httpd state=started"
192.168.214.128 | SUCCESS => {

关闭httpd

[root@Ansible ~]# ansible centos7 -m service -a "name=httpd state=stopped"
192.168.214.128 | SUCCESS => {
cron模块

cron模块用于管理任务计划

模块参数

name #对执行任务的描述
backup “Ture | Flase” #执行前备份
cron_file #使用本地的cron文件覆盖远程主机的cron 文件
day # 每天 (1-31, * ,*/2,)
hour #小时 ( 0-23, * ,*/2,)
minute #分钟 (0-59, * , */2,)
month #月 ( 0-12, * ,*/2,)
weekday #周 (0-6, * ,)
user #以哪个用户执行
state=absent|present #确认任务计划执行还是删除
job #要执行的任务

用法示例

[root@Ansible ~]# ansible centos7 -m cron -a "name='test' minute='*/1' user='root' job='date'"
查看
[root@localhost ~]# crontab -l
#Ansible: test
*/1 * * * * date
yum模块

yum模块用来管理安装软件包

模块部分参数

list  #列出软件包
naem #包名称
state #确定对包的操作:present or installed,or remove absent or removed

应用示例

[root@Ansible ~]# ansible centos7 -m yum -a "name=http state=removed"
192.168.214.128 | SUCCESS => {
user模块

user模块用来管理用户和组

模块参数

home        #指定用户的家目录,需要与createhome配合使用;
groups #指定用户的属组;
uid #指定用的uid;
password #指定用户的密码;
name #指定用户名;
createhome #是否创建家目录yes|no;
system #是否为系统用户;
remove #当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r;
state #是创建还是删除;
shell #指定用户的shell环境;

用法示例

不删家目录
[root@Ansible ~]# ansible centos7 -m user -a "name=yufu state=absent"
192.168.214.128 | SUCCESS => {

删除家目录

[root@Ansible ~]# ansible centos7 -m user -a "name=feng state=absent remove=yes"
192.168.214.128 | SUCCESS => {
mount模块

mount模块用来挂载

模块参数

fstype    #必选项,挂载文件的类型;
name #必选项,挂载点;
opts #传递给mount命令的参数;
src #必选项,要挂载的文件;
state #必选项;
present #只处理fstab中的配置;
absent #删除挂载点;
mounted #自动创建挂载点并挂载之;
umounted #卸载;

应用示例

[root@Ansible ~]# ansible centos7 -m mount -a"src=/dev/sda4 name=/mnt fstype=ext4 opts=rw state=mounted"
192.168.214.128 | SUCCESS => {
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "ext4",
"name": "/mnt",
"opts": "rw",
"passno": "0",
"src": "/dev/sda4"
}

有关模块内容暂时就写这么多吧,如果以后有用其他模块再来补充。

Ansible指令和常用模块使用的更多相关文章

  1. Ansible简介及常用模块

    一.基础介绍 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...

  2. Ansible 入门指南 - 常用模块

    介绍 module 文档: 官宣-模块分类的索引 官宣-全部模块的索引 在playbook脚本中,tasks 中的每一个 action都是对 module的一次调用.在每个 action中: 冒号前面 ...

  3. ANSIBLE安装和常用模块模块使用详细教程

    目录 ANSIBLE安装和各种模块应用功能 安装配置ANSIBLE ANSIBLE使用 ansible-galaxy工具 ansible-pull工具 ansible-playbook ansible ...

  4. mage Ansible学习1 常用模块

    一.Ansible特点 二.Ansible架构 1.core modules实现常用模块 2.Custom modules实现自定义模块 3.Connection Plugins 连接插件,可通过SS ...

  5. Ansible安装及常用模块

    配置文件:/etc/ansible/ansible.cfg 主机列表:/etc/ansible/hosts  安装anslibe  wget -O /etc/yum.repos.d/epel.repo ...

  6. Ansible Ad-Hoc与常用模块

    ansible 执行结果信息–各颜色说明:ansible Ad-Hoc 说明:ansible 如何查看帮助文档与常用模块详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有 ...

  7. ansible使用,常用模块

    使用ansible管理其他主机有两种方式: 1.命令行执行ansible ad-hoc命令 2.把要做的动作行为写入一个文件[playbook脚本],ansible读取脚本自动完成相应的任务. Ans ...

  8. Ansible之常用模块(一)

    ansible之所以功能强大,不是ansible本身,是因为它有众多的模块,前文我们介绍了ansible的基础介绍,系列命令的用法以及选项的说明,通过前文的学习我们知道了ansible是基于pytho ...

  9. Ansible运维自动化工具19个常用模块使用实例【转】

    一.模块列表 1.setup 2.ping 3.file 4.copy 5.command 6.shell 7.script 8.cron 9.yum 10.service 11.group 12.u ...

随机推荐

  1. netstat命令怎么查看端口是否占用

    转自:http://www.ahlinux.com/start/cmd/527.html netstat命令是一个监控TCP IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接 ...

  2. mysql执行计划 const eq_ref ref range index all

    explain:查询查询性能或者需要查看使用索引状态 一.type:连接类型  最关键的一列  效率(const>eq_ref>ref>range>index>all) ...

  3. stdafx.h预编译头

    转自http://blog.csdn.net/qingkong8832/article/details/6695123 stdafx.h 1名称的英文全称为:Standard Application  ...

  4. java注解相关

    本文参考很多大神的文档,特别再次表示感谢分享!! 1.何为注解?  概念:注解(Annotation),也叫元数据.一种代码级别的说明. 它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在 ...

  5. GridView相同内容合并单元格

    using System;using System.Data;using System.Configuration;using System.Collections;using System.Web; ...

  6. Aspx 验证码_各种封装

    验证码 namespace CZBK.TestProject.Common { public class ValidateCode { public ValidateCode() { } /// &l ...

  7. chroot 的应用

    http://www.williamlong.info/archives/3864.html http://my.oschina.net/u/1590519/blog/342576

  8. css最佳实践(reset.css)

    html, body, div, span, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,abbr, address, cite ...

  9. css 03

    DIV+CSS盒子模型 一.盒子模型css height width padding 内边距 margin  外边距 border 1.margin 外边距 margin-top:15px; marg ...

  10. 零基础逆向工程27_Win32_01_宽字符_MessageBox_win32调试输出

    1 多字节字符 ASCII码表:0 ~ 2^7-1 扩展ASCII码表:2^7 ~ 2^8-1 什么是GB2312:1980年,两个字节存储一个汉字:不通用,别国会有乱码. UCICODE:只有一个字 ...