playbook中常用模块
playbook中的模块很多,可以直接在官网上查询,也可以使用ansible doc
命令查询
例如:查询copy模块
ansible doc -s copy
会返回copy的模块的参数写法和功能。
下面以示例的方式介绍下几个常用的模块
1. copy模块
- name: Copy the keyfile for authentication
copy: src=roles/mongod/files/secret dest={{ mongodb_datadir_prefix }}/secret owner=mongod group=mongod mode=0400
参数解析
- src: 源路径
- dest: 目标地址
- owner:属于哪个用户
- group:属于哪个组
- mode: 拥有哪些权限
copy模块还有其他功能,例如是否备份,具体查看官网。
2. 创建文件或目录命令
- name: Create data directory for mongoc configuration server
file: path={{ mongodb_datadir_prefix }}/configdb state=directory owner=mongod group=mongod
参数解析
- path: 路径,一般用于创建删除文件或目录
- state: file的相关操作,
directory
表示创建目录,
link
表示创建软连接,link还需要源路径和目标路径配合使用
touch
表示创建文件,
absent
表示删除文件
3. 执行command命令
- name: Start the mongo configuration server service
command: creates=/var/lock/subsys/mongoc /etc/init.d/mongoc start
command命令和shell命令类似,如果你使用shell命令,变量如下$HOME以及像这样的行动"<", ">", "|", ";"和"&"将无法使用
4. 执行shell命令
- name: Initialize the replication set
shell: /usr/bin/mongo --port "{{ mongod_port }}" /tmp/repset_init.js
使用shell命令去处理
5. 暂停
- name: pause
pause: seconds=20
可以在某一个步骤中暂停,等待一段时间。
6. 服务模块
- name: Make sure nginx start with boot
service: name=nginx state=started enabled=yes
可以使用service命令去管理linux系统中的服务。
参数解析
- name:系统的服务名称
- state: 对服务执行的操作,可以启动,停止,查看状态等
7. tag命令
tags: conf \\给此任务打标记,可单独执行标记的任务,使用 ansible-playbook -C 命令执行
8. 解压命令
unarchive模块
用于解压文件,模块包含如下选项:
copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,则要求目标主机上压缩包必须存在。
creates:指定一个文件名,当该文件存在时,则解压指令不执行
dest:远程主机上的一个路径,即文件解压的路径
grop:解压后的目录或文件的属组
list_files:如果为yes,则会列出压缩包里的文件,默认为no,2.0版本新增的选项
mode:解决后文件的权限
src:如果copy为yes,则需要指定压缩文件的源路径
owner:解压后文件或目录的属主
示例如下:
- unarchive: src=foo.tgz dest=/var/lib/foo
- unarchive: src=/tmp/foo.zip dest=/usr/local/bin copy=no
- unarchive: src=https://example.com/example.zip dest=/usr/local/bin copy=no
参考文档:
ansible playbook file模块:http://blog.51cto.com/hellocjq/2061703
ansible 官网 模块指南:https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
网友评论