Ansible常用模块

1.1、Ansible Ad-hoc

什么事ad-hoc???就是临时的命令,不会保存,ansible的模式有两种,分别是ad-hoc(命令行模式)和playbook模式。ad-hoc主要用于日常查询和拷贝文件的常用操作。

ad-hoc命令行格式:

ansible  bgx      -m      command      -a      'df -h'
命令 主机名称 指定模块 模块名称 模块动作 具体命令

ad-hoc执行的状态返回信息:

  • 绿色:执行成功并且不需要做改变的动作
  • 黄色:执行成功并且对目标主机做变更
  • 红色:执行失败

ad-hoc的执行过程:

  1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg
  2. 加载自己对应的模块文件,如command ping
  3. 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器
  4. 给文件+x权限
  5. 执行并返回结果
  6. 删除临时py文件,sleep 10 退出

1.2、Ansible的基础命令

ansible ansible-doc ansible-playbook ansible-vault ansible-console ansible-galaxy ansible-pull

Ansible-doc 显示模块帮助
ansible-doc [options] [module...] -a 显示所有模块的文档 -l --list 列出可用模块 -s --snippet 显示制定模块的playbook片段 示例: ansible-doc -l 列出所有模块 ansible-doc ping 查看制定模块帮助用法 ansible-doc -s ping 查看制定模块帮助用法 Ansible命令用法
ansible <host-pattern> [-m module_name] [-a args] --version 显示版本 -m module 制定模块默认为 command -v 详细过程 -vv -vvv更详细 --list-hosts 显示主机列表 可以简写为--list -k --ask-pass 提示数据ssh连接密码 默认key验证 -K --ask-become-pass 提示输入sodu的口令 -C check 检查并不执行 -T --timeout=TIMEOUT 执行命令的超时时间 默认10s -u --user=REMOTE_USER 执行远程执行的用户 -b --become 代替旧版的sudo切换

1.3、常用模块

1.3.1、command模块

# 默认模块,执行命令
[root@ansible ~]# ansible web -m command -a "hostname"
192.168.0.135 | CHANGED | rc=0 >>
ansible 192.168.0.101 | CHANGED | rc=0 >>
localhost.localdomain

1.3.2、shell模块

# 和command类似,但是在执行带有管道命令执行时,则需要用shell模块,如下
[root@ansible ~]# ansible web -m shell -a "ifconfig eth0 | awk 'NR==2 {print $2}'"
192.168.0.101 | CHANGED | rc=0 >>
inet 192.168.0.101 netmask 255.255.255.0 broadcast 192.168.0.255 192.168.0.135 | CHANGED | rc=0 >>
inet 192.168.0.135 netmask 255.255.255.0 broadcast 192.168.0.255

1.3.3、script模块

[root@ansible ~]# mkdir ansible
[root@ansible ~]# cd ansible/
[root@ansible ansible]# ls
[root@ansible ansible]# vim 1.sh
#!/bin/bash
hostname
[root@ansible ansible]# chmod +x 1.sh #在本地运行模块,等同于在远程执行,不需要将脚本文件进行推送目标主机执行
[root@ansible ansible]# ansible web -m script -a 1.sh

1.3.4、copy模块

#拷贝文件模块
[root@ansible ~]# ansible web -m copy -a "src=/etc/hosts dest=/tmp/test.txt"
[root@ansible ~]# ansible web -a "ls /tmp/test.txt"
192.168.0.135 | CHANGED | rc=0 >>
/tmp/test.txt 192.168.0.116 | CHANGED | rc=0 >>
/tmp/test.txt #除了基础的拷贝,还可以在拷贝的时候对目标主机的文件进行备份,更改所属和权限等等。
src #推送数据的源文件信息
dest #推送数据的目标路径
backup #对推送传输过去的文件,进行备份
content #直接批量在被管理端文件中添加内容
group #将本地文件推送到远端,指定文件属组信息
owner #将本地文件推送到远端,指定文件属主信息
mode #将本地文件推送到远端,指定文件权限信息 [root@ansible ~]# ansible web -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup=yes mode=755 owner=bin"
[root@ansible ~]# ansible web -a 'ls -l /tmp/test.txt'
192.168.0.135 | CHANGED | rc=0 >>
-rwxr-xr-x 1 bin root 158 Nov 15 13:56 /tmp/test.txt 192.168.0.116 | CHANGED | rc=0 >>
-rwxr-xr-x 1 bin root 158 Nov 15 13:56 /tmp/test.txt

