ansible经常使用模块

三、ansible经常使用模块

3.一、setup模块

获取主机信息,在playbook里常常用到的参数 gather_facts 就与该模块有关,常用的参数是 filter。python

# 结果很是多,能够用文件重定向保存
ansible lzcx -m setup
# 过滤关键字
ansible lzcx -m setup -a 'filter=ansible_*_mb'
# 获取网卡信息
ansible lzcx -m setup -a "filter=ansible_eth[0-2]"

3.二、ping模块

测试控制端和远程主机之间的网络通讯,注意:有一些主机禁ping,ping不通不表明不能访问linux

ansible lzcx -m ping

3.三、file模块

file模块主要用于建立和删除主机上的文件、目录、软/硬连接,经常使用参数以下:nginx

force: 在两种状况下强制建立软连接。1.源文件不存在但以后会创建的状况下;2.目标软链接已经存在,须要取消以前的软连接,而后建立新的软链接,有两个选项:yes|no;
group: 定义文件/目标的属组
mode: 定义文件/目录的权限
owenr: 定义文件/目录的属主
path: 定义文件/目录的路径
recurse: 递归的设置文件的属性,只对目录有效
src: 要被连接的源文件的路径,只应用于state=link的状况
dest: 被连接到的路径,只应用于state=link的状况,也能够指定路径
file: 即便文件不存在,也不会被建立
link: 建立软链接
hard: 建立硬连接
touch: 若是文件不存在,则会建立一个新的文件,若是文件或目录已存在,则更新其最后修改时间
absent: 删除目录、文件或者取消连接文件
state: 状态描述,可用选项有absent, directory, file, hard, link, touch,默认file算法

# 例:建立远程文件符号连接
ansible yuhui -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"
# 远程文件信息查看
ansible yuhui -m command -a "ls -la /tmp/resolv.conf"
# 删除远程文件符号连接
ansible yuhui -m file -a "path=/tmp/resolv.conf state=absent"
# 远程文件信息查看
ansible yuhui -m command -a "ls -la /tmp/resolv.conf"

file模块

# 远程客户端新建software目录
ansible yuhui -m file -a "dest=/home/operation/software mode=754 state=directory"
# software目录下新建s2.txt文件
ansible yuhui -m file -a "dest=/home/operation/software/s2.txt state=touch"
# 修改s2.txt权限
ansible yuhui -m file -a "dest=/home/operation/software/s2.txt mode=600"
# 删除目录,连带目录下的文件一块儿删除
ansible yuhui -m file -a "dest=/home/operation/software state=absent"
# 还可使用 path 参数指定路径
ansible yuhui -m file -a "path=/home/operation/test.txt state=touch"
# 删除文件
ansible yuhui -m file -a "path=/home/operation/test.txt state=absent"

3.四、copy模块

复制控制端文件到远程客户端,主要参数以下:docker

backup: 在文件存在的时候能够选择覆盖以前,将源文件备份.设定值:yes/no 缺省为yes。
content: 用于替代"src",能够直接设定指定文件的值
backup: 在文件存在的时候能够选择覆盖以前,将源文件备份.设定值:yes/no 缺省为yes。
content: 用于替代"src",能够直接设定指定文件的值
dest: 被复制到远程主机的本地对象文件或者文件夹
mode: 复制对象的设定权限
directory_mode:递归设置目录的权限,默认为系统默认权限
force: 是否强制覆盖.设定值:yes/no 缺省为no,当源文件和目标文件同样时,即便强制覆盖也不生效
others: 全部的file模块里的选项均可以在这里使用
src: 被复制到远程主机的本地对象文件或者文件夹,能够是绝对路径,也能够是相对路径。若是路径是一个目录,它将递归复制。在这种状况下,若是路径使用"/"来结尾,则只复制目录里的内容,若是没有使用"/"来结尾,则包含目录在内的整个内容所有复制,相似于 rsync
validate: The validation command to run before copying into place. The path to the file to validate is passed in via '%s' which must be present as in the example below. The command is passed securely so shell features like expansion and pipes won't work. 以上是说明原文,大意:复制以前验证,验证路径经过 %S 传递,不能使用shell的扩展和管道特性。: 被复制到远程主机的本地对象文件或者文件夹shell

