首页 > 其他分享 >ansible05-ansible roles

ansible05-ansible roles

时间:2024-05-10 09:57:35浏览次数:22  
标签:httpd roles nginx ansible ansible05 include yml

5.ansible roles

roles

将变量、任务、模板等文件单独配置在yaml文件中,在main.yaml中用include字段来指定要执行的yaml文件

官方建议目录/etc/ansible/roles

调用roles的yml文件与roles目录平级

roles的目录结构

roles目录中创建角色名 比如叫做project,其子目录包含如下:

files/              # 存放copy或script模块等调用的文件        
templates/          # 存放模板文件
tasks/              # 书写单个任务
handlers/           # 指定触发动作
vars/               # 定义变量
meta/                 
default/           

例子:配置nginx

创建目录

mkdir -p /root/ansible-playbook/roles/nginx/{tasks,templates}

cd /root/ansible-playbook/roles/nginx/tasks

编写tasks任务

vim group.yml
---
- name: create group
  group: name=nginx
vim user.yml
---
- name: create user
  user: name=nginx group=nginx system=yes shell=/sbin/nologin
vim install.yml
---
- name: install nginx
  yum: name=nginx
vim template.yml
---
- name: copy config file
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
vim start.yml
---
- name: start nginx
  service: name=nginx state=start enabled=yes

指定执行顺序

vim main.yml
- include: group.yml
- include: user.yml
- include: install.yml
- include: template.yml
- include: start.yml

编写template模板文件

cd /root/ansible-playbook/roles/nginx/templates

cp /usr/local/nginx/conf/nginx.conf ./nginx.conf.j2

vim nginx.conf.j2
...
worker_processes  {{ ansible_processor_vcpus*3 }};         # 修改进程数为cpu核心数的3倍
...

编写调用role的playbook文件

cd /root/ansible-playbook

vim nginx_role.yml

- hosts: host10
  remote_user: root
  roles:
    - nginx

例子:配置httpd 只创建用户,拷贝文件

mkdir -p /root/ansible-playbook/roles/httpd/{tasks,files}

cd /root/ansible-playbook/roles/httpd/tasks
vim user.yml

---
- name: create user
  user: name=apache
vim copyfile.yml

---
- name: copy config file
  copy: src=httpd.conf dest=/etc/httpd/httpd.conf        # src文件在files目录中指定
vim main.yml

- include: user.yml
- include: copyfile.yml
cd /root/ansible-playbook/roles/httpd/files

cp /etc/httpd/httpd.conf ./
cd /root/ansible-playbook/

vim httpd_role.yml

---
- hosts: host10
  remote_user: root
  roles:
    - httpd    

指定多个roles

---
- hosts: host10
  remote_user: root
  roles:
    - httpd
     - nginx

一个角色调用另一个角色的任务

vim /root/ansible-playbook/roles/nginx/tasks/main.yml
- include: group.yml
- include: user.yml
- include: install.yml
- include: template.yml
- include: start.yml
- include: roles/httpd/tasks/copyfile.yml              # 注意拷贝文件的路径,要求src路径为绝对路径

role打标签

vim some_role.yml
---
- hosts: host10
  remote_user: root
  roles:
    - { role: httpd, tags: ['web', 'httpd'],when: ansible_distribution_major_version == "7" }   # 也可以指定when语句
    - { role: nginx, tags: ['web', 'nginx'] }

执行

ansible-playbook -t web some_role.yml                   # -t 指定要执行的标签

标签:httpd,roles,nginx,ansible,ansible05,include,yml
From: https://www.cnblogs.com/lixunblogs/p/18167312

相关文章

  • ansible01-ansible安装配置
    中文权威指南http://www.ansible.com.cn/docs/playbooks_variables.html#yaml安装wget-O/etc/yum.repos.d/epel.repohttp://mirrors.aliyun.com/repo/epel-7.repowget-O/etc/yum.repos.d/Centos-7.repohttp://mirrors.aliyun.com/repo/Centos-7.repo依赖  paramiko......
  • ansible04-ansible-playbook
    4.ansible-playbookplaybook文件示例执行playbook,拷贝服务配置文件到目标主机后,对原文件修改后再次执行playbook,已启动的服务不会再次重启-hosts:host10 remote_user:root tasks:  -name:installhttpd   yum:name=httpdstate=present  -name:......
  • ansible06-ansible-galaxy
    ansible系列命令ansible-galaxy连接https://galaxy.ansible.com下载相应的roles列出所有已经安装的galaxyansible-galaxylist从官网下载ansible-galaxyinstallgeerlingguy.nginx一般下载至/etc/ansible/roles/geerlingguy.nginx删除andible-galaxyremovegeerli......
  • ansible02-ansible变量的定义与引用
    4.1ansible变量的定义与引用playbook中变量的定义变量名只能由数字、字母、下划线组成,且只能由字母开头变量的来源(1)setup模块中的所有变量都可以直接调用(2)在/etc/ansible/hosts中定义- 普通变量:主机组中主机单独定义,优先级高于公共变量- 公共变量:也称组变量,针对主......
  • Ansible基础——ansible基础用法
    ansible基本用法-ping#ping服务器是否能通如:ansibleall-mping-command#在远程主机上执行命令,并将结果返回本主机,hosts为定义的主机清单中的用户组如:ansible-ihoststest-mcommand-a"chdir=/home/wpsls"-shell#shell命令如:ansible......
  • 第三十八天:Ansible playbook--Role角色
    角色是ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并......
  • ansible 常用模块 shell
    shell模块说明shell模块用于在目标主机上执行命令,类似于在命令行中直接输入命令。这个模块允许你执行任何命令,但是要注意命令的安全性和可重复性。shell模块语法-name:Executeshellcommandansible.builtin.shell:cmd:<command>chdir:<directory>#......
  • ansible register
    register说明在Ansible中,register是一个关键字,用于捕获任务执行结果以及任务执行过程中产生的输出和值。使用register关键字可以将任务的执行结果存储到一个变量中,您可以在playbook后续的任务中使用这个变量。register 返回值类型使用register关键字时,Ansible会将任务......
  • ansible剧本
    ansible剧本ansible中有两种模式,分别是ad-hoc模式和playbook模式ad-hoc简而言之,就是"临时命令"-临时的看下远程机器的内存信息-临时的批量分发一个配置文件特别小的需求,临时命令就解决大需求,部署软件这样的复杂需求,就写剧本https://docs.ansible.com/ansible/latest/us......
  • ansible剧本进阶
    ansible剧本进阶一.剧本的高级特性剧本高级特性是完全遵循python的循环结构来的编程语言特有的逻辑控制语句变量循环等等你的剧本,可以考虑用高级特性,也可以不用高级特性是为了简化剧本比如,创建10个系统的用户不用循环手写ansiblebakcup-muser-a"name=cc01"an......