Ansible常用模块

1.Ping模块

ansible all -m ping

2.setup模块

ansible web -m setup

--tree :将所有主机的输出信息保存到/tmp/目录下,以/etc/ansible/hosts里的主机名为文件名

ansible all -m setup -a 'filter=ansible_distribution_version' --tree /tmp/

filter :过滤关键字

ansible db -m setup -a 'filter=ansible_distribution_version'

gather_subset:按子集收集信息,值有all, min, hardware, network, virtual, ohai, facter。不包含请使用!号,如,!network

facts参数说明如下:

关键字

说明

返回值例子

ansible_nodename

节点名

"6-dns-1.hunk.tech"

ansible_fqdn

FQDN名

"6-dns-1.hunk.tech"

ansible_hostname

主机短名称

"6-dns-1"

ansible_domain

主机域名后缀

"hunk.teh"

ansible_memtotal_mb

总物理内存

"ansible_memtotal_mb": 222

ansible_swaptotal_mb

SWAP总大小

"1023"

ansible_processor

CPU信息

Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz

ansible_processor_cores

CPU核心数量

4

ansible_processor_vcpus

CPU逻辑核心数量

2

ansible_all_ipv4_addresses

有所IPV4地址

192.168.0.200

ansible_all_ipv6_addresses

所有IPV6地址

 

ansible_default_ipv4

默认网关的网卡配置信息

 

ansible_eth2

具体某张网卡信息

不同系统名称需要变化

ansible_dns

DNS设置信

 

ansible_architecture

系统架构

x86_64

ansible_machine

主机类型

x86_64

ansible_kernel

内核版本

"2.6.32-696.el6.x86_64"

ansible_distribution

发行版本

"CentOS"

ansible_distribution_major_version

操作系统主版本号

"6"

ansible_distribution_release

发行版名称

"Final"

ansible_distribution_version

完整版本号

"7.4.1708"

ansible_pkg_mgr

软件包管理方式

"yum"

ansible_service_mgr

进行服务方式

"systemd"

ansible_os_family

家族系列

"RedHat"

ansible_cmdline

内核启动参数

 

ansible_selinux

SElinux状态

"disabled"

ansible_env

当前环境变量参数

 

ansible_date_time

时间相关

 

ansible_python_version

python版本

"2.6.6"

ansible_lvm

LVM卷相关信息

 

ansible_mounts

所有挂载点

 

ansible_device_links

所有挂载的设备的UUID和卷标名

 

ansible_devices

所有/dev/下的正在使用的设备的信息

 

ansible_user_dir

执行用户的家目录

"/root"

ansible_user_gecos

执行用户的描述信息

"The root "

ansible_user_gid

执行用户的的GID

0

ansible_user_id

执行用户的的用户名

"root"

ansible_user_shell

执行用户的shell类型

"/bin/bash"

ansible_user_uid

执行用户的UID

0

3.command 命令模块

默认模块(可省略),用于在远程执行命令(不能使用变量)

creates:一个文件名,当该文件存在,则该命令不执行

free_form:要执行的linux指令

chdir:在执行指令之前,先切换到该指定的目录

removes:一个文件名,当该文件不存在,则该选项不执行

executable:切换shell来执行指令,该执行路径必须是一个绝对路径

4.hostname模块

ansible centos -m hostname -a 'name=centos'

5.cron 定时任务模块

backup:对远程主机上的原任务计划内容修改之前做备份

cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划

day:日(1-31,*,*/2,……)

hour:小时(0-23,*,*/2,……) 

minute:分钟(0-59,*,*/2,……)

month:月(1-12,*,*/2,……)

weekday:周(0-7,*,……)

job:要执行的任务,依赖于state=present

name:该任务的描述

special_time:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly

state:确认该任务计划是创建还是删除

user:以哪个用户的身份执行

ansible db -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state="present"'

ansible db -a "crontab -l"

6.user模块

groups:指定用户的属组

uid:指定用户的uid

password:为用户设置登陆密码,此密码是明文密码加密后的密码

update_password:always/on_create

    always:只有当密码不相同时才会更新密码(默认)

    on_create:只为新用户设置密码

name:指定用户名

createhome:是否创建家目录 yes|no(默认是yes)

system:是否为系统用户

remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r(默认是no)

state:是创建还是删除 present(添加(默认值))or absent(移除)

shell:指定用户的shell环境

append:yes/no

    yes:增量添加group

    no:全量变更group,只设置groups指定的group组(默认)

expires:设置用户的过期时间,值是一个时间戳

注:指定password参数时,不能使用后面这一串密码会被直接传送到被管理主机的/etc/shadow文件中,所以需要先将密码字符串进行加密处理。然后将得到的字符串放到password中即可,加密处理过程如下:

安装python-pip,并安装加密函数库-passlib

yum -y install python-pip

pip install --upgrade pip

pip install passlib

使用加密函数库,获取密文密码

python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"

Password:

$6$0lwTSmqKOkL.ktgl$OnBexXC7haBf0FRHVMIZM2edDeFWBbpKJ2r9cxVwNvY.vh3IIUzwFz8n7jFglc0CrtQSY12ziDonVL6e71Og2.

ansible db -m user -a 'name="testops" password="$6$0lwTSmqKOkL.ktgl$OnBexXC7haBf0FRHVMIZM2edDeFWBbpKJ2r9cxVwNvY.vh3IIUzwFz8n7jFglc0CrtQSY12ziDonVL6e71Og2."'

7.group模块

gid:指定组的uid

name:指定组名

system:是否为系统用户组

state:是创建还是删除 present(添加(默认值))or absent(移除)

8.copy模块

backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no

content:用于替代"src",可以直接设定指定文件的值

dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录

directory_mode:递归的设定目录的权限,默认为系统默认权限

force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes

others:所有的file模块里的选项都可以在这里使用

src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来结尾,则包含目录在内的整个内容全部复制,类似于rsync。

ansible db -m copy -a 'src=/etc/hosts dest=/tmp/ owner=root mode=640 backup=no'

ansible db -m copy -a 'content="Hello ansible you are clever! " dest=/tmp/ansile.txt force=yes owner=root mode=640 backup=no'

9.fatch模块

dest:用来存放文件的目录

flat:允许覆盖默认行为从hostname/path到/file的,如果dest以/结尾,它将使用源文件的基础名称

src:在远程拉取的文件,并且必须是一个file,不能是目录

validate_checksum:当文件fetch之后进行md5检查

ansible test -m fetch -a "src=/root/test.txt dest=/root"

10.file模块

force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

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

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

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

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

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

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

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

state:  directory:如果目录不存在,创建目录 file:即使文件不存在,也不会被创建 link:创建软链接 hard:创建硬链接 touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间 absent:删除目录、文件或者取消链接文件

ansible db -m file -a "src=/etc/fstab dest=/tmp/fstab state=link"

ansible db -m file -a "path=/tmp/fstab state=absent"

ansible db -m file -a "path=/tmp/test state=touch"

11.yum模块

config_file:yum的配置文件

disable_gpg_check:关闭gpg_check

disablerepo:不启用某个源

enablerepo:启用某个源

name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径

state:状态(present安装,absent卸载,latest最新)

ansible web -m yum -a 'name=httpd state=latest'

ansible web -m yum -a 'name="@Development tools" state=present'

ansible web -m yum -a 'name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present'

12.service模块

arguments:给命令行提供一些选项

enabled:是否开机启动 yes|no

name:必选项,服务名称

pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行

runlevel:运行级别

sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟

state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)

ansible web -m service -a 'enabled=yes name=httpd state=started'

13. shell模块

ansible web -m shell -a "ps -ef|grep httpd"

14. script模块

ansible db -m script -a '/tmp/script.sh'

15. synchronize模块

archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启

checksum: 跳过检测sum值,默认关闭

compress:是否开启压缩

copy_links:复制链接文件,默认为no ,注意后面还有一个links参数

delete: 删除不存在的文件,默认no

dest:目录路径

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

dirs:传速目录不进行递归,默认为no,即进行目录递归

rsync_opts:rsync参数部分

set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况

mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件

16. mount模块

fstype:必选项,挂载文件的类型

name:必选项,挂载点

opts:传递给mount命令的参数

src:必选项,要挂载的文件

state:必选项 present:只处理fstab中的配置  absent:删除挂载点 mounted:自动创建挂载点并挂载之 umounted:卸载

ansible test -m mount 'name=/mnt src=/dev/loop0 fstype=ext4 state=mounted opts=rw'

17.raw模块

执行原始的命令,而不是通过模块子系统

18.apt模块

deb:用于安装远程机器上的.deb后缀的软件包(optional)

install_recommends:这个参数可以控制远程电脑上是否只是下载软件包,还是下载后安装,默认参数为true,设置为false的时候只下载软件包,不安装

update_cache:当这个参数为yes的时候等于apt-get update(optional)

name:apt要下载的软件包名字,支持name=git=1.6 这种制定版本的模式

state:状态(present,absent,latest),表示是安装还卸载

   present: 默认的,表示为安装

   lastest: 安装为最新的版本

   absent:表示删除

19.pip模块

用于管理Python库依赖项

chdir:执行pip命令前cd进入的目录

name:要安装的Python库的名称或远程包的URL。