# 将本地文件/etc/ansible/ansible.cfg复制到目标机器/tmp/ansible.conf,copy模块和Linux的copy同样能够重命名
ansible yuhui -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.conf mode=0744"
ansible yuhui -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.conf mode=0744 force=yes"  # 测试force选项
# 测试src的"/"区别
ansible yuhui -m copy -a "src=/etc/ansible dest=/home/operation/temp directory_mode=0744"   # 不加 "/" 是源目录一块儿复制
ansible yuhui -m file -a "dest=/home/operation/temp/ansible state=absent"   # 删除远程目录 ansible
ansible yuhui -m copy -a "src=/etc/ansible/ dest=/home/operation/temp directory_mode=0744"  # 加 "/" 是复制源目录的文件和文件夹
ansible yuhui -m file -a "dest=/home/operation/temp/ state=absent"  # 删除远程目录 temp

copy模块

3.五、template模块

用法和copy基本一致,也是复制本地文件到远程,主要用于复制配置文件,须要注意配置版本差别大的状况,经常使用参数以下:centos

backup: 拷贝的同时建立一个包含时间戳的备份文件,默认为 no
dest: 目标路径
force: 值(yes|no),是否覆盖远程文件,默认 yes
grup: 设置远程文件的所属组
owner: 设置文件的全部者
mode: 设置文件的权限。使用数值时不能省略打印位0,即四位数表示
src: ansible控制器上Jinja2格式的模板所在位置,能够是相对或绝对路径
validate: 在复制以前执行检测,若是要引用目标文件名,则使用 %s数组

# 安装nginx
ansible lzcx -m yum -a "name=http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm state=present" -b
# 使用 validate 验证,将安装后的配置上传到控制端作验证
ansible lzcx -m template -a "src=/tmp/nginx.conf dest=/home/operation/nginx.conf mode=0770 backup=yes validate='nginx -t -c %s'"
# 删除复制的文件
ansible lzcx -m file -a "path=/home/operation/nginx.conf state=absent" -b

3.六、fetch拉取⽂件模块

和copy工做方式相似,fetch是从远程拉取配置文件到本机,只能拉取文件不能拉取目录。经常使用参数以下:网络

dest: 在本地存放拉取文件的目录。例如dest=/data,src=/etc/fstab,远程主机名host.exp.com,则保存的路径为/data/host.exp.com/etc/fstab。
fail_on_missing: 值(yes|no),默认no,当设置为yes时,若是拉取的文件不存在,则任务失败
flat: 改变拉取后的路径存放格式。若是设置为yes,且当dest以"/"结尾时,将直接把源文件的basename存储在dest下。
src: 拉取远程主机上的源文件。目前不支持拉取目录
validate_checksum: fetch到文件后,检查MD5是否和源文件相同app

# 拉取lzcx主机上的nginx配置文件
ansible lzcx -m shell -a "ls /etc/nginx/nginx.conf"
ansible lzcx -m fetch -a "src=/etc/nginx/nginx.conf dest=/home/operation"   # 没有flat选项
ansible lzcx -m fetch -a "src=/etc/nginx/nginx.conf dest=/home/operation flat=yes"  # 有flat选项,注意有flat选项时,dest选项必须以"/"结尾,不然报错
ansible lzcx -m fetch -a "src=/etc/nginx/nginx.conf dest=/home/operation/ flat=yes" # 有flat选项

fetch的flat选项

# 当须要从多个远程主机拉取文件时,须要考虑存放路径,最好有各自的主机名做为目录,便于区分
rm nginx.conf   # 删除上一个步骤的文件
rm -rf 192.168.1.214/   # 删除上一个步骤的文件
# 使用 inventory_hostname 变量获取主机信息,显然生产使用时应该使用该格式合适
ansible lzcx -m fetch -a "src=/etc/nginx/nginx.conf dest=/home/operation/{{inventory_hostname}} flat=yes"

11.fetch的inventory_hostname变量使用

3.七、rsync模块synchronize

synchronize模块用于实现简单的rsync功能,没法实现完整的rsync功能。在ansible中,能够经过command或者shell模块调用rsync命令,如下是经常使用参数:

