ansible 条件,循环,roles用法简述

Posted lihuanhuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible 条件,循环,roles用法简述相关的知识,希望对你有一定的参考价值。

目录

roles作为ansible重要的企业实战解决方案。

批量创建文件,使用循环

---
- hosts: websrvs
  remote_user: root

  tasks:
    - name: create some files
      file: name=/data/{{ item }} state=touch
      with_items:
        - file1
        - file2
      when: ansible_distribution_major_version == "7"

迭代嵌套自变量,使用循环

---
- hosts: websrvs
  remote_user: root

  tasks:
    - 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
      - 83

  tasks:
    - name: copy conf file
      template: src=for1.conf.j2 dest=/data/for1.conf

touch for1.conf.j2
循环创建配置,并且可以使用if条件判断

{% for port in ports %}
server{
    listem {{ port }}
}
{% endfor %}

roles的使用

  • 将playbook中使用的功能拆开,分们别类,在playbook中引入即可,实现了功能复用,适合大型项目。

  • 在一个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

以上是关于ansible 条件,循环,roles用法简述的主要内容,如果未能解决你的问题,请参考以下文章

ansible-play中role的基本用法

Linux九阴真经之九阴白骨爪残卷5(ansible用法二之template及roles 角色)

Ansible高级用法

[原创]实战之Ansible生成Apache多主机配置

Ansible详解

Linux九阴真经之九阴白骨爪残卷5(ansible用法二之template及roles 角色)