1.3.5、fetch模块

#从客户端取文件到服务端,与copy相反
[root@ansible ~]# ansible web -m fetch -a 'src=/root/2.sh dest=/tmp/'
[root@ansible ~]# tree /tmp/192.168.0.1*
/tmp/192.168.0.116
└── root
└── 2.sh
/tmp/192.168.0.135
└── root
└── 2.sh
#默认只支持单个文件,不支持多个文件或目录,做个文件建议放进目录内tar打包后进行拉取

1.3.6、file模块

# 更改文件属性
[root@ansible ~]# ansible web -m file -a 'path=/root/2.sh mode=755'
# 创建文件
[root@ansible ~]# ansible web -m file -a "path=/tmp/22.txt state=touch"
# 创建目录
[root@ansible ~]# ansible web -m file -a "path=/tmp/textdir state=directory"
# 创建软链接
[root@ansible ~]# ansible web -m file -a "src=/tmp/textdir path=/tmp/textdir_link state=link" #这里的path也可以使用dest或者是name关键字进行代替,都是一样的效果,具体可以查看ansible-doc file的帮助文档 path #指定远程主机目录或文件信息
recurse #递归授权
state
directory #在远端创建目录
touch #在远端创建文件
link #link或hard表示创建链接文件
absent #表示删除文件或目录
mode #设置文件或目录权限
owner #设置文件或目录属主信息
group #设置文件或目录属组信息

1.3.7、hostname模块

[root@ansible ~]# ansible 192.168.0.116 -m hostname -a "name=node01"
[root@ansible ~]# ansible 192.168.0.116 -a "hostname"
192.168.0.116 | CHANGED | rc=0 >>
node01

1.3.8、cron模块

#  创建计划任务
[root@ansible ~]# ansible web -m cron -a 'minute=* weekday=1,3,5 job="ntpdate ntp1.aliyun.com" name=update_time'
[root@ansible ~]# ansible web -m shell -a "crontab -l"
192.168.0.135 | CHANGED | rc=0 >>
#Ansible: update_time
* * * * 1,3,5 ntpdate ntp1.aliyun.com 192.168.0.116 | CHANGED | rc=0 >>
#Ansible: update_time
* * * * 1,3,5 ntpdate ntp1.aliyun.com # 取消计划任务,必须是在全部命令加上disabled,否则就是新建的另一个计划任务
[root@ansible ~]# ansible web -m cron -a 'disabled=true minute=* weekday=1,3,5 job="ntpdate ntp1.aliyun.com" name=update_time' # 再次打开计划任务
[root@ansible ~]# ansible web -m cron -a 'disabled=false job="ntpdate ntp1.aliyun.com" name=update_time' # 删除计划任务
[root@ansible ~]# ansible web -m cron -a 'job="ntpdate ntp1.aliyun.com" name=update_time state=absent'

1.3.9、yum模块

[root@ansible ~]# ansible web -m yum -a "name=vsftpd"
name #指定要安装的软件包名称
state #指定使用yum的方法
installed,present #安装软件包
removed,absent #移除软件包
latest #安装最新软件包
[root@ansible ~]# ansible web -m shell -a "rpm -q vsftpd"

1.3.10、service模块

# 设置服务的启动、关闭、重启以及开机自启
[root@ansible ~]# ansible web -m service -a "name=vsftpd state=started enabled=yes"
[root@ansible ~]# ansible web -m shell -a "netstat -tulnp |grep 21" name # 定义要启动服务的名称
state # 指定服务状态
started #启动服务
stopped #停止服务
restarted #重启服务
reloaded #重载服务
enabled #开机自启

1.3.11、group模块

[root@ansible ~]# ansible web -m group -a "name=testing gid=1010"
name #指定创建的组名
gid #指定组的gid
state
absent #移除远端主机的组
present #创建远端主机的组(默认)

1.3.12、user模块

[root@ansible ~]# ansible web -m user -a "name=kobe uid=1012 group=1010 shell=/sbin/nologin create_home=no"

uid             #指定用户的uid
group #指定用户组名称
groups #指定附加组名称
password #给用户添加密码
shell #指定用户登录shell
create_home #是否创建家目录