src: 指定待传输的源⽂件能够是相对路径,也能够是绝对路径
dest: ⽬标路径能够是绝对路径,也能够是相对路径
mode: 指定推(push)仍是拉(pull)的传输模式;push时,本地为sender端,pull时,远程为sender端默认为push
archive: 等价于rsync的"-a"选项,即便⽤归档模式它等价于rsync的"-rtopgDl"选项值为yes/no
times: 保留mtime属性
group: 保留所属组属性
owner: 保留全部者属性
links: 拷贝连接⽂件⾃⾝
perms: 保留权限属性
recursive: 递归到⽬录中的⽂件
compress: 传输过程当中压缩传输应该老是开启,除⾮遇到问题即rsync的"-z"选项
copy_links: 拷贝软连接的⽂件名和其指向的⽂件的内容即a指向b⽂件时,将在⽬标端⽣成a普通⽂件,但此⽂件中的内容是b中的内容,默认为 no
dirs: ⾮递归⽅式传输⽬录
delete: ⽬标端若是⽐源端⽂件多,则删除这些多出来的⽂件,要求recursive=yes,默认为 no
checksum: 等价于"-c"选项,将基于⽂件的checksum来判断是否同步,⽽不是默认的quickcheck算法,该算法基于⽂件⼤⼩和最近的mtime来判断是否要同步该选项会⼤幅下降效率,应谨慎使⽤注意,它⽆法影响archive,即archive仍会启⽤
existing_only: receiver端没有的⽂件不一样步但仍会传输,只是临时⽂件重组后不重命名⽽已
partial: 等价于"--partial"选项默认rsync在传输中断时会删除传输了⼀半的⽂件,指定该选项将保留这部分不完整的⽂件,使得下次传输时能够直接从未完成的数据块开始传输
dest_port: ssh的链接端⼝
rsync_opts: 指定额外的rsync选项使⽤数组的⽅式传递这些选项
rsync_path: 等价于"--rsync-path"选项,⽬的是启动远程rsync;例如能够指定[--rsync-path=rsync],甚⾄[--rsync-path=cd/tmp/c&&rsync]当不指定rsync路径时,默认为/usr/bin/rysnc
rsync_timeout: 指定rsync在多久时间内尚未数据传输就超时退出
verify_host: 对⽬标主机进⾏ssh的hostkey验证

# 从远程拉取文件
ansible lzcx -m synchronize -a "src=/etc/nginx/nginx.conf dest=/home/operation mode=pull"

12.synchronize拉取文件

3.八、command模块

在远程主机上执行命令,默认模块,经常使用参数以下:

chdiiv: 在执行命令以前,经过 cd 命令进入到指定目录
creates: 定义一个文件是否存在,若是存在运行相应命令
removes: 定义一个文件是否存在,若是不存在运行相应命令
executable: 改变shell使用command进行执行,而且执行时要使用绝对路径
free_form: 命令模块采用自由形式命令组合;便可以输入任意linux命令
removes: 定义一个文件是否存在,若是存在运行相应命令;若是不存在跳过此步骤
warn: 若是ansible配置文件中定义了命令警告,若是参数设置了no/false将不会警告此行命令

3.九、shell模块

ansible默认模块command不支持shell变量和管道等,如需使用 -m shell 指定shell模块,普通的命令是经过python的ssh执行

# 查看核心数
ansible my_vm -m shell -a 'cat /proc/cpuinfo | grep "model name" | wc -l'

3.十、raw模块

raw也是命令执行模块,直接使用ssh执行,一般用在客户机尚未python环境

ansible my_vm -m raw -a 'cat /proc/cpuinfo | grep "model name" | wc -l'

3.十一、user模块与group模块

user模块调用的是 useradd,userdel,usermod命令,group模块调用的是 groupadd,groupdel,groupmod命令,user经常使用参数以下:

name: 指定建立、删除、修改的用户名
password: 设置用户密码,只能使用加密密码做为值
system: 设置为yes表示建立一个系统用户,只能用于建立,不能用于修改已有用户为系统用户
state: 用户的建立(present)或者删除(absent),默认present
createhome: 建立家目录,已有用户但家目录不存在也能够建立。值为 yes|no
home: 指定建立的家目录路径
move_home: 若是设置为yes,则"home="表示将家目录移动到此选项指定的路径下
uid: 设置用户uid
group: 设置用户primary group
groups: 将用户加入到指定组中。若是设置为 "groups=",则会将用户的其余(除用户名的)组移除
shell: 设置用户的shell
force: 配合 'state=absent' 时,等价于 'userdel --force',即强制删除用户、家目录和邮件列表
remove: 配合 'state=absent' 时,等价于 'userdel --remove',即删除家目录和邮件列表
update_password: user是幂等模块,"always"老是修改密码,"on_create"只在建立用户时设置密码

ansible lzcx -m group -a "name=t1" -b   # 添加组 t1
ansible lzcx -m user -a "name=t1 group=t1" -b   # 添加用户 t1 并指定组
# 查看建立的用户
ansible lzcx -a "id t1"
# 删除用户和家目录
ansible lzcx -m user -a "name=t1 state=absent force=yes" -b

3.十二、yum模块

在线包管理软件,经常使用参数以下:

download_only: ansible2.7新增选项,只下载rpm包不安装
config_file: yum的配置文件
disable_gpg_check: 安装时禁止gpgcheck,仅在state=present或latest时生效
disablerepo: 禁用指定的repoid,多个repoid使用逗号分隔
enablerepo: 明确使用该repoid
exclude: 排除指定包的安装,仅在state=present或latest时生效
list: 相似yum list
name: 指定安装的包名,可带上版本号(name-1.0),也能够传递一个URL或者一个本地的rpm包的路径
state: 安装状态。(present,installed,latest)用于安装,(absent、remove)用于移除
update_cache: 强制更新yum cache

# 安装nginx源
http://nginx.org/packages/centos/6/x86_64/RPMS/nginx-1.14.2-1.el6.ngx.x86_64.rpm
# 两个组安装 yum-utils 工具,注意安装软件须要切换root
ansible cetntos6:lzcx -m yum -a "name=yum-utils state=present" -b
# 列出dos2unix信息
ansible centos6:lzcx -m yum -a "list=dos2unix"
# 只下载不安装,下载后的路径在 /var/cache/yum/x86_64/7/base/packages/dos2unix-6.0.3-7.el7.x86_64.rpm ,/var/cache/yum/x86_64/6/base/packages/dos2unix-3.1-37.el6.x86_64.rpm
ansible centos6:lzcx -m yum -a "name=dos2unix download_only=true" -b
# 指定安装本地rpm
ansible lzcx -m yum -a "name=/var/cache/yum/x86_64/7/base/packages/dos2unix-6.0.3-7.el7.x86_64.rpm state=present" -b
ansible centos6 -m yum -a "name=/var/cache/yum/x86_64/6/base/packages/dos2unix-3.1-37.el6.x86_64.rpm state=present" -b
# 在线安装nginx,注意在 ansible2.7.4中,能够从指定的在线源中直接安装,而不是下载源到本地,而后再指定源安装了
ansible lzcx -m yum -a "name=http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm state=present" -b
# 查看是否安装
ansible lzcx -m raw -a "rpm -qa | grep nginx"
# 卸载nginx
ansible lzcx -m yum -a "name=nginx state=absent" -b

3.1三、service模块

service 风格服务管理模块,如下是经常使用参数以下:

enabled: 设置是否开机启动,true|false
name: 操做的服务名称,必选
pattern: 定义一个匹配模式,若是经过status指令查看服务的状态没有响应时,就会经过 ps 指令在进程中根据该模式进行查找,若是匹配到,则认为该服务依然在运行
runlevel: 定义运行级别
sleep: 若是执行了 restarted ,在stop和start之间等待设置的时间
state: 对服务执行 启动、中止、重启、从新加载等操做(started、stopped、restarted、reloaded),当服务未启动时,使用reloaded参数会启动服务

# 安装nginx
ansible lzcx -m yum -a "name=http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm state=present" -b
# 启动nginx,并设置开机启动
ansible lzcx -m service -a "name=nginx state=started enabled=true" -b
# 重启
ansible lzcx -m service -a "name=nginx state=restarted sleep=3" -b -o
# 中止nginx
ansible lzcx -m service -a "name=nginx state=stopped" -b
# 取消开机启动
ansible lzcx -m service -a "name=nginx enabled=false" -b
# 卸载nginx
ansible lzcx -m yum -a "name=nginx state=absent" -b

3.1四、systemd模块

systemd 风格服务管理模块,使用方法和service大同小异,如下是经常使用参数以下:

daemon_reload: 是否在执行以前从新加载配置,yes|no,默认是 no
enabled: 是否设置开机启动
masked: 是否将此unit作mask(隐藏、掩盖)处理。mask后的unit将没法启动
name: 操做服务的名称
state: 对服务执行 启动、中止、重启、从新加载等操做(started、stopped、restarted、reloaded),当服务未启动时,使用reloaded参数会启动服务

3.1五、cron模块

定时任务设置和管理模块,经常使用参数以下:

backup: (yes|no),设置是否在修改以前备份文件
cron_file: 自定义cron_file的文件名,使用相对路径则表示在/etc/cron.d中。必须同时指定user选项
user: 指定修改crontab的用户,默认为root
disabled: 禁用crontab中的某个job,要求state=present
env: (yes|no)设置一个环境变量,将添加到crontab的顶端。使用name和value定义变量名和值
job: 须要执行的命令。若是设置了env,则表示环境变量的值,此时job='xxx'等价于value='xxx',要求state=present
minute: 分(0-59, , /N),不写时,默认为
hour: 时(0-23,
, /N),不写时,默认为
day: ⽇(1-31, , /N),不写时,默认为
month: ⽉(1-12,
, /N),不写时,默认为
weekday: 周(0-6 for Sunday-Saturday, ),不写时,默认为
name: 描述crontab任务的字符串。但若是设置的是env,则name为环境变量的名称。要求state=absent,注意,若未设置name,且state=present,则总会建立⼀个新job条⽬,即便cron_file中已经存在一样的条⽬
special_time: 定时任务的别称,⽤于定义什么时候运⾏job条⽬,有效值有reboot/hourly/daily/weekly/monthly/yearly/annually
state: job或者env的状态是present(默认)仍是absent。present⽤于建立,absent⽤于移除

# 安装ntp客户端
ansible lzcx -m yum -a "name=ntpdate state=latest" -b
# 添加一个定时任务,每30分钟执行同步时间一次,注意是添加对控制端执行用户对应的crontab下
ansible lzcx -m cron -a 'name="custom job" minute=*/30 hour=* day=* month=* weekday=* job="/user/sbin/ntpdate pool.ntp.org"'
# 查看添加的定时任务,添加后的centos路径为 /var/spool/cron/ 下的用户名文件
ansible lzcx -m shell -a "crontab -l | grep -A 1 job"
# 删除定时任务,注意指定任务描述
ansible lzcx -m cron -a 'name="custom job" state=absent'
# 设置一个环境变量,并定于任务
ansible lzcx -m cron -a 'env=yes name=app_home value=/tmp' -o
# 设置一个时间同步任务
ansible lzcx -m cron -a 'name="time sync" job="/usr/bin/ntpdate ntp1.aliyun.com day=*/1"' -o
# 查看任务,并打印出环境变量
ansible lzcx -m shell -a "crontab -l | grep -C 1 'time sync'"
# 删除任务
ansible lzcx -m cron -a 'name="time sync" state=absent'

3.1六、cronvar模块

除cron模块能够管理cron运行环境变量以外,cronvar

backup: 值(yes|no),若是设置yes则会在远程cron_file前备份这些文件
cron_file: 自定义cron_file的文件名,使用相对路径则表示在/etc/cron.d中
state: present表示建立变量,absent表示移除变量
user: 指定用户的crontab将被修改,默认为root
value: 环境变量的值,要求state=present

3.1七、mount模块

文件系统的挂载、卸载,如下是经常使用参数:

fstype: 必选项,挂载文件的类型,能够是iso9660、ext四、xfs等等
name: 必选项,挂载点
opts: 传递给mount命令的参数
src: 必选项,要挂载的文件
state: 必选项,值为(mounted|unmounted|present|absent),如下为参数用法:
present: 只处理fstab中的配置
absent: 删除挂载点
mounted: 自动建立挂载点并挂载
umounted: 卸载

