青蛙学Linux—Ansible的ad-hoc模式和常用模块(二)
9、copy模块
copy模块用于将指定文件复制到被管理主机。
模块常用选项(其他选项同file模块):
- src:定义复制到被管理主机的本地文件的路径,可以使用绝对路径或相对路径。注意,当路径为一个目录时,结尾加/则只复制目录下的文件及子目录;结尾不加/时,连同该目录一同复制
- dest:定义文件在被管理主机上的路径,如果源文件为目录,则该路径也必须为目录
- backup:在覆盖之前将文件进行备份,备份文件包含时间信息。值为yes|no
- content:当使用该选项代替src时,可直接将文件的内容设置为指定的值
- checksum:对文件进行SHA1校验
- directory_mode:递归设定目录的权限
- force:值为yes时,当被管理主机存在复制的文件时且文件内容不同时强制覆盖;值为no时,只有当被管理主机的目标位置不存在复制的文件时才执行复制
- validate:在复制之前运行一个命令对文件进行校验,要验证的文件通过%s传递。在这里无法使用管道符。比如,复制一个sudoers文件前对其进行校验可以使用validate=‘visudo –cf %s’
一个例子:将主控端当前目录下的Python-3.7.1.tgz复制到centos7组的主机/root目录下,属主和属组设置为nobody,权限为666
在主控端输入以下命令:
[root@localhost ~]# ansible centos7 -m copy -a 'src=Python-3.7.1.tgz dest=/root owner=nobody group=nobody mode=666' -k
命令运行后返回结果:
10、service模块
service模块用于管理被管理主机上的服务。
模块常用选项:
- enabled:是否开机启动,值为yes|no
- name:服务的名称
- pattern:定义一个模式,如果通过status指令查看服务的状态没有响应时,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行
- sleep:如果执行了restarted,则在stop和start之间沉睡设置的时间
- state:对当前服务执行的动作,可能的值有,started - 启动;stopped - 停止;restarted - 重启动;reloaded – 重新加载
11、cron模块
cron模块用于管理被管理主机上的任务计划。
模块常用选项:
- backup:在修改被管理主机上的任务计划前先做备份,值为yes|no
- cron_file:为设定的任务计划指定一个文件名而不是使用以用户名命名的cron文件。文件保存在/etc/cron.d目录下,使用该选项必须指定user
- day:设定任务执行的日期(1-31,*,*/2,…)
- hour:设定任务执行的小时(0-23,…)
- minute:设定任务执行的分钟(0-59,…)
- weekday:设定任务执行的周(0-7,…)
- job:要执行的任务
- name:任务的描述信息
- special_time:特殊的时间范围,可能的值有,reboot - 重启时;annually - 每年;monthly - 每月;weekly - 每周;daily - 每天;hourly - 每小时
- state:创建或者删除任务计划,可能的值有,present - 创建任务;absent - 删除任务。默认值为present
- user:指定任务计划的用户
12、yum模块
yum模块用于使用YUM管理被管理主机上的软件包。
模块常用选项:
- allow_downgrade:如果指定的软件包已经安装,是否允许对该软件包进行降级,值为yes|no
- autoremove:在删除软件包时连同软件包的依赖包一起删除。该选项仅支持在yum>=3.4.3(RHEL/CentOS 7.x+版本)环境下执行
- bugfix:当state=latest时,仅安装标记为bug修复的相关更新
- config_file:指定YUM的配置文件
- disable_gpg_check:关闭gpg检查
- disablerepo:不启用指定的源
- enablerepo:启动指定的源
- download_only:仅下载指定软件包而不安装
- name:软件包名,也可以传递一个url或者一个本地的rpm包路径
- state:对软件包进行的动作,可能的值为,安装 – present|installed;升级 – latest;卸载 – absent|removed
- update_cache:强制检查yum缓存是否过期,只有当state=present|latest时有效
13、user模块
user模块用于对被管理主机上的用户进行操作。
模块常用选项:
- append:设置为yes时,用户加入到指定的组;设置为no时,将用户加入到指定的组并从其他组中删除。默认为no
- group:指定用户的主组
- groups:指定用户的附加组,如果设置为空字符串、null或~则表示将用户从所有附加组中删除
- name:指定用户名
- remove:当state=absent时使用,在删除用户的同时删除用户的主目录。值为yes|no
- shell:指定用户的shell
- state:设置用户的状态,present表示创建,absent表示删除。默认为present
- passwd:设置用户的密码,值不能为明文
- system:在state=present时使用,值为yes时将用户设置为系统用户,不能用于修改现有用户。默认值为no
- uid:设置用户的UID
14、group模块
group模块用于对被管理主机上的用户组进行操作。
模块常用选项为:
- gid:设置组的GID
- name:设置组名
- state:设置组的状态,present表示创建组,absent表示删除组。默认值为present
- system:如果设置为yes,表示将组设置为系统组。默认值为no
15、synchronize模块
synchronize模块用于调用rsync进行文件备份。
模块常用选项:
- archive:归档,相当于同时开启recursive(递归)、links、perms、times、owner、group和-D。值为yes|no,默认值为yes
- checksum:跳过检测sum值。值为yes|no,默认值为no
- compress:开启压缩。值为yes|no,默认值为yes
- copy_link:复制符号链接文件。值为yes|no,默认值为no
- delete:在recursive=yes时使用,删除目标路径中不存在于源路径的文件
- dest:目标路径
- src:源路径
- dest_port:指定rsync使用的端口
- mode:指定rsync使用的是push模式还是pull模式。默认为push模式
- private_key:指定rsync连接时的SSH私钥
16、setup模块
setup模块用于获取主机的信息。常用选项为filter,用于从返回的结果中过滤出我们需要的信息。
17、get_url模块
get_url模块用于从服务器上下载文件(类似wget)。
模块常用选项:
- sha256sum:下载完成后进行SHA256校验
- timeout:下载超时时间,默认为10秒
- url:下载的url
- url_password:设置登录下载服务器的密码
- url_username:设置登录下载服务器的用户名
- use_proxy:使用代理,代理需要事先在环境变量中定义
18、ad-hoc使用主机清单中的自定义主机变量
主机清单中可以使用Ansible定义的变量,也可以自定义变量。在主机清单中设置了自定义变量后,就可以在ad-hoc中进行引用,引用的方法为在命令中使用{{自定义变量}}。
我们在实验环境的主机清单中的centos7组下的主机添加自定义变量http_port,如下:
[centos7] 192.168.0.88 ssh_port=80
然后输入如下命令:
[root@localhost ~]# ansible centos7 -m command -a 'lsof -i tcp:{{ssh_port}}' -k
返回结果: