1. 简介
在开发中,经常会编写一些流程控制相关的逻辑,如条件判断、循环等,ansible也提供了对条件判断、循环等的操作。
2. Jinja2
Ansible的模板配置是基于Jinja2的,如变量的定义:{{ variable }}
3. when
关于when的更多示例
- when使用示例
# cat deploy_app.yml
---
- hosts: proxy
tasks:
- name: Deploying to development...
debug:
msg: "Deploy to development."
when: dev|bool
- name: Deploying to production...
debug:
msg: "Deploy to production."
when: prod|bool
- 执行命令
# ansible-playbook -i hosts deploy_app.yml -e "dev=true prod=false" # 只部署到dev环境
# ansible-playbook -i hosts deploy_app.yml -e "dev=true prod=true" # 部署到dev、prod环境
4. 循环
Ansible的循环通常是以with_
开头的,如:
# cat test_vars.yml
---
- hosts: proxy
tasks:
- name: test vars
debug:
msg: "{{ item }}"
with_items:
- 1
- 2
- 3
更多循环的使用方式,请参照Loops
- 案例一:批量安装软件
# cat install_pkgs.yml
---
- hosts: proxy
tasks:
- name: install packages.
package:
name: "{{ item }}"
state: present
with_items:
- vim
- gcc
- wget
- 案例二:拷贝文件
# cat copy_files.yml
---
- hosts: proxy
tasks:
- name: copy files
copy:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: root
group: root
with_items:
- {"src": "/etc/localtime", "dest": "/tmp/localtime" }
- {"src": "/etc/hosts", "dest": "/tmp/hosts" }