ansible之roles使用(四)

1 roles的介绍

以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割成片段来执行

 

2 roles的作用

主要作用是重用playbook,例如我们无论安装什么软件都会安装时间同步服务,那么每个playbook都要编写ntp task。我们可以将ntp task写好,等到用的时候再调用就行了。ansible中将其组织成role,他有着固定的组织格式。以便playbook调用

 

3 目录结构

ansible之roles使用(四)

 

案例

目录结构

roles/
└── httpd                                      #调用名
    ├── handlers                             #重启触发器
    │   └── main.yml
    ├── role_httpd.yml                    #调用文件
    ├── tasks                                    #工作集合
    │   └── main.yml
    ├── templates                            #模板
    │   ├── httpd.conf.c6.jinja2
    │   └── httpd.conf.c7.jinja2
    └── vars                                       #变量
        └── main.yml

 

分步走

1 cat httpd/tasks/main.yml

- name: install httpd package
  yum: 
    name: httpd 
    state: present

- name: install configure file
  template: src=httpd.conf.c{{ ansible_distribution_major_version }}.jinja2 dest=/etc/httpd/conf/httpd.conf
  tags: instconf

  notify: 
    - restart httpd service

- name: start httpd service
  service: 
    name: httpd
    state: started 
    enabled: true

 

2  cat httpd.conf.c6.jinja2 

   cat  httpd.conf.c7.jinja2

   就是httpd 主配置文件 复制两份  然后修改了端口号

  Listen {{ httpd_port }}

 

3 cat httpd/vars/main.yml

httpd_port: 8080

 

4 cat httpd/handlers/main.yml 

- name: restart httpd service
  service:
     name: httpd
     state: restarted

 

5 调用文件方式

cat httpd/role_httpd.yml

- hosts: web
  remote_user: root
  roles:
    - { role: httpd}

 

关于调用文件的方式挺多的 这里就不多说了

关于调用文件的方式挺多的 这里就不多说了

 

开始模拟执行

ansible-playbook httpd/role_httpd.yml -C

命令结果

ansible之roles使用(四)

 

上一篇:ansible中的重试逻辑


下一篇:jenkins发布失败,提示Failed to create temporary directory