Ansible指令和常用模块使用
这里文章记录一下ansible的指令选项和常用的模块使用
ansible指令选项
- -m:要执行的模块,默认为command
- -a:模块的参数
- -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置
- -k:提示输入ssh登录密码,当使用密码验证的时候用
- -s:sudo运行
- -U:sudo到哪个用户,默认为root
- -K:提示输入sudo密码,当不是NOPASSWD模式时使用
- -C:只是测试一下会改变什么内容,不会真正去执行
- -c:连接类型(default=smart)
- -f:fork多少进程并发处理,默认为5个
- -i:指定hosts文件路径,默认default=/etc/ansible/hosts
- -I:指定pattern,对已匹配的主机中再过滤一次
- --list-host:只打印有哪些主机会执行这个命令,不会实际执行
- -M:要执行的模块路径,默认为/usr/share/ansible
- -o:压缩输出,摘要输出
- --private-key:私钥路径
- -T:ssh连接超时时间,默认是10秒
- -t:日志输出到该目录,日志文件名以主机命名
- -v:显示详细日志
ansible指令使用方法:
ansible可以直接在命令中指定主机组或者主机来着执行命令:例如
[root@Ansible ~]# ansible nginx -m ping
192.168.214.129 | SUCCESS => {
"changed": false,
"ping": "pong"
}
...省略...
[root@Ansible ~]# ansible 192.168.214.131 -m ping
192.168.214.131 | SUCCESS => {
"changed": false,
"ping": "pong"
}
同时更ansible更灵活的是可以使用通配符来匹配符合规则的主机或主机组来执行命令
通配符匹配
匹配所有主机:all 或者 *
[root@Ansible ~]# ansible all -m ping
192.168.214.132 | SUCCESS => {
"changed": false,
"ping": "pong"
}
...省略...
或
[root@Ansible ~]# ansible 192.168.214.* -m ping
192.168.214.131 | SUCCESS => {
"changed": false,
"ping": "pong"
}
...省略...
匹配主机组中部分主机: 用 :隔开主机名
[root@Ansible ~]# ansible 192.168.214.128:192.168.214.132 -m shell -a "hostname"
192.168.214.132 | SUCCESS | rc=0 >>
nginx-2
192.168.214.128 | SUCCESS | rc=0 >>
localhost.localdomain
选择主机组中的部分主机执行:比如第1台到第3台 [0:2]按段执行
[root@Ansible ~]# ansible nginx[0:2] -m shell -a "hostname"
192.168.214.131 | SUCCESS | rc=0 >>
nginx-1
192.168.214.128 | SUCCESS | rc=0 >>
localhost.localdomain
192.168.214.129 | SUCCESS | rc=0 >>
file-server
执行多个主机组
[root@Ansible ~]# ansible nginx:centos7 -m shell -a "hostname"
192.168.214.132 | SUCCESS | rc=0 >>
nginx-2
192.168.214.129 | SUCCESS | rc=0 >>
file-server
192.168.214.128 | SUCCESS | rc=0 >>
localhost.localdomain
192.168.214.131 | SUCCESS | rc=0 >>
nginx-1
ansible常用模块
ansible模块分核心模块和额外模块,其中核心模块按照模块功能来划分,分别为:云模块、命令模块、数据库模块、文件模块、资产模块、消息模块、监控模块、网络模块、通知模块、包管理模块、源码控制模块、系统模块、单元模块、web设施模块、windows模块等。
下面记录一些常用的模块:
使用指令查看ansible支持哪些模块:ansible-doc -l
查看某个模块有哪些参数: ansible-doc [模块名]
shell模块
默认ansible使用的module 是 command,这个模块并不支持 shell 变量和管道等,若想使用shell 来执行模块,请使用-m 参数指定 shell 模块
使用指令的模块后面要加‘-a’参数指定模块参数
[root@Ansible ~]# ansible centos7 -m shell -a "cat /etc/passwd | grep ^root.*"
192.168.214.128 | SUCCESS | rc=0 >>
root:x:0:0:root:/root:/bin/bash
file模块
file模块主要用于远程主机上的文件操作
模块参数
force #需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no;
group #定义文件/目录的属组;
mode #定义文件/目录的权限;
owner #定义文件/目录的属主;
path #必选项,定义文件/目录的路径, required;
recurse #递归的设置文件的属性,只对目录有效;
src #要被链接的源文件的路径,只应用于state=link的情况;
dest #被链接到的路径,只应用于state=link的情况;
state:
directory #如果目录不存在,创建目录;
file #即使文件不存在,也不会被创建;
link #创建软链接;
hard #创建硬链接;
touch #如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间;
absent #删除目录、文件或者取消链接文件;
用法示例
在远程主机/tmp/下创建一个a.txt
[root@Ansible ~]# ansible centos7 -m file -a "dest=/tmp/a.txt state=touch"
将文件删除
[root@Ansible ~]# ansible centos7 -m file -a "dest=/tmp/a.txt state=absent"
将/tmp/b.txt属组属主该成yufu
[root@Ansible ~]# ansible centos7 -m file -a 'dest=/tmp/b.txt owner=yufu group=yufu'
copy模块
copy模块是复制文件到远程主机
模块参数
src #原文件路径
dest #目标路径
force #是否强制覆盖,yes或no
将本机的c.txt 复制到远程主机
[root@Ansible ~]# ansible centos7 -m copy -a 'src=/tmp/c.txt dest=/tmp/'
192.168.214.128 | SUCCESS => {
service模块
service模块用来管理远程主机的服务,这里不分centos6和7的管理方式,都用参数指定
模块参数
name # 指定服务名称
enabled #是否要加入开机启动
state #运行状态,状态名称要用英文过去式
用法示例
将远程httpd服务启动
[root@Ansible ~]# ansible centos7 -m service -a "name=httpd state=started"
192.168.214.128 | SUCCESS => {
关闭httpd
[root@Ansible ~]# ansible centos7 -m service -a "name=httpd state=stopped"
192.168.214.128 | SUCCESS => {
cron模块
cron模块用于管理任务计划
模块参数
name #对执行任务的描述
backup “Ture | Flase” #执行前备份
cron_file #使用本地的cron文件覆盖远程主机的cron 文件
day # 每天 (1-31, * ,*/2,)
hour #小时 ( 0-23, * ,*/2,)
minute #分钟 (0-59, * , */2,)
month #月 ( 0-12, * ,*/2,)
weekday #周 (0-6, * ,)
user #以哪个用户执行
state=absent|present #确认任务计划执行还是删除
job #要执行的任务
用法示例
[root@Ansible ~]# ansible centos7 -m cron -a "name='test' minute='*/1' user='root' job='date'"
查看
[root@localhost ~]# crontab -l
#Ansible: test
*/1 * * * * date
yum模块
yum模块用来管理安装软件包
模块部分参数
list #列出软件包
naem #包名称
state #确定对包的操作:present or installed,or remove absent or removed
应用示例
[root@Ansible ~]# ansible centos7 -m yum -a "name=http state=removed"
192.168.214.128 | SUCCESS => {
user模块
user模块用来管理用户和组
模块参数
home #指定用户的家目录,需要与createhome配合使用;
groups #指定用户的属组;
uid #指定用的uid;
password #指定用户的密码;
name #指定用户名;
createhome #是否创建家目录yes|no;
system #是否为系统用户;
remove #当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r;
state #是创建还是删除;
shell #指定用户的shell环境;
用法示例
不删家目录
[root@Ansible ~]# ansible centos7 -m user -a "name=yufu state=absent"
192.168.214.128 | SUCCESS => {
删除家目录
[root@Ansible ~]# ansible centos7 -m user -a "name=feng state=absent remove=yes"
192.168.214.128 | SUCCESS => {
mount模块
mount模块用来挂载
模块参数
fstype #必选项,挂载文件的类型;
name #必选项,挂载点;
opts #传递给mount命令的参数;
src #必选项,要挂载的文件;
state #必选项;
present #只处理fstab中的配置;
absent #删除挂载点;
mounted #自动创建挂载点并挂载之;
umounted #卸载;
应用示例
[root@Ansible ~]# ansible centos7 -m mount -a"src=/dev/sda4 name=/mnt fstype=ext4 opts=rw state=mounted"
192.168.214.128 | SUCCESS => {
"changed": true,
"dump": "0",
"fstab": "/etc/fstab",
"fstype": "ext4",
"name": "/mnt",
"opts": "rw",
"passno": "0",
"src": "/dev/sda4"
}
有关模块内容暂时就写这么多吧,如果以后有用其他模块再来补充。
Ansible指令和常用模块使用的更多相关文章
- Ansible简介及常用模块
一.基础介绍 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...
- Ansible 入门指南 - 常用模块
介绍 module 文档: 官宣-模块分类的索引 官宣-全部模块的索引 在playbook脚本中,tasks 中的每一个 action都是对 module的一次调用.在每个 action中: 冒号前面 ...
- ANSIBLE安装和常用模块模块使用详细教程
目录 ANSIBLE安装和各种模块应用功能 安装配置ANSIBLE ANSIBLE使用 ansible-galaxy工具 ansible-pull工具 ansible-playbook ansible ...
- mage Ansible学习1 常用模块
一.Ansible特点 二.Ansible架构 1.core modules实现常用模块 2.Custom modules实现自定义模块 3.Connection Plugins 连接插件,可通过SS ...
- Ansible安装及常用模块
配置文件:/etc/ansible/ansible.cfg 主机列表:/etc/ansible/hosts 安装anslibe wget -O /etc/yum.repos.d/epel.repo ...
- Ansible Ad-Hoc与常用模块
ansible 执行结果信息–各颜色说明:ansible Ad-Hoc 说明:ansible 如何查看帮助文档与常用模块详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有 ...
- ansible使用,常用模块
使用ansible管理其他主机有两种方式: 1.命令行执行ansible ad-hoc命令 2.把要做的动作行为写入一个文件[playbook脚本],ansible读取脚本自动完成相应的任务. Ans ...
- Ansible之常用模块(一)
ansible之所以功能强大,不是ansible本身,是因为它有众多的模块,前文我们介绍了ansible的基础介绍,系列命令的用法以及选项的说明,通过前文的学习我们知道了ansible是基于pytho ...
- Ansible运维自动化工具19个常用模块使用实例【转】
一.模块列表 1.setup 2.ping 3.file 4.copy 5.command 6.shell 7.script 8.cron 9.yum 10.service 11.group 12.u ...
随机推荐
- 11-散列4 Hashing - Hard Version (30 分)
Given a hash table of size N, we can define a hash function (. Suppose that the linear probing is us ...
- mysql中 if语句的使用
Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF(expr1,expr2,expr3) IF表达式 代码如下: 如果 expr1 是TRUE (e ...
- mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
mybatis 中使用 sqlMap 进行 sql 查询时,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下: select * from user where name = ...
- 定时备份mysql数据库
第一步:编写mysqldump备份数据库脚本,先新建txt文档,编辑内容为 @echo off set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" ...
- 二维hash
题目描述 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至少两次.输出最大正方形的边长. 输入描述: 第一行两个整数n, m代表矩阵的长和宽: 接下来n行,每 ...
- 记一次mysql数据恢复
确切的说更像是一次数据迁移. 背景介绍: 操作系统:Windows Server 2008 R2 数据库版本:MySQL 5.5 数据库的安装目录与数据文件目录不在同一个磁盘,数据文件所在的目录磁盘损 ...
- Sqoop架构
Sqoop 架构 Sqoop 架构是非常简单的,它主要由三个部分组成:Sqoop client.HDFS/HBase/Hive.Database.下面我们来看一下 Sqoop 的架构图. 用户向 Sq ...
- Primefaces dataTable设置滚动条问题
primefaces dataTable设置滚动条后不论有几行数据都会有滚动条的位置,当数据所占高度大于scrollHeight设定的值时才会出现滚动条,问题是,没有出现滚动条时,预留滚动条的位置不仅 ...
- Java基础反射-调用类
Student类 package com.test.wang; import java.lang.reflect.Constructor; import java.lang.reflect.Field ...
- 前端js优化方案(一)
最近在读<高性能javascript>,在这里记录一下读后的一些感受,顺便加上自己的一些理解,如果有兴趣的话可以关注的我的博客http://www.bloggeng.com/,我会不定期发 ...