requirements:一个pip requirements.txt文件的路径,它应该是远程系统的本地文件,如果使用chdir选项,则可以将文件指定为相对路径。

version:指定的Python库的安装版本。

extra_args:额外的参数传递给pip。

executable:显式可执行文件或可执行文件的路径名,用于为系统中安装的特定版本的Python运行pip。 例如pip-3.3,如果系统中安装了Python 2.7和3.3,并且想要为Python 3.3安装运行pip。 它不能与“virtualenv”参数一起指定(在2.1中添加)。 默认情况下,它将采用适用于python解释器的版本。 pip3在python 3上,pip2或pip在python 2上。

virtualenv:要安装到的virtualenv目录的可选路径。 它不能与’executable’参数一起指定(在2.1中添加)。 如果virtualenv不存在,则将在安装软件包之前创建它。 可选的virtualenv_site_packages,virtualenv_command和virtualenv_python选项会影响virtualenv的创建。

virtualenv_command:用于创建虚拟环境的命令或路径名。 例如pyvenv,virtualenv,virtualenv2,~/bin /virtualenv,/usr/local/bin/virtualenv。

virtualenv_python:用于创建虚拟环境的Python可执行文件。 例如python3.5,python2.7。 未指定时,将使用用于运行ansible模块的Python版本。 当virtualenv_command使用pyvenv或-m venv模块时,不应使用此参数。

state:状态(present,absent,latest, forcereinstall),表示是安装还卸载

   present:默认的,表示为安装

   lastest: 安装为最新的版本

   absent:表示删除

   forcereinstall:“forcereinstall”选项仅适用于可ansible 2.1及更高版本。

20.template模块

基于模板方式生成一个文件复制到远程主机(template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。)

backup: 如果原目标文件存在,则先备份目标文件

src:在ansible控制器上的Jinja2格式化模板的路径。 这可以是相对或绝对的路径。

dest:将模板渲染到远程机器上的位置。

force:是否强制覆盖,默认为yes

owner:目标文件属主

group:目标文件属组

mode:目标文件的权限模式,模式可以被指定为符号模式(例如,u + rwx或u = rw,g = r,o = r)。

21.get_url 模块

sha256sum:下载完成后进行sha256 check;

timeout:下载超时时间,默认10s

url:下载的URL

url_password、url_username:主要用于需要用户名密码进行验证的情况

dest:将文件下载到哪里的绝对路径。如果dest是目录,则使用服务器提供的文件名,或者如果没有提供,将使用远程服务器上的URL的基本名称。

headers:以格式“key:value,key:value”为请求添加自定义HTTP标头。

22.lineinfile模块

可以借助 lineinfile 模块,确保”某一行文本”存在于指定的文件中,或者确保从文件中删除指定的”文本”(即确保指定的文本不存在于文件中),还可以根据正则表达式,替换”某一行文本”

path:必须参数,指定要操作的文件。

line: 使用此参数指定文本内容。

regexp:使用正则表达式匹配对应的行。

state:absent表示删除,state的默认值为present。

backrefs:与“state=present”一起使用,“line”可以包含backreference,如果“regexp”与文件中的任何位置都不匹配,则文件将被保留不变。

insertafte:借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,使用backrefs参数时,此参数会被忽略。

insertbefore:借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,当使用backrefs参数时,此参数会被忽略。

backup:是否在修改文件之前对文件进行备份。

create:当要操作的文件并不存在时,是否创建对应的文件。

23.blockinfile模块

blockinfile模块可以帮助我们在指定的文件中插入"一段文本"。

path:必须参数,指定要操作的文件。

block:此参数用于指定想要操作的那"一段文本",此参数有一个别名叫"content",使用content或block的作用相同。

marker:ansible会自动为这段文本添加一个开始标记和一个结束标记,默认情况下,开始标记为# BEGIN ANSIBLE MANAGED BLOCK,结束标记为# END ANSIBLE MANAGED BLOCK,可以使用marker参数自定义"标记",如,marker=#{mark}test ,这样设置以后,开始标记变成了# BEGIN test,结束标记变成了# END test,{mark}会自动被替换成开始标记和结束标记中的BEGIN和END。

state:两个可选值,present与absent,默认值就是present。在执行插入操作或更新操作时state的值为present,如果对应的文件中已经存在对应标记的文本并且将state的值设置为absent,则表示从文件中删除对应标记的段落。

insertafter:在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的后面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为EOF,表示将文本插入到文档末尾。

insertbefore:在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的前面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的前面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为BOF,表示将文本插入到文档开头。

backup:是否在修改文件之前对文件进行备份。

create:当要操作的文件并不存在时,是否创建对应的文件。

原文地址:https://www.cnblogs.com/xiaoleimagic/p/13446976.html