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. 博客索引and题目列表

    目录 笔记整理 计划 要学的东西 缺省源 要做的题 搜索 高斯消元 矩阵 排列组合 2019.7.9 2019.7.10 kmp ac自动机 2019.7.11 2019.7.15 笔记整理 1.同余 ...

  2. 转载:EM算法的最精辟讲解

    机器学习十大算法之一:EM算法.能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题.神为什么是神,因为神能做很多人做不了的事.那么EM ...

  3. vue动态添加路由,跳转页面时,页面报错路由重复:vue-router.esm.js?8c4f:16 [vue-router] Duplicate named routes definition: { name: "Login", path: "/login" }

    之前用了一个vue-element-admin做了一个小项目,里面用到了动态添加路由,动态展示侧边栏, 当我切换页面时,控制台总是警告提示路由重复,连续跳转几次页面后,控制台就被这些警告占满了, 于是 ...

  4. SpringData JPA实现增删改查

    application.properties配置 一.创建实体类并自动生成数据库表 二.dao层继承JpaRepository 三.controller中增加操作 结果: 删除操作: 修改操作:

  5. Glimma 包

    http://master.bioconductor.org/packages/3.9/bioc/html/Glimma.html 安装 if (!requireNamespace("Bio ...

  6. MySQL5.7调优参数

    1. 更改MySQL Data File位置 datadir=/data/mysqlsocket=/data/mysql/mysql.sock 2. 调整OS参数 * soft nproc 10240 ...

  7. Orm 常见查询实例

    一.Moon.Orm框架总述 (您还用hibernate?实体框架?) 1.框架名:Moon 意思是月亮,而非Mono.因为很喜欢明月,所以以此为名.它是一个.NET下的Orm框架. 2.发展历史:历 ...

  8. 《Linux就该这么学》培训笔记_ch07_RAID和LVM

    <Linux就该这么学>培训笔记_ch07_RAID和LVM 文章最后会post上书本的笔记照片. 文章主要内容: RAID(独立冗余磁盘阵列) 部署磁盘阵列 损坏磁盘阵列及修复 磁盘阵列 ...

  9. CentOS忘记密码修改方案以及centos卡在开机登录界面,命令失效的解决方法

    CentOS忘记密码修改方案 应用场景 linux管理员忘记root密码,需要进行找回操作. 注意事项:本文基于CentOS7.2环境进行操作的,由于CentOS的版本之间是有差异的,继续之前请先确定 ...

  10. EXT.net 1.x TreePanel的一个坑

    Ext.net TreePanel有一个方法 drptreepanel.setChecked({ ids: idsarray, silent: true });  如果TreePanel里有1,3两个 ...