ansible条件,循环,roles用法

字节浮尘
• 阅读 2994

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
点赞
收藏
评论区
推荐文章
胖大海 胖大海
2年前
ansible自动化运维
Ansible是一个开源的基于openssh的自动化配置管理工具。可以用它来配置系统,部署软件和编排更高级的IT任务,比如持续部署或零停机更新。Ansible的主要目标是简单和易用,通过Ansible可以批量管理大型运维环境。!(https:/
Stella981 Stella981
3年前
List的Select 和Select().tolist()
List<PersondelpnewList<Person{newPerson{Id1,Name"小明1",Age11,Sign0},newPerson{Id2,Name"小明2",Age12,
Stella981 Stella981
3年前
CentOS系统:自动化运维工具Ansible的安装与配置
一、Ansible工具简介ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。二、Ansible的安装1、因为是对Ansible的简单测试,所以
Stella981 Stella981
3年前
Ansible入门及组件介绍
Ansible简介Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible是基于模块工作的,ansible提供一个框架,通过模块实现批量部署。Ansible是一种配置管理工具Ansible不需要安装客户端软件Ansible的功能实现基于SSH远
Stella981 Stella981
3年前
Jenkins+Ansible+Gitlab自动化部署三剑客
JenkinsAnsibleGitlab自动化部署三剑客小中大showerlee2016031113:00Ansible(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.
Stella981 Stella981
3年前
Ansible快速入门教程
Ansible快速入门介绍Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务。Ansible的特点1、ansible不需要单独安装客户端,也不需要启动任何服务2、ansible是Python(https://www.osc
Stella981 Stella981
3年前
Ansible远程执行脚本
1.05Ansible远程执行脚本首先创建一个shell脚本vim /tmp/test.sh //加入内容!/bin/bashechodate/tmp/ansible_test.txt然后把该脚本分发到各个机器上ansibletesthostmcop
Wesley13 Wesley13
3年前
IT运维面试问题总结
公众号关注“杰哥的IT之旅”,选择“星标”,重磅干货,第一时间送达!!(https://oscimg.oschina.net/oscnet/06940398340444af901e768d805cfd9b.png)Ansible1、简述Ansible及其优势?Ansible
Stella981 Stella981
3年前
Ansible playbook 使用
playbooks是一种简单的配置管理系统与多机器部署系统的基础。与现有的其他系统有不同之处,且非常适合于复杂应用部署playbook可以定制配置,可以按指定的步骤有序执行,支持同步以及异步方式。官网例子:https://github.com/ansible/ansibleexamplesplaybooks可以用于声明配置,更强大的地方在
Wesley13 Wesley13
3年前
mongoDB的安全相关
开启认证:在配置文件里新增一行authtrue创建用户:1.创建语法:createUser2.{user:"<name",pwd:"<cleartextpassword",customData:{<anyinformation},roles:\{role:"<role",db:"<database"}\
胖大海 胖大海
2年前
ansible 语法
在控制端里编写脚本,执行之前最好保存当前快照或者先使用测试环境,如果出现错误可以及时恢复!在管理机上使用yum模块控制两台被管理机安装tree软件ansibleceshijimyuma'nametreestatein