IT@程序员猿媛程序员程序园

Ansible常用模块

2019-05-01  本文已影响9人  高多金

Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

下面我们介绍一下Ansible常用的一些模块

ping

​ ping模块用来检查目标主机是否在线

​ 例子:ansible webserver -m ping

yum

yum模块用来在Centos系统上使用yum命令安装软件包

选项:

name: 指定安装包的名字

state:latest 安装最新版 present 默认安装 installed 安装 absent 卸载

​ 例子:ansible webservers -m yum -a ‘name=httpd state=latest’

command

​ command模块用来执行系统命令,但是不支持shell下的特殊符号 如:| &&等

例子:ansible webservers -m command -a ‘echo 李想’

shell

​ shell模块和command模块使用方法基本一致,但是他可以支持shell的特殊符号,如: | && 等

例子:ansible webservers -m shell -a “cd /opt/ && touch lixiang”

service

​ service模块用来管理centos上的服务的启动、关闭、重启和重载

选项:

​ name: 服务名字

​ state: started(启动) stopped(停止) restarted(重启) reloaded(重载)

​ enabled: 默认是no,将服务设置为开机自启

file

​ file模块用来创建文件、目录、链接文件

选项:

​ group:定义文件/目录的属组

​ mode:定义文件/目录的权限

​ owner:定义文件/目录的属主

​ path:必选项,定义文件/目录的路径

​ recurse:递归的设置文件的属性,只对目录有效

​ src:要被链接的源文件的路径,只应用于state=link的情况

​ dest:被链接到的路径,只应用于state=link的情况

state:

​ directory:如果目录不存在,创建目录

​ file:即使文件不存在,也不会被创建

​ link:创建软链接

​ hard:创建硬链接

​ touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间

​ absent:删除目录、文件或者取消链接文件

user

​ user模块用来创建用户

选项

​ home: 指定创建的家目录

​ groups:指定用户组

​ uid:指定UID

​ password:设置密码,密码必须是密文

​ name:创建的用户名字

​ createhome:是否创建家目录(yes/no)

​ state: 是创建还是删除。(present,absent),默认是创建

​ shell: 指定用户登录的shell环境

group

​ group用来创建用户组

选项:

​ gid:指定用的gid。

​ name:指定用户名。

​ state:是创建还是删除。(present,absent)

copy

​ copy模块用来复制文件至目标主机

选项:

​ src:文件在管理主机的据对路径或者相对路径

​ dest:将文件复制到目标主机的路径

​ bakcup:是否将目标主机的同名文件备份,默认为no

​ directory_mode:递归授权

例子:

​ ansible webservers -m copy -a ‘src=/root/nginx.sh dest=/opt/’

unarchive

​ unarchive模块用来解压文件

选项:

​ copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,则要求目标主机上压缩包必须存在

​ creates:指定一个文件名,当该文件存在时,则解压指令不执行

​ dest:远程主机上的一个路径,即文件解压的绝对路径。

​ group:解压后的目录或文件的属组

​ mode:解压后文件的权限

​ src:如果copy为yes,则需要指定压缩文件的源路径

​ owner:解压后文件或目录的属主

例子:

​ ansible webservers -m unarchive -a ‘src=/root/nginx.tar.gz dest=/opt/ group=www ower=www mode=777 ’

get_url

​ get_url模块,该模块主要用于从http、ftp、https服务器上下载文件(类似于wget

选项:

​ url: 指定要下载的文件的URL地址

例子:

​ ansible webservers -m get_url -a ‘url= http://nginx.org/download/nginx-1.15.7.tar.gz

synchronize

​ 使用rsync同步文件,将主控方目录推送到指定节点的目录下,使用此模块需要先安装rsync

​ delete: 删除不存在的文件,delete=yes 使两边的内容一样(即以推送方为主),默认no

​ src: 要同步到目的地的源主机上的路径; 路径可以是绝对的或相对的。如果路径使用”/”来结尾,则只复制目录里 的内容,如果没有使用”/”来结尾,则包含目录在内的整个内容全部复制

​ dest:目的地主机上将与源同步的路径; 路径可以是绝对的或相对的。

​ dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议。

​ mode: push或pull,默认push,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件。

​ rsync_opts:通过传递数组来指定其他rsync选项。

fetch

​ fetch模块它用于从远程机器获取文件,并将其本地存储在由主机名组织的文件树中。

选项:

​ src:远程系统上要获取的文件。 这必须是一个文件,而不是一个目录。 后续版本可能会支持递归提取。

​ dest:保存文件的目录

setup

​ setup 模块用于收集远程主机的一些基本信息。

选项:

​ filter参数:用于进行条件过滤。如果设置,仅返回匹配过滤条件的信息。

常用的过滤关键词:

​ ansible_all_ipv4_addresses:仅显示ipv4的信息

​ ansible_devices:仅显示磁盘设备信息

​ ansible_distribution:显示是什么系统,例:centos,suse等

​ ansible_distribution_major_version:显示是系统主版本

​ ansible_distribution_version:仅显示系统版本

​ ansible_machine:显示系统类型,例:32位,还是64位

​ ansible_eth0:仅显示eth0的信息

​ ansible_hostname:仅显示主机名

​ ansible_kernel:仅显示内核版本

​ ansible_lvm:显示lvm相关信息

​ ansible_memtotal_mb:显示系统总内存

​ ansible_memfree_mb:显示可用系统内存

​ ansible_memory_mb:详细显示内存情况

​ ansible_swaptotal_mb:显示总的swap内存

​ ansible_swapfree_mb:显示swap内存的可用内存

​ ansible_mounts:显示系统磁盘挂载情况

​ ansible_processor:显示cpu个数(具体显示每个cpu的型号)

​ ansible_processor_vcpus:显示cpu个数(只显示总的个数)

​ ansible_python_version:显示python版本

例子:

​ 获取目标主机的ipv4地址

​ ansible webservers -m setup -a 'filter=ansible_all_ipv4_addresses'

上一篇 下一篇

猜你喜欢

热点阅读