task
由多个动作,多个任务组合起来的,每个任务都调用的模块,一个模块一个模块执行
# 概念
playbook的主体部分是task list
- task list中的各任务按次序逐个在hosts中指定的所有主机上执行
- 在所有主机上完成第一个任务后,再开始第二个任务
task的目的:使用指定的参数执行模块
- 在模块参数中可以使用变量
- 模块执行是幂等的,多次执行是安全的,其结果均一致
每个task都有name,用于playbook的执行结果输出
- 建议其内容能清晰地描述任务执行步骤
- 如果未提供name,则action的结果将用于输出
两种书写格式
- action: module arguments
- module: arguments
- 推荐使用
注意:shell和command模块后面跟命令,而非key=value
某任务的状态在运行后为changed时,可通过"notify"通知给相应的handlers
任务可以通过"tags"打标签,可在ansible-playbook命令上使用-t指定进行调用
# 示例
创建一个文件,以及用户,拷贝html文件,启动一个服务
- hosts: websrvs
remote_user: root
tasks:
- name: create new file # 描述
file: name=/data/newfile state=touch # 模块名: 模块对应的参数
- name: create new user
user: name=test2 system=yes shell=/sbin/nologin
- name: install package
yum: name=httpd
- name: copy html
copy: src=/var/www/html/index.html dest=/var/www/html/
- name: start service
service: name=httpd state=started enabled=yes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
使用 ansible-playbook -C xxx.yml 不执行,检查playbook是否有错
# 忽略错误
如果命令或脚本的退出码不为零,可以使用如下方式替代;针对有些命令执行出错了,但是不影响,可以跳过的情况使用
tasks:
- name: run this command and ignore the result
shell: /usr/bin/somecommand || /bin/true
# 或者使用ignore_errors来忽略错误信息
tasks:
- name: run this command and ignore the result
shell: /usr/bin/somecommand
ignore_errors: True #忽略错误
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Last Updated: 2022/05/22, 12:42:00