ansible剧本之role角色模块

这篇具有很好参考价值的文章主要介绍了ansible剧本之role角色模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:Roles 模块

roles用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令引入即可。
简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷的include它们的一种机制。roles一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。主要使用场景代码复用度较高的情况下。

假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成haproxy服务器,第三个要配置成MySQL(mariadb)服务器。我们如何来定义playbook?
第一个play用到第一个主机上,用来构建httpd,第二个play用到第二个主机上,用来构建haproxy。这些个play定义在playbook中比较麻烦,将来也不利于模块化调用,不利于多次调用。比如说后来又加进来一个主机,这第3个主机既是httpd服务器,又是haproxy服务器,我们只能写第3个play,上面写上安装httpd和haproxy。这样playbook中的代码就重复了。
为了避免代码重复,可以定义一个角色叫httpd,第二个角色叫haproxy,并使用roles实现代码重复被调用。

1.roles 的目录结构:

cd /etc/ansible/
tree roles/
roles/
├── web/    #相当于 playbook 中的 每一个 play 主题
│   ├── files/
│   ├── templates/
│   ├── tasks/
│   ├── handlers/
│   ├── vars/
│   ├── defaults/
│   └── meta/
└── db/
    ├── files/
    ├── templates/
    ├── tasks/
    ├── handlers/
    ├── vars/
    ├── defaults/
    └── meta/

2.roles 内各目录含义解释

  • files
    用来存放由 copy 模块或 script 模块调用的文件。

  • templates
    用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。

  • tasks
    此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task文件。

  • handlers
    此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。

  • vars
    此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。

  • defaults
    此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。这些变量具有所有可用变量中最低的优先级,并且可以很容易地被任何其他变量覆盖。所以生产中我们一般不在这里定义变量

  • meta
    此目录应当包含一个 main.yml 文件,用于定义此角色的元数据信息及其依赖关系。

3.在一个 playbook 中使用 roles 的步骤:

(1)创建以 roles 命名的目录

mkdir /etc/ansible/roles/ -p    #yum装完默认就有

(2)创建全局变量目录(可选)

mkdir /etc/ansible/group_vars/ -p
touch /etc/ansible/group_vars/all     #文件名自己定义,引用的时候注意

(3)在 roles 目录中分别创建以各角色名称命名的目录,如 httpd、mysql

mkdir /etc/ansible/roles/httpd
mkdir /etc/ansible/roles/mysql

(4)在每个角色命名的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建

mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}

(5)在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名

touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml

(6)修改 site.yml 文件,针对不同主机去调用不同的角色

vim /etc/ansible/site.yml
---
- hosts: webservers
  remote_user: root
  roles:
     - httpd
- hosts: dbservers
  remote_user: root
  roles:
     - mysql

(7)运行 ansible-playbook

cd /etc/ansible
ansible-playbook site.yml

二:使用Role编写LNMP剧本

1.创建目录和main.yml文件

mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p

touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

2.搭建Nginx角色

在files目录李准备文件
ansible剧本之role角色模块,ansible,ansible,android

准备关闭防护墙脚本

vim /etc/ansible/roles/nginx/tasks/init.yml
- name: disable firewalld
  service: name=firewalld  state=stopped  enabled=no

- name: disable selinux
  shell: "/usr/sbin/setenforce 0"
  ignore_errors: true

准备剧本文件

/etc/ansible/roles/nginx/tasks/main.yml 
- include: "init.yml" #引入另外一个剧本

- name: copy nginx yum repo
  copy: src=nginx.repo dest=/etc/yum.repos.d/

- name: install nginx
  yum: name=nginx

- name: copy index.php
  copy: src=index.php dest=/usr/share/nginx/html

- name: copy index.conf
  copy: src=default.conf dest=/etc/nginx/conf.d/default.conf
  notify: restart nginx

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

3.搭建Mysql角色

在files目录下准备配置文件
ansible剧本之role角色模块,ansible,ansible,android
在tasks目录下准备剧本

vim /etc/ansible/roles/nginx/tasks/main.yml
 - include: "init.yml"

- name: install mysql.repo
  shell: wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm && rpm -ivh mysql57-community-release-el7-11.noarch.rpm
  ignore_errors: true

- name: mysql.repo
  copy: src=mysql-community.repo dest=/etc/yum.repos.d/mysql-community.repo

- name: install mysql
  yum: name=mysql-server

- name: start msql
  service: name=mysqld state=started enabled=yes

- name: grep passwd
  script: passwd.sh

4.搭建php角色

在files目录下准备配置文件
ansible剧本之role角色模块,ansible,ansible,android

在tasks目录下准备配置配置文件文章来源地址https://www.toymoban.com/news/detail-654405.html

vim /etc/ansible/roles/nginx/tasks/main.yml
- include: "init.yml"

- name: install yum repo
  shell: "rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm"

- name: install php
  shell: yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache
  ignore_errors: true

