本节内容:

  • ansible命令基础
  • 常见模块举例

一、ansible命令基础

语法:

ansible <host-pattern> [-f forks] [-m module_name] [-a args] [options] 
  • host-pattern:这次的命令对哪些主机生效;
  • -f forks:启动的并发线程数,就是一次并行处理多少主机;
  • -m module_name:要使用的模块;
  • -a args:模块特有的参数。

常见的模块:

  • user
  • yum
  • copy
  • cron
  • command:这是默认的模块,表示在被管理主机上运行一个命令。对于command模块,-a不再是指定参数,而是命令本身。
  • shell

二、常见模块举例

1. /etc/ansible/hosts配置文件内容

2. command模块

command模块是默认的模块,表示在被管理主机上运行一个命令。对于command模块,-a不再是指定参数,而是命令本身。所以这个模块有个缺陷,运行的命令中不能使用变量或者参数。

示例:

[root@node1 ~]# ansible nginx -m command -a "date"

[root@node1 ~]# ansible mysql -m command -a "tail -3 /etc/passwd"

3. cron模块

cron模块可以让每一个被管理节点能够自动生成一个定期任务计划。查看cron模块的用法:

[root@node1 ~]# ansible-doc -s cron

示例:

[root@node1 ~]# ansible mysql -m cron -a 'minute="*/10" job="/usr/bin/echo hello" name="test cron job"'

注意:

  • 所有的参数可以用""包含起来
  • day之类的参数没有指定,默认都是*
  • 默认state参数的值为present

4. user模块

user模块实现用户账号管理。查看user模块的用法:

[root@node1 ~]# ansible-doc -s user

几个主要参数:

  • name=:用户名
  • uid:用户的uid
  • group:所属组,即私有组
  • groups:附加组。
  • state:状态。

示例:

[root@node1 ~]# ansible mysql -m user -a 'name="jack"'

[root@node1 ~]# ansible mysql -m user -a 'name="jack" state=absent'

5. group模块

group模块:组管理。查看group模块的用法:

示例:

[root@node1 ~]# ansible-doc -s group

[root@node1 ~]# ansible mysql -m group -a 'name=mysql gid=306 system=yes'

6. copy模块

copy模块实现文件复制。查看copy模块的用法:

[root@node1 ~]# ansible-doc -s copy

几个主要参数:

  • src=:指明源文件本地路径。可以是绝对路径,也可以是相对路径。可以不使用src,使用content。就是说用content内容来生成文件。
  • dest=:定义远程目标文件路径,只能使用绝对路径。
  • content=:可以不使用src,使用content。就是说用content内容来生成文件。

示例:

[root@node1 ~]# ansible mysql -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640'

[root@node1 ~]# ansible mysql -m copy -a 'content="Hello World\nGood boy" dest=/tmp/test.txt owner=root mode=640'

7. file模块

file模块可以设定文件属性,还可以创建文件的符号链接。查看file模块的用法:

[root@node1 ~]# ansible-doc -s file

几个重要参数:

  • path=:指明对哪个文件做管理。也可以使用dest和name。
  • 创建文件的符号链接:src=:指明源文件,path=:指明符号链接文件路径

示例:

[root@node1 ~]# ansible mysql -m file -a 'owner=root group=mysql mode=644 path=/tmp/test.txt'

[root@node1 ~]# ansible mysql -m file -a 'path=/tmp/test.link src=/tmp/test.txt state=link'

8. ping模块

ping模块测试指定主机是否能连接。查看ping模块的用法:

[root@node1 ~]# ansible-doc -s ping

示例:

[root@node1 ~]# ansible nginx -m ping

9. service模块

service模块是管理服务的。查看service模块的用法:

[root@node1 ~]# ansible-doc -s service

几个重要参数:

  • enabled=:是否开机自动启动,取值为true或false;
  • name=:服务名字;
  • state=:状态,取值有started,stoped,restarted。

示例:

[root@node1 ~]# ansible 172.16.7.151 -m service -a 'enabled=true name=httpd state=stopped'

10. shell模块

和command模块类似,但是可以使用变量。用于执行一些复杂的命令。查看shell模块的使用方法:

[root@node1 ~]# ansible-doc -s shell

示例:

[root@node1 ~]# ansible mysql -m user -a 'name="test"'
[root@node1 ~]# ansible mysql -m command -a 'echo wisedu | passwd --stdin test'
[root@node1 ~]# ansible mysql -m command -a 'tail -1 /etc/passwd'

[root@node1 ~]# ansible mysql -m shell -a 'echo wisedu | passwd --stdin user1'
[root@node1 ~]# ansible mysql -m command -a 'tail -1 /etc/shadow'

所以一旦有管道、变量之类的,你最好使用shell模块,而不要用command模块。

