卧疾丰暇豫,翰墨时间作。这篇文章主要讲述ansible 条件,循环,roles用法简述相关的知识,希望能为你提供帮助。
目录
- 批量创建文件,使用循环
- 迭代嵌套自变量,使用循环
- 使用for循环
- roles的使用
roles作为ansible重要的企业实战解决方案。
批量创建文件,使用循环
---
- hosts: websrvs
remote_user: roottasks:
- name: create some files
file: name=/data/{{ item }} state=touch
with_items:
- file1
- file2
when: ansible_distribution_major_version == "7"
迭代嵌套自变量,使用循环
---
- hosts: websrvs
remote_user: roottasks:
- name: create some groups
group: name={{item}}
when: ansible_distribution_major_version == "7"
with_items:
- g1
- g2
- g3- name: create some users
user: name={{item.name}} group={{item.group}}
when: ansible_distribution_major_version == "7"
with_items:
- { name: \'user1\',group: \'g1\'}
- { name: \'user1\',group: \'g2\'}
- { name: \'user1\',group: \'g3\'}
使用for循环
---
- hosts websrvs
remote_user: root
vars:
#定义一个列表类型的变量,名称为ports
ports:
- 81
- 82
- 83tasks:
- name: copy conf file
template: src=https://www.songbingjia.com/android/for1.conf.j2 dest=/data/for1.conf
touch for1.conf.j2
循环创建配置,并且可以使用if条件判断
{% for port in ports %}
server{
listem {{ port }}
}
{% endfor %}
roles的使用
- 将playbook中使用的功能拆开,分们别类,在playbook中引入即可,实现了功能复用,适合大型项目。
- 【ansible 条件,循环,roles用法简述】在一个playbook中调用多个roles
- hosts: websrvs
remote_user: root
roles:
- role: httpd
- role: nginx
- 在一个roles的task中调用其他roles中的tasks.
main.yml
- include: temp.yml
- include: roles/htpd/tasks/copyfile.yml
- 在一个playbook,给每个roles打上tag
- hosts: websrvs
remote_user: root
roles:
- { role: httpd, tasg: [\'web\',httpd\'] }
- { role: nginx, tags: [\'web\',\'nginx\'],when: ansible_distribution_major_version == "7" }
- 调用带有tag的任务
ansible-playbook -t web some_role.yml
推荐阅读
- Linux系统故障定位与优化
- jenkins之-通过API方式调用
- asible之-玩转各种循环
- 基于Clickhouse的日志体系
- ansible template用法
- 虚拟化笔记04.OpenFiler.install
- jenkins之-创建第一个pipeline
- Linux 学习5
- ansible下载文件的多种方式