12、ansible-with_items迭代 、when条件判断、register保存命令执行结果
一、with_tiems 迭代
当有需要重复性执行的任务时,可以使用迭代机制 (with_items)
with_items模块一般放到模块的末尾, 与模块同一缩进级别
{{ item }}将循环迭代with_items中的值
- hosts: web2
tasks:
- name: fuzhi
copy:
src: /home/roles/mysql/files/20231026/
dest: /opt/igom/sql/20231026/
owner: root
group: root
mode: '0755'
- name: 拷贝文件到容器
command:
docker cp /opt/igom/sql/20231026/ mysql:/tmp
- name: 导入amcp数据库
command:
docker exec -it mysql /bin/bash -c 'mysql -uroot -p123456 amcp < /tmp/20231026/{{ item }}'
with_items:
- 001_amcp.sql
- 003_xs_suite.sql
- 004_xs_suite_content.sql
- 005_xs_suite_std.sql
- 006_xs_suite_std_kpi.sql
- 007_xs_tpl.sql
- 008_xs_tpl_rel.sql
- 009_xs_tpl_suite.sql
- 010_xs_suite_std_ins.sql
- 011_xs_suite_std_sub_ins.sql
- name: 导入iamdb数据库
command:
docker exec -it mysql /bin/bash -c 'mysql -uroot -p123456 iamdb < /tmp/20231026/{{ item }}'
with_items:
- 002_iamdb.sys_menu.sql
二、when条件判断
条件测试:如果需要根据变量、facts或此前任务的执行结果来做为某task执行与否的前提时要用到条件测试, 通过when语句实现,在task中使用,jinja2的语法格式 when语句 在task后添加when子句即可使用条件测试;when语句支持Jinja2表达式语法
若是when条件满足,则会执行上边的command
三、register 保存命令执行结果
与debug模块搭配使用,register模块用于获取,debug模块用于将结果输出
注意:可以与when搭配使用 (将register获取的信息作为when的判断条件)
示例: