系统操作和维护
可变公共模块
本节包括的模块有:
(1)定时任务模块cronvar
(2)存档模块
(3)解包模块解归档
(4)下载模块get_url。
(5)等待模块
(6)脚本模块
计时任务模块cronvar
除了cron模块本身可以管理cron的环境变量,另外一个模块cronvar也可以定义定时任务的环境变量。
Cronvar-Ansible官方指令文件
ansible-doc -s cronvar
- name:管理crontabs中的变量
cronvar:
Backup: #(是/否)如果设置,将在修改远程cron_file之前备份这些文件。
Cron_file: #自定义Cron_file的文件名,在/etc/cron.d中用相对路径表示。
State: # present用来创建变量,absent用来删除变量。
User: #指定将修改哪个用户的crontab。默认值为root。
Value: #环境变量的值,要求state=present。
(1)比如创建一个作业,每2分钟同步一次时间,自定义cron_file。
ansi ble test-m cron-a \ \ \ ' name=ntpdate job=/usr/sbin/ntpdate ntp1.aliyun.com cron _ file=ntpdate _ cron user=root minute=*/2 \ \ \ '-o-f 8
请验证它是否已正确添加。
ansi ble test-m shell-a \ \ \ ' cat/etc/cron . d/ntpdate _ cron \ \ \ '
192.168.246.187 |已更改| rc=0
#Ansible: ntpdate
*/2 * * * * root/usr/sbin/NTP date ntp1.aliyun.com
(2)要删除作业,名称必须匹配。如有必要,需要指定cron_file和user。
ansi ble test-m cron-a \ \ ' name=ntpdate state=absolute cron _ file=ntpdate _ cronuser=root \ \ '-o #/etc/cron . d/ntpdate _ cron这个文件仍然存在(内容为空)。
存档模块存档
用于远程压缩文件。当然前提是远程主机上要有相应的压缩工具。支持zip/gz/tar/bz2。
可存档的官方指令文件
ansible-doc -s档案
- name:创建一个或多个文件或树的压缩档案
存档:
目标:#目标存档文件名。除非path指定压缩单个文件,否则dest选项是必需的。
格式:#指定压缩格式,默认为gz格式。
Group: #文件/目录所属的组。
所有者:#文件/目录的所有者
Mode: #设置文件/目录的权限,支持\ \' 0644 \ \ '或\ \' URWX \ \ '或\ \ \' U=RW,G=R,O=R \ \ '等格式。
Path: #要压缩的文件可以是绝对路径、全局统一路径或文件列表。
Remove: #压缩后删除源文件。
例子如下:
(1)将文件压缩成默认的gz格式,因为path指定了要压缩的单个文件,所以dest:
ansi ble test-m archive-a \ \ \ ' path=/tmp/mu . txt \ \ \ '
描述:gzip-d mu.txt.gz,gz后缀压缩包的解压命令。
(2)将目录/path/to/foo/压缩成/path/to/foo.tgz:
ansi ble test-m archive-a \ \ \ ' path=/tmp/XYZ dest=/tmp/XYZ . tgz \ \ \ '
(3)将单个文件/path/to/foo压缩成zip格式:
ansi ble test-m archive-a \ \ \ ' path=/tmp/mu . txt format=zip \ \ \ '
描述:unzip mu.txt.zip是解压zip后缀压缩包的命令。
(4)将给定的文件列表压缩成bz2格式,压缩包路径为/path/file.tar.bz2:
- name:在/path下创建一个包含多个文件的bz2归档文件
存档:
路径:
- /path/to/foo
- /path/wong/foo
dest: /path/file.tar.bz2
格式:bz2
解包模块解归档
默认情况下,ansible端的归档文件被复制到受控主机,然后在受控主机上解包。如果设置了remote_src=yes选项,则表示控制主机上的归档文件已解包。
受控主机需要相应的解包命令。unzip命令用于提取。zip '文件,gtar(由tar包提供)命令用于提取'焦油''tar.gz ''tar.bz 2 '和'tar.xz '
不可归档的官方指令文件
ansible-doc -s取消归档
- name:从本地计算机复制归档文件后(可选)将其解包。
取消归档:
创建:#如果指定的文件存在,将不会执行该任务。可用于实现等幂。
Dest: #需要在远程机器上解包的归档文件需要一个绝对路径。
Exclude: #列出在解包过程中要忽略的目录和文件。
Group: #文件/目录所属的组。
所有者:#文件/目录的所有者
Mode: #设置文件/目录的权限,支持\ \' 0644 \ \ '或\ \' URWX \ \ '或\ \ \' U=RW,G=R,O=R \ \ '等格式。
Keep_newer: #在解包过程中,如果目标路径和包中有同名文件,并且比包中的文件新,那么新的文件会被保留。
当list_files: #设置为true时,将返回归档文件中的文件列表。
Remote_src: #如果设置为yes,则远程主机上已经存在目标归档文件,即归档文件不会在本地复制到远程端,直接在远程端解包。
#默认为否
Src: #如果remote_src=no,本地存档文件将被复制到远端,可以是相对路径,也可以是绝对路径。
#如果remote_src=yes,远程中的现有归档文件将被解压缩。
#如果remote_src=yes并且src包含://,将指示远程主机从url下载文件并将其解压缩。
下载模块get_url
get _ URLansi ble官方用户文档。
ansible-doc -s get_url
- name:将文件从HTTP、HTTPS或FTP下载到节点
获取网址:
备份:#下载文件时,创建一个名称中带有时间戳的备份文件。
Dest: #文件保存路径,必须是绝对路径。
#如果dest是一个目录,使用url的基本名称作为文件名。
#如果dest是一个目录,则\ \' force \ \ \ '选项不会生效。
#如果dest是一个目录,目标文件将总是被下载,但是只有当现有文件改变时,旧文件才会被替换。
Force: #如果设置为yes且dest不是目录,则总是下载文件,但只有在现有文件发生变化时,旧文件才会被替换。
#如果设置为no(默认值),则仅当目录路径中不存在该文件时才会下载。
Tmp_dest: #下载时暂存目录,任务完成前删除下载的临时文件。
Group: #文件/目录所属的组。
所有者:#文件/目录的所有者
Mode: #设置文件/目录的权限,支持\ \' 0644 \ \ '或\ \' URWX \ \ '或\ \ \' U=RW,G=R,O=R \ \ '等格式。
超时:#请求url时超时,默认为10秒。
Url: #要下载的Url路径,(http | https | FTP)://[user[:pass]]@ host . domain[:port]/path。
#还支持文件格式的路径实现复制功能。file:///path/to/file
请注意,当dest是一个目录或force=yes时,文件将总是下载到临时存储目录,但旧文件不一定会被替换。仅当force=no(默认)且dest是文件时,如果文件已经存在,则不会下载该文件。
例子如下:
(1)下载foo.conf,如果/etc/foo.conf已经存在,则不要下载该文件:
-名称:下载foo.conf
获取网址:
网址:http://example.com/path/file.conf
dest: /etc/foo.conf
模式:\\\'0440\\\ '
等待模块
有时任务依赖于资源,如状态、文件、端口等。只有满足前提条件,任务才会继续。wait_for模块用于判断任务在什么条件下是否继续。主要用于判断端口是否打开,文件是否存在,文件中是否存在某些字符串。
wait _ for-ansi ble官方说明文件。
ansible-doc -s wait_for
- name:在继续之前等待条件
等待时间:
Delay: #检查操作之前等待的秒数。
主机:#等待该主机启动,默认为127.0.0.1。
端口:#等待此端口打开。
路径:#该文件是否已经存在?
Search_regex: #文件中的常规匹配
状态:#存在/开始/停止/不存在/耗尽。默认启动。
#检查端口时:
# started:确保端口是打开的。
# stopped:确保端口关闭。
#检查文件时:
# present/started:文件在存在之前不会继续。
# absent:继续之前,请检查文件是否已被删除。
睡眠:#两次检查之间睡眠的秒数,默认为1秒。
超时:#检查等待超时(秒,默认为300)。
例子如下:
(1)连接主机10秒后检查8000端口是否打开,300秒内不打开(默认值)超时。
- name:等待主机上的端口8000打开,不要在10秒内开始检查
等待时间:
端口:8000
延迟:10
(2)在/tmp/foo文件存在之前,它不会继续。
- name:在继续之前,请等待文件/tmp/foo出现
等待时间:
路径:/tmp/foo
(3)在/tmp/foo文件中可以匹配“completed”字符串之前,不要继续。
- name:在继续之前,请等到文件/tmp/foo中包含完整的字符串
等待时间:
路径:/tmp/foo
search_regex:完成
(4)不要继续,直到锁file /var/lock/file.lock被移除。
- name:等到锁定文件被删除
等待时间:
路径:/var/lock/file.lock
状态:缺席
(5)不要继续,直到/proc/3466/status文件被删除,可以用来判断进程是启动还是停止,pid文件是存在还是被删除等。
- name:等到进程完成并且pid被销毁
等待时间:
路径:/proc/3466/status
状态:缺席
脚本模块
脚本模块用于控制远程主机执行脚本。Ansible会在执行本地脚本之前将其传输到远程主机。当执行脚本时,它使用远程主机上的shell环境。
可翻译的官方指令文件
ansible-doc -s脚本
- name:传输后在远程节点上运行本地脚本
脚本:
Chdir: #在远程执行脚本之前切换到这个目录。
创建:#当该文件存在时,不执行脚本。可用于实现等幂。
删除:#如果该文件不存在,则不执行脚本。可用于实现等幂。
Free_form: #要执行的本地脚本的路径、选项和参数。它被称为free_form,因为它是一个脚本名称选项参数。
解释
本帖参考马的文章整理生成。属于博主的读书笔记。如有侵权,请联系我,立即删除!
最后,感谢开源,拥抱开源~
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。