ansible 条件,循环,roles用法

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

批量创建文件,使用循环
1
2
3
4
5
6
7
8
9
10
11
---
- 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"
迭代嵌套自变量,使用循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
- 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循环
1
2
3
4
5
6
7
8
9
10
11
12
13
---
- 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条件判断

1
2
3
4
5
{% for port in ports %}
server{
    listem {{ port }}
}
{% endfor %}
roles的使用
  • 将playbook中使用的功能拆开,分们别类,在playbook中引入即可,实现了功能复用,适合大型项目。
  • 在一个playbook中调用多个roles

    1
    2
    3
    4
    5
    
    - hosts: websrvs
      remote_user: root
      roles:
        - role: httpd
        - role: nginx
    
  • 在一个roles的task中调用其他roles中的tasks.
    main.yml

    1
    2
    
    - include: temp.yml
    - include: roles/htpd/tasks/copyfile.yml
    
  • 在一个playbook,给每个roles打上tag

    1
    2
    3
    4
    5
    
    - 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值