3.1八、debug模块

自定义输出格式信息,相似echo、print语句。ansible中的debug主要用于输出变量值、表达式值以及用when语句条件判断。如下是经常使用参数:

msg: 输出自定义信息。若是省略,则输出普通字符串
var: 指定待调试的变量。只能指定变量,不能指定自定义信息,且变量不能加 {{}} 包围,而是直接的变量名
verbosity: 控制debug运行的调试级别,有效值为一个数值N

ansible lzcx -m debug -a 'msg="Hello world!"'
ansible lzcx -m debug -a 'var=ansible_eth0.ipv4.address'

3.1九、归档模块archive

⽤于在远端压缩⽂件。固然,前提是在远端主机上要有对应的压缩⼯具。⽀持zip/gz/tar/bz2。如下是经常使用参数:

dest: 目标归档文件名。除非path指定要压缩的是单文件,不然须要dest选项
fromat: 指定压缩格式,默认为gz格式
group: 文件/目录所属的组
owner: 文件/目录全部者
mode: 设置文件/目录的权限,支持'0644或'u+rwx或'u=rw,g=r,o=r'等格式
path: 要压缩的文件,能够是绝对路径,也能够是glob统配的路径,还能够是文件列表
remove: 压缩后删除源文件

# 压缩单个文件并删除源文件
ansible lzcx -m archive -a "path=/home/operation/test.sh remove=true"
# 压缩一个目录并指定格式为字zip
ansible lzcx -m archive -a "path=/home/operation/lzcx dest=/home/operation/lzcx.zip format=zip"

3.20、解包模块unarchive

默认复制ansible端的归档⽂件到被控主机,而后在被控主机上进⾏解包。若是设置选项remote_src=yes,则表⽰解包被控主机上的归档⽂件,要求在被控主机上有对应的解包命令。unzip命令⽤于解压".zip"⽂件,gtar(tar包提供)命令⽤于解压".tar"、".tar.gz"、".tar.bz2"和".tar.xz"。用参数以下:

creates: 若是指定的⽂件存在则不执⾏该任务。可⽤于实现幂等性
dest: 远程机器上须要被解包的归档⽂件,要求是绝对路径
exclude: 列出解包过程当中想要忽略的⽬录和⽂件
group: ⽂件/⽬录的所属组
owner: ⽂件/⽬录的全部者
mode: 设置⽂件/⽬录的的权限,⽀持'0644'或'u+rwx'或'u=rw,g=r,o=r'等格式
keep_newer: 在解包过程当中,若是⽬标路径中和包中有同名⽂件,且⽐包中的⽂件更新,则保留新的⽂件
list_files: 设置为true时,将返回归档⽂件中的⽂件列表,默认 no
remote_src: 设置为yes表⽰远程主机上已有⽬标归档⽂件,即再也不从本地复制归档⽂件到远端,直接在远端解包。默认为no
src: 若是remote_src=no,将复制本地归档⽂件到远端,可相对路径也可绝对路径. 若是remote_src=yes, 将解包远程已存在的归档⽂件,果remote_src=yes且src中包含了"://",将指挥远程主机从url中下载⽂件并解包

# 解压本地文件到远程
ansible lzcx -m unarchive -a "src=/home/operation/python_script.tar.gz dest=/home/operation"
# 加creates选项
ansible lzcx -m unarchive -a "src=/home/operation/python_script.tar.gz dest=/home/operation creates=yes"
# 打印解压缩文件,注意删除远程文件
ansible lzcx -m file -a "path=/home/operation/python_script state=absent"
ansible lzcx -m unarchive -a "src=/home/operation/python_script.tar.gz dest=/home/operation list_files=true"
# 解压远程压缩包,注意解压的文件必须在本地有同名文件,经试验,若是本地没有同名文件,将报错
ansible lzcx -m unarchive -a "src=/home/operation/python_script.tar.gz dest=/home/operation remote_src=yes list_files=true"
# 从URL上下载并解压,注意解压以后,下载的压缩包源文件会被删除,该选项不要求本地有相应的文件,但本地控制端须要有wget命令
ansible lzcx -m unarchive -a "src=http://nginx.org/download/nginx-1.14.0.tar.gz dest=/home/operation remote_src=yes"