11. script模块

script模块将本地脚本复制到远程主机并运行之。查看script模块的用法:

[root@node1 ~]# ansible-doc -s script

示例:

[root@node1 ~]# vim test.sh
#/bin/bash
echo "hello world" >/tmp/nba.txt
[root@node1 ~]# chmod +x test.sh
[root@node1 ~]# ansible mysql -m script -a '/root/test.sh'

12. yum模块 

yum模块管理程序包。查看yum模块的用法:

[root@node1 ~]# ansible-doc -s yum  

几个重要参数:

  • name=:指定要安装的程序包,可以带上版本号,否则安装最新版本;
  • state=:present表示安装,absent表示卸载。

示例:

[root@node1 ~]# ansible mysql -m yum -a 'name=ksh'

13. setup模块

setup模块:收集远程主机的facts。ansbile在管理每一个主机时,这些主机在被运行管理命令之前,会首先向ansible节点报告自己主机当前的各种可能被ansible主机用到的状态信息,如操作系统版本、ip地址等信息,这些信息都是以变量的形式,ansible主机可以在jinjia2中调用,为不同的服务器生成不同的配置文件。

[root@node1 ~]# ansible mysql -m setup

Ansible常见模块介绍的更多相关文章

  1. Ansible 常见模块介绍

    目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...

  2. ansible入门二(Ansible常见模块介绍)

    本节内容: ansible命令基础 常见模块举例 一.ansible命令基础 语法: ansible <host-pattern> [-f forks] [-m module_name] ...

  3. Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken

    Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...

  4. Ansible常用模块介绍及使用(2)

    Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)–技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几个 ...

  5. ansible常见模块

    模块的使用 查看模块帮助 ansible-doc -l 查看所有模块 ansible-doc -s MODULE_NAME 查看指定模块的详细帮助 ansible命令应用基础 语法: ansible ...

  6. Ansible常用模块介绍

    ansible < HOST-PATTERN > [ -f FORKS ] [ -m MOUDULE ] [ -a "ARGS" ] [ -o ] MOUDULE: p ...

  7. 第二十六章 ansible主要模块介绍

    一.Ansible模块回顾 1.command模块 [root@m01 ~]# ansible web01 -m command -a 'free -m' 2.shell模块 #支持管道符这种特殊符号 ...

  8. ansible的介绍和一些基本模块介绍

    必须保证ansible工作站与各个node实现无密码ssh登入 ①:192.168.1.100 - 在你本地的工作站或服务器上安装 Ansible.   ②:文件服务器1到代理服务器3 - 使用 19 ...

  9. ansible 常用模块的使用

    安装 yum -y install ansible 配置文件/etc/ansible/hosts 模块介绍与使用 ping模块 [root@node1 config]# ansible k8s -m ...

随机推荐

  1. Chapter One:数据结构和算法-解压序列赋值给多个变量

    一.问题: 现在有一个包含 N 个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给 N 个变量? 二.解决方案: 代码示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...

  2. mysql自学路线

    入门: -Head First:PHP & MySQL.Lynn Beighley -MySQL必知必会 -MySQL5.5从零开始学.刘增杰 -MYSQL完全手册 (the Complete ...

  3. Spring容器事件、自定义事件

    Spring容器内置事件,如容器的启动.停止.关闭.销毁等事件 <bean name="contextStartedHandler" class="com.nuts ...

  4. markdown小记(语法+markdownpad)

    一.有道云笔记markdown语法小记 1.目录[TOC] 2.标题# 一级标题## 二级标题...###### 六级标题 3.项目列表有序列表: 1. 1. (显示为i.) 2. 3. - (显示为 ...

  5. 用threading和Queue模块实现多线程的端口扫描器

    一.Queue模块基础 q = Queue.Queue()    q.qsize()           返回队列的大小  q.empty()         如果队列为空,返回True,反之Fals ...

  6. js中call与apply的区别以及使用~

    今天看了一下call与apply的区别~~ <!DOCTYPE html> <html> <head> <title>testCall</titl ...

  7. UNIX网络编程 第5章 TCP客户/服务器程序示例

    UNIX网络编程 第5章 TCP客户/服务器程序示例

  8. 使用nginx sticky实现基于cookie的负载均衡【转】

    在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接.使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端 ...

  9. springquartz的LocalDataSourceJobStore

    spring 为quartz 提供了一个 继承 JobStoreCMT的 LocalDataSourceJobStore,主要是为了和spring更好的集成. public class LocalDa ...

  10. redhat6.5文件共享

    以下操作均需要root用户 a端: 固定nfs端口 #vi /etc/sysconfig/nfs 将里面的RQUOTAD_PORT.LOCKD_TCPPORT.LOCKD_UDPPORT.MOUNTD ...