ansible学习三(命令和模块)

Ansible命令的一般格式:

Ansible 主机IP  -m 模块  -a 模块参数

//主机IP:可以是具体IP也可以用正则表达式匹配也可以选择主机组,主机组在ansible

的hosts文件中定义,hosts默认位置是/etc/ansible/hosts

模块:调用ansible的指定模块,由于ansible是基于模块工作的,所以在使用过程中务

必要指定将要使用的ansible模块。

模块参数:不同模块有不同的参数,具体模块定义具体参数,例如:shell模块用于批

量执行命令,参数为将要执行的命令,copy模块用于批量分发文件,参数为src=源文件位置,dest=目标位置

Ansible选项:

-m指定模块

-a指定模块参数

-k提示输入ssh密码,而不是使用秘钥

-K提示输入sudo密码,与sudo一起使用

-o一个主机的执行结果在一行显示

-s-u指定用户的时候,使用sudo获得root权限

-t将输入放到制定的目录下,命名为每一个主机的名称

-T超时时长

-B在后台运行命令,在制定NUM秒后kill该任务

-P每隔NUM秒,poll一个后台任务 和-B一起使用

-u指定移动端的执行用户

-Usudo到SUDO_USERNAME,代替root用户

-c指定建立连接的类型,一般有ssh,localhost FILES

ansible命令的用法举例

一般格式:ansible host -m 模块 -a 命令

软件安装:ansible host -m apt -a ‘name=gcc state=present’

或者ansible host -m yum -a “name=ntp state=installed”

执行命令:ansible host -m shell -a ‘date’

拷贝文件:ansible host -m copy -a “src=/tmp/server dest=/tmp/server”

文件拉取:ansible host -m fetch -a "src=/tmp/server dest=/tmp/"

文件属性:ansible host -m file -a “dest=/tmp/server mode=755 owner=root group=root”

服务管理:ansible zabbix -m service -a ‘name=httpd state=restarted‘

批量创建用户和密码:ansible zabbix -m user -a ‘name=test003 password="$1$fUuOq8NK$7h3hD4bvJTX0jmoN40S7p1"‘

附:

批量创建用户和密码时可以使用该命令

ansible host -m shell -a ‘useradd username’

ansible host -m shell -a ‘echo password | passwd username --stdin’

模块:

ansible模块可以用ansible-doc -l命令查看,截止到发稿,ansible模块个数已有将近600个,而常用的模块也就十个左右,掌握了常用模块的使用就可以完成绝大多数的自动化操作。

ommand模块 [执行远程命令(默认模块)]

不支持管道操作

ansible testservers -m command -a ‘uname -n‘

script模块 [在远程主机执行主控端的shell/python脚本 ]

直接指定脚本位置即可

ansible testservers -m script -a ‘/etc/ansible/test.sh

shell模块 [类似于command模块、支持管道传递]

比较常用的模块

ansible testservers -m shell -a ‘cat /tmp/test | grep ^test‘

raw模块 [类似于command模块、支持管道传递]

ansible testservers -m raw -a "ifconfig eth0 |sed -n 2p |awk ‘{print \$2}‘ |awk -F: ‘{print \$2}‘"

yum模块[对客户端进行yum操作]

使用yum安装软件,name为yum名,state为接下来的动作,一般情况下,state后面的参数以ed结尾

ansible test -m yum -a ‘name=sshpass state=installed‘

copy模块[批量分发文件]

执行该命令需要给dest指定目录和文件名,执行时可能出现md5校验失败的情况,跟ansible软件有一定的关系,根据实际情况判断。

文件拷贝时可以直接给客户端的该文件定义文件属性 参数为 owner=属主 group=属组 mode=权限

Copy时可以使用backup=yes参数对复制过程进行备份,当传输的文件与原来的文件不一样时,会自动备份客户端的源文件,而不是备份服务端文件。

validate=‘visudo -cf %s‘参数可以在文件传输完成后进行校验,默认传输是需要校验的,校验失败颜色为黄色,使用该参数后校验失败颜色为红色

ansible host -m copy -a “src=/tmp/server dest=/tmp/server”

fetch模块[将远程文件拉取到本地]

将远程目标的文件拉取到本地,默认位置为/本地指定文件夹/远程主机名/tmp/文件

使用lfat=yes参数指定本地存放文件夹,启用该参数时若指定的客户端不止一个,则最传输的文件覆盖掉前面传输的文件

ansible host -m fetch -a "src=/tmp/server dest=/tmp/"