13.unarchive

3.2一、下载模块get_url

当下载HTTP和HTTPS连接时,客户端要求有get命令,不然报错;下载ftp文件时,客户端要求有ftp命令
注意,dest为⽬录或者force=yes时,老是会下载⽂件到临时存放⽬录中,只不过不⼀定会替换旧⽂件。只有
force=no(默认)且dest是⼀个⽂件时,在⽂件已存在时才不会下载⽂件。如下是经常使用参数:

backup: 下载⽂件时同时建立⼀个名称中包含时间戳的备份⽂件
dest: ⽂件保存路径,必须为绝对路径。若是dest是⼀个⽬录,则使⽤url的base name做为⽂件名。# 若是dest是⼀个⽬录,则'force'选项不⽣效。# 若是dest是⼀个⽬录,则老是会下载⽬标⽂件,但只在已存在的⽂件变化了才会替换旧⽂件
force: 若是设置为yes,且dest不是⼀个⽬录时,则老是会下载⽂件,但只在已存在的⽂件变化了才会替换旧⽂件。若是设置为no(默认),则只会在⽬录路径下不存在该⽂件时才会进⾏下载。
tmp_dest: 下载时临时存放⽬录,在任务执⾏完成前会删除下载的临时⽂件
group: ⽂件/⽬录的所属组
owner: ⽂件/⽬录的全部者
mode: 设置⽂件/⽬录的的权限,⽀持'0644'或'u+rwx'或'u=rw,g=r,o=r'等格式
timeout: 请求url时的超时时间,默认10秒钟
url: 要下载的url路径,(http|https|ftp)://[user[:pass]]@host.domain[:port]/path。还⽀持file格式的路径,实现复制功能。file:///path/to/file

# 下载nginx文件并设置权限
ansible lzcx -m get_url -a "url=http://nginx.org/download/nginx-1.14.2.tar.gz dest=/home/operation mode=0744"
# 远程复制文件,至关于远程主机拷贝文件到指定目录
ansible lzcx -m get_url -a "url=file:///home/operation/lzcx.zip dest=/tmp/lzcx.zip"

3.2二、wait_for模块

有些时候任务之间对状态、⽂件、端⼝等资源是有依赖关系的,只有满⾜了前提,任务才会继续。wait_f or模块就是⽤于判断任务在满⾜什么条件的状况下会继续。主要⽤来判断端⼝是否开启、⽂件是否存在、⽂件中是否存在某些字符串。如下是经常使用参数:

delay: 在检查操做进⾏以前等待的秒数
host: 等待这个主机处于启动状态,默认为127.0.0.1
port: 等待这个端⼝已经开放
path: 这个⽂件是否已经存在
search_regex: 在⽂件中进⾏正则匹配
state: present/started/stopped/absent/drained。默认started
当检查的是⼀个端⼝时:
started:保证端⼝是开放的
stopped:保证端⼝是关闭的
当检查的是⼀个⽂件时:
present/started:在检查到⽂件存在才会继续
absent:检查到⽂件被移除后才会继续
sleep: 两次检查之间sleep的秒数,默认1秒
timeout: 检查的等待超时时间(秒数,默认300)

# 链接上主机后10秒后才检查8000端⼝是否处于开放状态,300秒(默认值)内未开放则超时
ansible lzcx -m wait_for -a "port=8000 delay=10 timeout=10"

3.2三、script模块

script模块⽤于控制远程主机执⾏脚本。在执⾏脚本前,ansible会将本地脚本传输到远程主机,而后再执⾏。在执⾏脚本的时候,其采⽤的是远程主机上的shell环境。 如下是经常使用参数:

chdir: 在远程执⾏脚本前先切换到此⽬录下
creates: 当此⽂件存在时,不执⾏脚本。可⽤于实现幂等性
removes: 当此⽂件不存在时,不执⾏脚本。可⽤于实现幂等性
free_form: 本地待执⾏的脚本路径、选项、参数。之因此称为free_form,是由于它是脚本名+选项+参数

3.2四、parted模块--待完成

3.2五、except模块--待完成

3.2六、docker相关--待完成

3.2七、kubernetes模块--待完成

相关文章
相关标签/搜索