ansible学习系列2-ansible常用模块使用

1. 查看支持的模块

[[email protected] ~]# ansible-doc -l

这里我们看下ansible的支持的模块个数

[[email protected] ~]# ansible-doc -l |wc -l   #查看支持的模块个数
1039
[[email protected] ~]# ansible --version        #查看我们的ansible版本号
ansible 2.3.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.6.6 (r266:84292, Aug 18 2016, 14:53:48) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

2.获取模块的帮助

这里我们使用ansible-doc获取下command模块的使用方式。

[[email protected] ~]# ansible-doc command

3.1 command模块

command :作为ansible的默认模块,可以允许远程主机范围内的所有shell命令。

注意: 在command的命令中含有像`$ HOME‘这样的变量和像``<“‘,`”>“, `“”“”,“”;“”和“”&“‘将无法正常工作(如果需要这些功能,请使用[shell]模块)

[[email protected] ~]# ansible 192.168.168.11* -m command -a ‘ip addr show dev eth0‘
192.168.168.115 | SUCCESS | rc=0 >>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:29:8d:e2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.115/24 brd 192.168.168.255 scope global eth0
    inet6 fe80::250:56ff:fe29:8de2/64 scope link
       valid_lft forever preferred_lft forever

192.168.168.111 | SUCCESS | rc=0 >>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:77:77:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.111/24 brd 192.168.168.255 scope global eth0
    inet6 fe80::20c:29ff:fe77:7791/64 scope link
       valid_lft forever preferred_lft forever

3.2 script模块

功能:在远程主机上执行主控端的脚本,相当于scp+shell组合。

[[email protected] ~]# ansible all -m script -a "/home/test.sh 12 34"

3.3 shell模块

功能:执行远程主机的shell脚本文件

[[email protected] ~]# ansible all -m shell -a "/home/test.sh"

shell替代command执行

[[email protected] ~]# ansible 192.168.168.11* -m shell -a ‘ip addr show dev eth0‘
192.168.168.111 | SUCCESS | rc=0 >>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:77:77:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.111/24 brd 192.168.168.255 scope global eth0
    inet6 fe80::20c:29ff:fe77:7791/64 scope link
       valid_lft forever preferred_lft forever

192.168.168.115 | SUCCESS | rc=0 >>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:29:8d:e2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.115/24 brd 192.168.168.255 scope global eth0
    inet6 fe80::250:56ff:fe29:8de2/64 scope link
       valid_lft forever preferred_lft forever

3.4 copy模块

功能: 实现主控端向目标主机copy文件。

[[email protected] ~]# ansible all -m copy -a "src=/home/test.sh dest=/tmp/ owner=root group=root mode=0755"    #src 主控端文件位置#dest 被控端目标位置#owner 文件复制过去后的所有者#group 文件复制过去后的所属组#mode  文件的权限设定,执行a+x这种方式

3.5 stat模块

功能: 获取远程文件的状态信息,包括atime,ctime,mtime,md5,uid,gid等信息。

[[email protected] ~]# ansible all -m stat -a "path=/etc/sysctl.conf"

3.6 yum模块

功能: 安装软件包。

[[email protected] ~]# ansible all -m yum -a "name=httpd state=latest disable_gpg_check=yes enablerepo=epel"#name 包名#state (Choices: present, installed, latest, absent, removed)[Default: present]#disable_gpg_check:禁止gpg检查#enablerepo:只启动指定的repo

3.7 cron模块

功能:远程主机crontab配置

[[email protected] ~]# ansible all -m cron -a "name=‘test‘ hour=‘2-5‘ minute=‘*/5‘ day=‘1‘ month=‘3,4‘ weekday=‘1‘ job=‘ls -l‘ user=tom"192.168.168.115 | SUCCESS => {    "changed": true,     "envs": [],     "jobs": [        "test"    ]}192.168.168.111 | SUCCESS => {    "changed": true,     "envs": [],     "jobs": [        "test"    ]}

我们去被控主机看下生成的crontab作业

[[email protected] ~]# crontab  -l -u tom
#Ansible: test
*/5 2-5 1 3,4 1 ls -l

删除指定crontab

[[email protected] ~]# ansible all -m cron -a "name=test state=absent"

3.8 mount模块

功能: 挂载文件系统

[[email protected] ~]# ansible 192.168.168.111 -m mount -a "path=/mnt/data src=/dev/sd0 fstype=ext3 ots=ro state=present"

注:mount已经使用path代替了原来的name参数,但是name参数还是可以使用的。

3.9 service模块

功能: 服务管理

[[email protected] ~]# ansible all -m service -a "name=httpd state=restarted"    #启动服务
[[email protected] ~]# ansible all -m service -a "name=httpd state=running"      #查看服务状态
[[email protected] ~]# ansible all -m service -a "name=httpd state=stoped"       #停止服务

3.10 user模块

功能: 远程主机的用户管理

[[email protected] ~]# ansible all -m user -a "name=jerry comment=‘ doubi jerry‘"   #添加用户 详细参数参考ansible-doc user
[[email protected] ~]# ansible all -m user -a "name=jerry state=absent remove=yes"  #删除用户
时间: 2024-10-25 11:34:56

ansible学习系列2-ansible常用模块使用的相关文章

SaltStack学习系列之state常用模块

常用模块:cron,cmd,file,mount,ntp,pkg,service,user,group cmd模块 参数: name:要执行的命令 unless:用于检查的命令,只有unless指向的命令返回False时才执行name那行的命令 cwd:执行命令时的目录,默认为root user:以指定用户身份运行命令 group:以指定用户组身份运行命令 run:运行name后的命令 require:确保某个模块执行之后才执行这个模块 实例 [[email protected] ~]# cat

Python学习系列(六)(模块)

一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: i)引入模块:import   moduleName ii)引入模块下的函数:from moduleName import function1,function2,-- iii)引入模块下的所有函数:from moduleName import * 使用模块里的函数的方法: moduleName.function(agrs) 示例: >>> import math >

ansible学习三(命令和模块)

Ansible命令的一般格式: Ansible 主机IP  -m 模块  -a 模块参数 //主机IP:可以是具体IP也可以用正则表达式匹配也可以选择主机组,主机组在ansible 的hosts文件中定义,hosts默认位置是/etc/ansible/hosts 模块:调用ansible的指定模块,由于ansible是基于模块工作的,所以在使用过程中务 必要指定将要使用的ansible模块. 模块参数:不同模块有不同的参数,具体模块定义具体参数,例如:shell模块用于批 量执行命令,参数为将要

ansible学习记录之ansible安装

1. CentOS6.x x64 服务器端安装 # rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm    # yum -y install ansible 配置文件查看: [[email protected] ansible]# egrep -v "(#|^$)" /etc/ansible/ansible.cfg    [defaults]    hostf

pyhton学习笔记5:常用模块:datatime,random,json,re

一.模块基础: 1.  定义 能够实现某个功能的代码集合(本质是py文件)  test.p的模块名是test包的定义:用来从逻辑上组织模块,本质就是一个目录(必须带有一个__init__.py文件) 2. 导入方法: import module import module1,module2 from module import * from module import m1,m2,m3 from module import logger as module_logger 3.import 本质

Func系列2:常用模块及API

简介 Func提供了非常丰富的功能模块,包括CommandModule(执行命令).CopyFileModule(拷贝文件).CPUModule(CPU信息).DiskModule(磁盘信息).FileTrackerModule(文件跟踪).IPtablesModule(iptables管理).MountModule(Mount挂载).NagiosServerModule(Nagios管理).NetworkTest(网络测试).ProcessModule(进程管理).SysctlModule(s

Python学习—基础篇之常用模块

常用模块 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. python常用模块主要有: 1. time模块 2. random模块 3. hashlib模块 4. os模块 5. sys模块 6. logging模块 7. 序列化模块 8. configpar

Python学习之路13?常用模块

一 time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行"type(time.time())",返回的是float类型. 格式化的时间字符串(Format String) 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) 1 import time 2 #

[ansible学习笔记]Error: ansible requires the stdlib json or simplejson module, neither was found!

1.执行ansible命令的时候客户端rhel56-192.168.209.133 出现以下错误: [[email protected] ansible]# ansible all -m command -a "python -V" -u reed SSH password: rhel56-192.168.209.133 | FAILED | rc=0 >> Error: ansible requires the stdlib json or simplejson modu