file模块[更改目录属性]

File模块用于配置文件或目录属性,dest或path指定文件或目录位置 mode指定权限 owner指定属主,group指定属组

使用state=directory参数可以在客户端创建文件夹

使用state=link dest指定软连接位置 可以创建软连接

ansible host -m file -a “dest=/tmp/server mode=755 owner=root group=root”

service模块[管理服务]

Service 模块用于控制服务的状态,state指定状态

running打开服务 不支持客户端语言为中文

started 打开服务 不支持客户端语言为中文

restarted 重启服务

stopped 关闭服务

重启服务还可以用shell模块参数为控制服务命令

ansible zabbix -m service -a ‘name=httpd state=restarted‘

时间: 2024-12-29 12:56:22

ansible学习三(命令和模块)的相关文章

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 confi

Ansible学习 ad-hoc命令

Ansible提供两种方式去执行命令,一种是ad-hoc命令,一种是写入Ansible playbook.类似于前者在命令行敲shell,后者是写shell-script脚本,前者解决一些简单的任务,后者执行较复杂的任务. ad-hoc命令格式:ansible <pattern_goes_here> -m <module_name> -a <arguments> pattern_goes_here:被管理的目标主机 module_name:使用的模块名,ansible中

详解Ansible服务常用命令模块

ansible可以使用命令行方式进行自动化管理,基本语法如下: ansible 主机名 -m 模块名称 -a 模块特有参数 ansible的命令行管理工具都是由一系列模块.参数所支持的,可以在命令后面加上-h或--help获取帮助.如使用ansible-doc -h或者ansible-doc --help查看其帮助信息ansible-doc是用来查看模块帮助信息的工具,最主要的选项 -l用来列出可使用的模块, -s用来列出某个模块的描述信息和使用示例. 以下是我列出yum模块的描述信息和操作动作

Ansible学习记录三:配置文件

0.配置文件 两个核心文件:ansible.cfg和hosts文件,默认都存放在/etc/ansible目录下. ansible.cfg:主要设置一些ansible初始化的信息,比如日志存放路径.模块.插件等配置信息 hosts:机器清单,进行分组管理 1.ansible.cfg # config file for ansible -- http://ansible.com/ # ============================================== # nearly al

Ansible 命令相关模块command, shell, raw, expect, script, telnet[转]

本文主要介绍Ansible的几个命令模块,包括: command - 在远程节点上执行命令 shell - 让远程主机在shell进程下执行命令 script - 将本地script传送到远程主机之后执行 raw - 执行低级的和脏的SSH命令 expect - 执行命令并响应提示 telnet - 执行低级的和脏的telnet命令 command模块 简介 command模块用于在给的的节点上运行系统命令,比如echo hello. 它不会通过shell处理命令,因此不支持像$HOME这样的变

自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机

目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 1.3.ansible优缺点 1.4.ansible安装方式 1.5.ansible文件简单介绍 1.6.ansible简单使用 二.ansible-shell简介 2.1.ansible-shell是什么 2.2.ansible-shell安装方式 2.3.ansible-shell简单使用 三.使用ansible的authorized_key模块批量推送公钥到远程主机 3.1.生产秘钥对 3.2.使

ansible 学习笔记(上)

运维工具 当前常见的运维工具(Configuration)有以下一种puppret(ruby)saltstack(python)chefcfengine.... Command and Control; fabricfunc 程序发布: 手动发布 脚本发布 发布程序(运维程序) 程序发布要求:1.不能影响用户体验:2.系统不能停机:3.不能导致系统故障或造成系统完全不可用: 灰度发布模型(考虑以下两种维度):1.主机:2.用户: 发布思路: /webapps/tuangou /webapps/t

Ansible学习:(一)Ansible基础

一.Ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: 1.连接插件connection plugins:负责和被监控端实现通信: 2.host inventory:指定操

Python学习日志之Python模块

Python入门学习笔记之Python模块 Python模块: 一.认识Python模块 1.什么是模块 函数是可以实现一项或多项功能的一段程序.我们的模块是函数功能的扩展,模块是可以实现一项或多项功能的程序块.从定义可以看出:函数是一段程序,模块是一项程序块,也就是说函数,模块都是用来实现功能的,但是模块范围要广,在模块里可以重用多个函数 2.如何导入模块 在Python程序中如果要使用某个模块,不能直接使用某个模块的功能.在模块使用之前,我们需要先导入指定模块,只要导入模块后我们才能使用 >