Ansible入门笔记(2)之常用模块的更多相关文章

  1. Ansible入门笔记(1)之工作架构和使用原理

    目录 Ansible入门笔记(1) 1.Ansible特性 2.ansible架构解析 3.ansible主要组成部分 1)命令执行来源: 2)利用ansible实现管理的方式 3)Ansile-pl ...

  2. 自动化运维工具Ansible实战(四)常用模块

    转载链接:http://blog.51cto.com/liqingbiao/1962609   Ansible模块按功能分为:云模块.集群模块. 命令模块.数据库模块.文件模块.资产模块.消息模块.监 ...

  3. Ansible入门笔记(3)之Playbook

    目录 Ansible-playbook 1.1.什么是playbook? 1.2.playbook的核心组成 1.3.playbook的handlers.notify触发 1.4.playbook的变 ...

  4. Ansible 快速安装配置,常用模块

    Ansible是一个轻量级的工具,基于python语言实现,通过python中的paramiko来连接并管理机器, 功能强大(YAML,PlayBook,模块化功能),不需要安装客户端, 通过ssh连 ...

  5. python笔记6:常用模块

    模块,模块就是封装了特殊功能的代码. 模块分为三种: 自定义模块 第三方模块 内置模块 1.自定义模块 自定义模块就是自己定义的模块,如何import自定义模块,如下: (1)主程序与模块程序在同一目 ...

  6. python全栈开发从入门到放弃之常用模块和正则

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  7. Ansible常用模块基本操作

    Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. 前言 对于任何一个框架,一个应用,为了更便于推广,便于使用,便于商业化,都会顺便提 ...

  8. Ansible 入门指南 - 安装及 Ad-Hoc 命令使用

    安装及配置 ansible Ansilbe 管理员节点和远程主机节点通过 SSH 协议进行通信.所以 Ansible 配置的时候只需要保证从 Ansible 管理节点通过 SSH 能够连接到被管理的远 ...

  9. ansible笔记(7):常用模块之系统类模块

    ansible笔记():常用模块之系统类模块 cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令. 在了解cron模块的参数之前,先写出一些计划任务的示例,示 ...

随机推荐

  1. 食物链【NOI2001】(信息学奥赛一本通 1390)

    [题目描述] 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种 ...

  2. parameter与argument,property与attribute

    本文摘自:https://blog.csdn.net/Zhangxichao100/article/details/59484133 parameter与argument,property与attri ...

  3. GEO2R

    GEO2R 是GEO数据库官方提供的一个工具,用于进行差异表达分析. 该工具实现的功能就是将GEO数据库中的数据导入到R语言中,然后进行差异分析,本质是通过以下两个bioconductor上的R包实现 ...

  4. 一些树上dp的复杂度证明

    以下均为内网 树上染色 https://www.lydsy.com/JudgeOnline/problem.php?id=4033 可怜与超市 http://hzoj.com/contest/62/p ...

  5. cad.net 读取pc3,pmp 读取pc3打印机文件

    修改pc3文件还没做好..大家先look look怎么读.... 首先弄一个控制台程序, 然后去下载 Ionic.Zip 这个东西...载到控制台...都很简单... 然后就是复制下面代码,看控制台显 ...

  6. Python3+Robot Framework+RIDE安装使用教程

    一.说明 Python3----网上很多文章都是用Python2,Robot Framework的部分文档没更新也直接写着不支持Python3(如RIDE does not yet support P ...

  7. How to let your website login with domain account when using IIS to deploy it?

    如何让你的网站以域账号登录 Select your website in IIS Manager, open Authentication, enable Windows Authentication ...

  8. Shell获取指定区间随机未占用的端口号

    说明 最近在写Jenkins自动运维的脚本,由于是用的docker,部署的时候启动容器端口号冲突会导致部署失败,用的微服务也不在乎端口什么的,只求部署成功,所以想了很久,参考了一些文章,还有运维大哥的 ...

  9. python面试题_01

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没多大 ...

  10. Neo4j学习——基本操作(一)

    由于开始学习知识图谱,因此需要涉及到neo4j的使用一.介绍neo4j是一个图形数据库基于Java开发而成,因此需要配置jvm才可以运行配置请参考我前面的一篇blog:https://www.cnbl ...