zoukankan      html  css  js  c++  java
  • Ansible剧本中的角色—playbook中的roles

    roles为完全独立或相互依赖的变量,任务,文件,模板和模块集合提供框架。

    在Ansible中,角色是将playbook分成多个文件的主要机制。这简化了编写复杂的playbook,并使其更易于重用。破坏playbook允许您在逻辑上将剧本分解为可重用的组件。

    每个roles基本上仅限于特定功能或所需输出,并具有在该roles本身内或作为依赖项列出的其他角色中提供该结果的所有必要步骤。

    roles不是playbook。roles是小功能,可以独立使用,但必须在playbook中使用。无法直接执行roles。roles没有明确设置roles将应用于哪个主机。

    Ansible Galaxy

    Ansible Galaxy 是一个网站,网站提供所有类型的由社区开发的 roles,可以在这个网站上下载其他人写好的roles,非常的方便

    roles使用示例

    roles是可以重用的, task中可以import_tasks yml文件 但入口总是main.yml 这个名字不能变

    mkdir -p {nginx,uwsgi,mysql}/{tasks,templates,vars,files} #递归创建目录结构的命令
    

    在自定义创建的data目录下实现示例

    1.创建目录, 及yml文件, 实现roles的整体结构如下

    data
    ├── nginx.yml				# 角色文件, ansible-playbook nginx.yml执行,和roles文件同级
    ├── roles
    │   ├── mysql
    │   ├── nginx
    │   │   ├── files  			# 用来存放file操作的src源文件
    │   │   │   └── c.txt
    │   │   ├── handlers  		# 存放handlers操作的yml文件
    │   │   │   └── main.yml
    │   │   ├── tasks   		# task目录必须存在,用来存放任务的yml文件
    │   │   │   ├── copyfile.yml
    │   │   │   ├── install.yml
    │   │   │   ├── main.yml
    │   │   │   └── start.yml
    │   │   ├── templates
    │   │   │   └── nginx.conf
    │   │   └── vars  			# 存放变量文件
    │   │       └── main.yml
    │   ├── redis
    │   └── uwsgi
    │       └── tasks
    │           └── main.yml
    └── uwsgi.yml
    

    nginx,uwsgi这些名字就是自定义起的,因为就是要对各被控机的这些软件操作,所以这么起名比较直观.以下是各文件内容,

    nginx.yml(和roles文件夹同级的)

    - hosts: web
      roles:
      - nginx
    

    uwsgi.yml

    - hosts: web
      roles:
      - uwsgi
    

    roles/tasks/files/c.txt 这个目录存放的都是file要操作的源文件

    源文件,测试情况下随便写写,可以放要copy的文件
    

    roles/tasks/handlers/main.yml

    - name: restart
      service: name=nginx state=restarted
    

    roles/tasks/tasks/main.yml

    - import_tasks: install.yml
    - import_tasks: copyfile.yml
    - import_tasks: start.yml
    - name: file
      copy: dest=/tmp/aaa.txt src=c.txt
    - name: createuser
      user: name={{user}}
      notify: restart
    

    roles/tasks/tasks/install.yml

    - name: install
      yum: name=nginx
    

    roles/tasks/tasks/copyfile.yml

    - name: copyfile
      template: src=nginx.conf dest=/etc/nginx/nginx.conf
    

    roles/tasks/tasks/start.yml

    - name: start
      service: name=nginx state=started enabled=yes
    

    roles/tasks/templates/nginx.conf

    放的是nginx.conf的模版文件,结合setup中的参数来用
    

    roles/tasks/vars/main.yml

    {"user":Robertx}
    

    2.执行:

    ansible-playbook nginx.yml
    
  • 相关阅读:
    P4329 [COCI2006-2007#1] Bond
    P4802 [CCO 2015]路短最
    1-4-14:计算邮资
    1-4-13:分段函数
    1-4-12:骑车与走路
    1-4-11:晶晶赴约会
    1-4-10:有一门课不及格的学生
    1-4-09:判断能否被3,5,7整除
    1-4-08:判断一个数能否同时被3和5整除
    1-4-07:收集瓶盖赢大奖
  • 原文地址:https://www.cnblogs.com/robertx/p/10840769.html
Copyright © 2011-2022 走看看