青蛙学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

命令运行后返回结果:

5

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

返回结果:

6

原文地址:https://www.cnblogs.com/yu2006070-01/p/10168800.html