本节内容:

  • 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. egg.js路由的优雅改造

    引言 在使用express,koa, 或者是egg.js进行node server开发的过程中,我们的路由基本上都是定义在controller层的,框架对于 node 原生路由都会进行一层封装,一版都 ...

  2. linux(ubuntu) 安装 node.js

    其实几个月之前我已经介绍过使用window版的nvm——wnvm了 1.先安装nvm 日常开发安装node通常会用nvm来安装,因为nvm可以帮我们管理好node的版本 我们通过git来把nvm下载到 ...

  3. Java poi读取,写入Excel2003

    Java poi读取,写入Excel2003 相关阅读:poi读写Excel2007:http://www.cnblogs.com/gavinYang/p/3576741.htmljxl读写excel ...

  4. Windows 下安装和配置 MongoDB(二)

    因为电脑重新安装了系统,所以要重新安装开发环境,按照之前写过的一篇博客介绍的步骤进行安装,发现报了一些错误,下面是遇到的问题和解决方法: 首先下载安装就不多说了,下载地址:https://www.mo ...

  5. php 中 FastCGI与cgi的关系,何为fastcgi

    FastCGI是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持 在内存中并因此获得较高的性能.众所周知,CGI解释器的反复加载是CGI性能低下的主要原因, 如果CGI解释器 ...

  6. IE6下面的css调试工具

    在开发过程中,代码部分实现之后,就要着手于前台展示部分的界面,公司的美工又是新手,无奈,只有自己慢慢调了,但IE6之前的版本都没有好的调试工具,后来在网上搜索了一个 IE Developer Tool ...

  7. Bzoj4763 雪辉

    Time Limit: 39 Sec  Memory Limit: 666 MBSubmit: 151  Solved: 80 Description 上次立下的NOIP退役Flag没有成功   这次 ...

  8. 俞昆20155335《网络对抗》MSF基础应用

  9. 2016.6.19——C++杂记

    C++杂记 补充的小知识点: 1.while(n--)和while(--n)区别: while(n--)即使不满足也执行一次循环后跳出. while(--n)不满足直接跳出循环,不执行语句. 用cou ...

  10. js实现数组、对象深度克隆的两种办法

    1.深度克隆的原理 JS中的深度克隆,指的是原对象改变了,克隆出来的新对象也不会改变,原对象与新对象是完全独立的关系. 实现深度克隆的原理得从对象是一种引用类型说起 众所周知,对象是一种引用类型,对象 ...