Ansible中的角色使用

Ansible中的角色使用:

目录

一、ansible角色简介

二、roles目录结构

 三、roles的创建

四、roles的使用 

1、书写task主任务

2、触发器模块

3、变量模块

 4、j2模块

 5、files模块 

 6、启用模块

7、执行playbook

五、控制任务执行顺序

六、多重角色的使用


 

一、ansible角色简介

  1. Ansible roles 是为了层次化,结构化的组织Playbook 
  2. roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们
  3. roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高
  4. 以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割 成片段来执行。

二、roles目录结构

files 存放copy或script等模块调用的函数
tasks 定义各种task,要有main.yml,其他文件include包含调用
handlers 定义各种handlers,要有main.yml,其他文件include包含调用
vars 定义variables,要有main.yml,其他文件include包含调用
templates 存储由template模块调用的模板文本
meta 定义当前角色的特殊设定及其依赖关系,要有main.yml的文件
defaults 要有main.yml的文件,用于设定默认变量
tests 用于测试角色

 三、roles的创建

ansible—galaxy命令工具:
Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles;
ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的Ansible 角色。

vim ansible.cfg

 

mkdir roles

cd roles/
ansible-galaxy init apache

cd ..
ansible-galaxy list

Ansible中的角色使用_第1张图片

四、roles的使用 

例子:下载httpd,配置虚拟主机并认证加密

1、书写task主任务

vim tasks/main.yml

- name: yum
  yum:
    name: httpd
    state: present

- name: service
  service:
    name: httpd
    state: started
    enabled: yes

- name: create doc
  lineinfile:
    path: "{{item.doc}}/index.html"
    line: "{{item.index}}"
    create: yes
  loop: "{{webs}}"

- name: create vhosts.conf
  template:
    src: vhosts.conf.j2
    dest: /etc/httpd/conf.d/vhost.conf
  notify: restart httpd

- name: auth
  copy:
    src: .htpasswd
    dest: /etc/httpd/.htpasswd
  notify: restart httpd

Ansible中的角色使用_第2张图片

2、触发器模块

vim handlers/main.yml
cat handlers/main.yml

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

Ansible中的角色使用_第3张图片

3、变量模块

vim vars/main.yml
cat vars/main.yml

webs:
- doc: /var/www/html
  index: "www.westos.org's page"

- name: bbs.westos.org
  doc: /var/www/virtual/westos.org/bbs/html
  index: "bbs.westos.org's page"

- name: login.westos.org
  doc: /var/www/virtual/westos.org/login/html
  index: "login.westos.org's page"

Ansible中的角色使用_第4张图片

 4、j2模块

vim templates/vhosts.conf.j2
cat templates/vhosts.conf.j2

{% for web in webs %}
{% if web.name is defined %}

  ServerName {{web.name}}
{% endif %}
{% if web.name is not defined %}

{% endif %}
  DocumentRoot {{web.doc}}

{% endfor %}

AuthUserfile "/etc/httpd/.htpasswd"
AuthName "Please input your name and password"
AuthType basic
Require user yyl

Ansible中的角色使用_第5张图片

 5、files模块 

touch .htpasswd
htpasswd -cm .htpasswd yyl
cp /etc/httpd/.htpasswd files/

Ansible中的角色使用_第6张图片

 6、启用模块

vim httpd.yml

- name: instell http
  hosts: all
  roles:
  - role: apache

7、执行playbook

ansible-playbook httpd.yml

Ansible中的角色使用_第7张图片

 Ansible中的角色使用_第8张图片

Ansible中的角色使用_第9张图片 

Ansible中的角色使用_第10张图片

五、控制任务执行顺序

pre_task:任务执行前
post_tasks:任务执行后

例子:

- name: instell http
  hosts: all
  pre_tasks:
  - name: test
    debug:
      msg: this is start !!

  roles:
  - role: apache

  post_tasks:
    - name: show post
      debug:
        msg: this is end !!

 Ansible中的角色使用_第11张图片

Ansible中的角色使用_第12张图片

六、多重角色的使用

1、访问地址角色下载地址:galaxy.ansible.com roles

Ansible中的角色使用_第13张图片

2、搜索nginx,往后翻一下找到roles

 Ansible中的角色使用_第14张图片

3、下载角色 

ansible-galaxy collection install ivansible.nginx

要注意出于安全原因,下载的代码需要仔细研读每一行代码!!!

你可能感兴趣的:(ansible,ansible,运维)