- name: start php
  service: name=php-fpm state=started enabled=yes

- name: user php
  user: name=php create_home=no shell=/sbin/nologin

- name: php.ini
  copy: src=php.ini dest=/etc/php.ini

- name: www.conf
  copy: src=www.conf dest=/etc/php-fpm.d/www.conf

- name: create nginx
  file: name=/usr/share/nginx state=directory

- name: create nginx
  file: name=/usr/share/nginx/html state=directory

5.lnmp剧本

vim /etc/ansible/lnmp.yml
- name: nginx play
  hosts: webservers
  remote_user: root
  roles:
  - nginx

- name: mysql play
  hosts: mysql
  remote_user: root
  roles:
  - mysql
  tags:
  - ddd

- name: php play
  hosts: dbservers
  remote_user: root
  roles:
  - php
  tags:
  - aaa

到了这里,关于ansible剧本之role角色模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ansible自动化运维(二)剧本、角色编写实战

    😘作者简介:一名运维工作人员。 👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。 🙏创作不易,动动小手给个点赞加关注吧,有什么意见评论区告诉我。 目录 一、剧本(playbook) 1、介绍 2、剧本组成 3、剧本编写规范 4、实战(编写搭建nginx的

    2024年02月15日
    浏览(35)
  • ansible剧本模式特殊模块使用

    Nginx安装剧本 vim /etc/ansible/hosts  vim /etc/ansible/playbook/default.conf.j2  vim /etc/ansible/test_nginx.yaml ​​​​​​​   检查一下是否有语法错误 ansible-playbook /etc/ansible/test_nginx.yaml ansible-playbook test1.yaml //补充参数 -k(-ask-pass):用来交互输入ssh密码 -K(-ask-become-pass):用来交互输入

    2024年02月09日
    浏览(35)
  • ansible的部署和命令模块和playbooks剧本

    ` Ansible是基于模块工作的,只是提供了一种运行框架,本身没有完成任务的能力,真正操作的是Anisble的模块。每个模块都是独立的、实现了批量系统配置、批量程序部署、批量运行命令等功能。 优势: ①轻便性:无需在被控制服务器上安装客户端,Ansible基于ssh协议 ②幂等

    2024年02月10日
    浏览(25)
  • 自动化运维ansible(role)

    一、role的介绍 1、Roles称为角色,本质上是为简化playbook配置文件而产生的一种特殊的方法。 2、简单来说,roles就是将原本在一个yaml中的文件进行规则化分散,封装到不同的目录下,从而简化playbook的yaml配置文件大小。从其实现方法上来看,类似于软件开发上的代码封装。

    2024年02月07日
    浏览(28)
  • Elasticsearch:节点角色 - node roles

    你可能已经知道 Elasticsearch 集群由一个或多个节点组成。 每个节点将数据存储在分片上,每个分片存储在一个节点上。 到目前为止,你看到的每个节点都至少存储了一个分片,但值得注意的是,节点并不总是必须存储分片。 这是因为每个节点可能具有一个或多个角色,这些

    2024年02月16日
    浏览(22)
  • ansible 使用roles简单部署LAMP平台

    目录 一、了解roles目录 二、基于构建LAMP平台创建roles目录 1、在192.168.115.148创建目录 2、书写php的测试页面 3、编写httpd角色的main.yml文件 4、编写mysql角色的main.yml文件 6、编写lamp的playbook 7、启动剧本 8、访问 在Ansible中,roles是一种组织和复用任务和变量的方式。Roles是一种可

    2024年02月09日
    浏览(25)
  • Ansible上通过roles简化playbook演示介绍

    目录 一.roles介绍 1.作用 2.role的目录结构 3.role和tasks的执行优先级顺序 二.自定义一个httpd的角色 1.完整目录结构展示 2.主要的各个目录配置 (1)vars目录和templates目录 (2)tasks目录和handlers目录 (3)运行playbook测试 三.ansible galaxy安装roles 1.在线网站 2.配置roles_path 3.ansible-ga

    2024年02月08日
    浏览(27)
  • ansible的剧本

    1.1 playbooks的组成 Tasks 任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 Variables 变量 Templates 模板 Handlers 处理器,当changed状态条件满足时,(notify)触发执行的操作 Roles 角色 1.2 playbooks剧本范例 Ansible在执行完某个任务之后并不会立即去执行对应的h

    2024年02月21日
    浏览(25)
  • Ansible之playbooks剧本

    (1)playbooks是ansible用于配置,部署,和管理被控节点的剧本。 (2)通过playbooks的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbooks是由一个或多个”play”组成的列表。 当对一台机器做环境初始化的时候往往需要不止做一件事情,使用playbooks。 (3)通过

    2024年02月09日
    浏览(38)
  • Ansible playbook ----- 剧本

    playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables:变量 (3)Templates:模板 (4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作 (5)Roles:角色 //示例: vim test1.yaml ---    

    2024年02月10日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包