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 ...
随机推荐
- Python Unittest - Test Fixtures 测试夹具
一.什么是测试夹具 定义单个或者多个测试所需的环境准备(setUp),以及环境清理(tearDown). 例:连接数据库,或者创建Selenium WebDriver driver实例 二.测试夹具有 ...
- Docker从入门到实战(四)
Docker基础 一:Docker基本操作 一般情况安装Docker之后系统会自动创建一个Docker的用户组,如果没有创建可以手动创建groupadd docker把当前非root用户加入group ...
- java Bean的映射工具
数据层,业务逻辑层和表现层,每一层对应的应该是不一样的对象,所以就有个这么个java bean的映射工具 dozer.......................................... ...
- D. Vitya and Strange Lesson
http://codeforces.com/contest/842/problem/D 1.整体的数组是不用变的,比如数组a[]经过一次询问x后,然后再询问y,相当于询问x ^ y ^ a[i]后的m ...
- SpringBoot | 第五章:多环境配置
前言 写上一篇看英文资料,耗费了心力呀,这章,相对来说简单点.也比较熟悉,但是这很实用.不扯了,开始~ 多环境配置 maven的多环境配置 springboot多环境配置 总结 老生常谈 多环境配置 ...
- easyui框架中关于dialog自带关闭事件的使用
easyui是一个开源的第三方控件库,虽然使用比较方便,但其中有些事件和样式会与其他的控件或者框架形成冲突. 今天谈一下easyui 中dialog这个控件(对话框) easyui dialog一般在 ...
- 从零开始的全栈工程师——html篇1.8(知识点补充与浏览器兼容性)
知识点补充 一.浏览器的兼容问题(关于浏览器的兼容问题 有很多大佬已经解释的很清楚了 这个得自己百度去多花点时间去了解 这里咱们只说一下前面的漏点) 浏览器兼容性问题又被称为网页兼容性或网站兼容性问题 ...
- 页面中引入百度地图,实例化后影响html5的表单元素date的上下箭头
复现步骤: 使用百度地图的JavaScript的API,引入文件地址"http://api.map.baidu.com/api?key=&v=1.1&services=tru ...
- Eucalyptus管理页面密码设置
桉树环境什么的都已经是配置好了的,但是过了一段时间不用,也不知道密码是什么了,看着下面的页面也不知道如何进去,这里我们通过命令行的方式重置用户名和密码信息. 登陆clc所在机器,输入下命令: euar ...
- C#cmd执行命令隐藏窗口,并保持程序一直运行
把要执行的cmd命令放入一个bat文件里,然后执行: //Process p = Process.Start(bPath); Process pro = new Process();pro.Start ...