ansible 自动化运维工具 9 (ansible角色的安装及使用)

目录

  • 一、ansible 角色简介
    • 1.roles目录结构
    • 2.ansible 角色的创建
  • 二、ansible角色的使用
    • 1.书写task主任务
    • 2.触发器模块
    • 3.变量模块
  • 三、习题测试
    • 1.创建角色apache
    • 2.设置变量
    • 3.设置j2模板
    • 4.设置task任务
    • 5.设置触发器
    • 6.设置执行任务
  • 四、控制任务的执行顺序
  • 五、多重角色的使用

一、ansible 角色简介

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

1.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 用于测试角色

2.ansible 角色的创建

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

列出所有已经安装的galaxy;
请添加图片描述
role存放的路径在配置文件ansible.cfg中定义;
roles_path = ~/ansible/roles (默认目录:/etc/ansible/roles)
请添加图片描述
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第1张图片
创建目录结构
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第2张图片
创建vsftps(应该是vsftpd,这里打错了)角色
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第3张图片
ansible-galaxy list 查看角色;
可以看到vsftpd角色成功创建
请添加图片描述

二、ansible角色的使用

1.书写task主任务

示例:下载安装vsftpd,根据变量更改配置文件;
编辑 ~/ansible/roles/vsftps/tasks/main.yml 文件


---
# tasks file for vsftpd
- name: install vsftpd                     安装模块
  dnf:
    name: vsftpd
    state: latest
  notify:                                  触发器
    - restart vsftpd
    - firewalld set

- name: set vsftpd                        修改配置模块
  lineinfile:                            
    path: /etc/vsftpd/vsftpd.conf
    regexp: "anonymous_enable"
    line: "anonymous_enable={
     { STATE }}"
  notify:                                 触发器
    - restart vsftpd
/

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第4张图片

2.触发器模块

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第5张图片
查看防火墙的设置规则
请添加图片描述
示例如下
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第6张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第7张图片

- name: restart vsftpd             vsftpd模块
  service:
    name: vsftpd
    state: restarted
    enabled: yes

- name: firewalld set              防火墙模块
  firewalld:
    name: ftp
    state: enabeld
    permanent: yes
    immediate: yes

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第8张图片

3.变量模块

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第9张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第10张图片
启用模块 ~/ansible/vsftpd.yml
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第11张图片
执行playbook,为node主机安装vsftpd
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第12张图片
接下来测试删除所安装的vsftpd,编辑task主任务模块
请添加图片描述
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第13张图片
执行playbook
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第14张图片
再次编辑task主任务模块,测试安装vsftpd
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第15张图片
执行playbook
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第16张图片

三、习题测试

为node主机下载httpd,要求如下:
输入域名westos.westos.org ------得到访问测试页westos.westos.org;
输入域名linux.westos.org ------得到访问测试页linux.westos.org;
输入其他默认域名 ------得到访问测试页www.westos.org。

1.创建角色apache

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第17张图片

2.设置变量

//
---
# vars file for apache
WEBS:
  - docroot: /var/www/html
    index: www.westos.org
    
  - docroot: /var/www/vhosts/westos.org/westos
    name: westos.westos.org
    index: westos.westos.org
    
  - docroot: /var/www/vhosts/westos.org/linux
    name: linux.westos.org
    index: linux.westos.org
//      

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第18张图片

3.设置j2模板

请添加图片描述

{
     % for vhost in WEBS %}
{
     % if vhost['name'] is not defined %}
  <VirtualHost _default_:80>
{
     %endif%}
{
     % if vhost['name'] is defined %}
  <VirtualHost *:80>
  ServerName {
     {
     vhost['name']}}
{
     %endif%}
  DocumentRoot   {
     {
     vhost['docroot']}}
</VirtualHost>
{
     % endfor %}

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第19张图片

4.设置task任务

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第20张图片

///
---
# tasks file for apache
- name: install apache
  dnf:
    name: httpd
    state: latest
  notify:
    - restart apache
    - firewalld
- name: create documentroot
  file:
    path: "{
     { item.docroot }}"
    state: directory
  loop:
    "{
     {WEBS}}"
- name: create index.html
  copy:
    dest: "{
     { item.docroot }}/index.html"
    content: "{
     { item.index }}"
  loop:
    "{
     {WEBS}}"
- name: set vhost
  template:
    src: vhosts.conf.j2
    dest: /mnt/vhost.conf
  notify:
    - restart apache

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第21张图片

5.设置触发器

请添加图片描述

/
---
# handlers file for apache
- name: restart apache
  service:
    name: httpd
    state: restarted
    enabled: yes

- name: firewalld
  firewalld:
    service: http
    state: enabled
    permanent: yes
    immediate: yes
///

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第22张图片

6.设置执行任务

ansible 自动化运维工具 9 (ansible角色的安装及使用)_第23张图片
执行playbook
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第24张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第25张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第26张图片
可以在node主机查看到虚拟主机的信息
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第27张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第28张图片

四、控制任务的执行顺序

playbook中使用roles#
playbook中使用roles:
---
- hosts: server2
 roles:
 - role: role1
 - role: role2
 var1: value1  此处变量会覆盖roles中的定义变量

示例:

---
- hosts: server2
 roles:
 - role: role1  角色任务
 pre_tasks:  角色执行前执行的play
 - tasks1
 tasks:  普通任务
 - tasks2
 post_tasks: 在角色和普通任务执行完毕后执行的play
 - tasks3
 handl

在上一个实验的基础上添加任务的执行顺序,继续编辑任务执行模块 ~/ansible/vsftpd.yml
请添加图片描述
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第29张图片
执行playbook;
可以看到,在角色任务之前之前有任务执行
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第30张图片
在角色任务之后有任务执行
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第31张图片

五、多重角色的使用

首先真机开启火墙,打开地址伪装,使得虚拟机可以上网
请添加图片描述
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第32张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第33张图片
ansible—galaxy命令工具:
下载角色:
访问地址角色下载地址:install https://galaxy.ansible.com roles
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第34张图片
搜索nginx
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第35张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第36张图片
复制下方链接
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第37张图片
下载角色成功
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第38张图片
可以看到所安装的角色
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第39张图片
打包apache角色目录,将原本的目录删除进行实验测试
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第40张图片
列出角色,此时只有vsftps和刚刚安装的nginx
请添加图片描述
设置执行任务
请添加图片描述
安装角色
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第41张图片
接下来,我们安装Red Hat角色,Red Hat系统角色允许管理员有效地管理主机的指定属性
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第42张图片
安装到了/usr/share/ansible目录下
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第43张图片
拷贝到devops用户的ansible目录一份
请添加图片描述
列出已安装的角色
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第44张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第45张图片
编辑执行任务,完成node主机同步时间
请添加图片描述
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第46张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第47张图片
执行playbook
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第48张图片
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第49张图片
node主机编辑chrony的默认配置文件 /etc/chrony.conf
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第50张图片
成功同步到ansible主机的时间
ansible 自动化运维工具 9 (ansible角色的安装及使用)_第51张图片

你可能感兴趣的:(运维,自动化)