Ansible系列-基础篇-Ansible 常见模块的使用
原文地址: Ansible系列-基础篇-Ansible 常见模块的使用
→ 上一篇中简单尝鲜了几个模块,本篇整理下实际中用到的模块及其用法Demo,总计有19个模块,分别为
ping、setup、debug、user、group、authorized_key、shell、script、command、service、systemd、copy、template、synchronize、file、lineinfile、yum、cron
ping 模块主要是验证 管理节点 和 目标节点 之间的连通性,是否正常配置好了对应账号的ssh免密登录
上一篇中配置的时候提到ansible facts 收集目标主机信息,也可以使用 setup 模块。
这个模块的好处就是让了解到 Ansible 都有哪些内置的变量,这些变量在我们后续写playbook的时候,在role templates 中配置很有帮助,
举个列子,Ansible 批量部署 zabbix agent,每个agent的配置文件中的 ListenIP 和 Hostname 我们就可以使用facts中的变量 ansible_default_ipv4.address 和 ansible_hostname
另外一旦知道知道都有哪些变量的时候,下次我们就可以再收集信息展示的时候,加参数通过filter来过滤我们想看的变量就可。比如
顾名思义,就是我们想调试输出一些结果的时候,比如上面提到的我想知道目标主机的IP地址
这里有两种用法,一种是 msg 输出,需要带 {{ variable-name }} , 另外一种是 var 用法,直接写变量名即可,不用添加 {{ }}
远程管理用户/用户组
主要用来给目标主机用户配置公钥,默认到目标用户家目录的.ssh目录的authorized_keys文件 没有则创建authorized_keys文件
这里是把 shell 和 script、command放到一起做对比,其实还有个 raw
其中 command 执行单一命令不能使用管道符、重定向符等,raw 类型command,可以使用管道符等;
shell 和 script 类似,都可以执行脚本,却别在于script执行的脚本在ansible管理机上,而shell执行的脚本必须先放到目标节点上去,才能执行;
另外shell执行可以使用环境变量,bash等,但是script只是执行脚本,不能带 bash
都是用来管理服务器上的服务,区别在于Service服务管理用于centos6及以前的系统,而systemd命令应用于centos7系统
核心参数 name\state\enabled
把管理节点的文件copy到目标节点,并配置相关属性
template 的作用和copy一样,区别在于源文件是jinja2格式,文件中可以配置 Ansible变量,然后在目标节点上替换成对应的目标值
另外一个需要住的就是在roles中,copy默认是从files目录获取文件,template默认是 templates 文件夹获取模板文件
主要用于目录、文件的同步,基于 rsync实现,主要是有 push 和 pull 两种方式, 如果是push 推送,则src是管理节点,dest是目标节点;如果是pull拉取,则src是目标节点,dest是管理节点
在目标节点创建文件或目录,删除文件或目录,修改文件或目录的权限等;核心参数有:path、state、owner、group、mode、recurse
在文件中添加、修改、删除一行记录,在实践中用的很多,这里做简单介绍,后续有单独文章详细介绍
顾名思义,就是我们在Centos下进行yum安装,核心参数主要关注: name 需要安装的软件名、state 软件的状态(present、absent、removed、latest)和 enablerepo 特殊情况指定yum源
管理Linux定时任务,核心参数说明
name 定时任务的名称、 state 任务的状态、minute/hour/day/month/weekday 分别设定任务执行的时间配置、user指定是哪个用户配置任务,默认是管理员