19,Ansible角色

1,ansible角色
ansible官方指定的一套统一规范规则叫角色比如我们可以把配置nginx过程抽象成一个nginx角色
同理像redis也是一样可以理解为一个角色,它的配置过程有ansible固定模板
[[email protected] ~]# cd /etc/ansible/roles/
[[email protected] /etc/ansible/roles]# tree
.
├── rsync #角色名称
│ ├── files #存放需要copy的文件
│ ├── handlers #触发任务剧本
│ ├── tasks #具体任务剧本
│ ├── templates #模版文件
│ └── vars #存放变量文件

2,ansible角色目录模板(以配置rsync服务为例)
mkdir -p /etc/ansible/roles/rsync (创建角色目录,做到统一管理)
mkdir {files,handlers,tasks,templates,vars} (规定死的目录)
1)cd rsync
vi tasks/main.yml

- name: 01-add-group
    group:
      name: www
      gid: 666
    tags: 01-add-group
  - name: 02-add-user
    user:
      name: www
      create_home: no
      shell: /sbin/nologin
      uid: 666
      group: www
    tags: 02-add-user
  - name: 03-install rsync
    yum:
      name: rsync
      state: installed
    tags: 03-install rsync
  - name: 04-copy rsyncd.conf
    copy:
      src: rsyncd.conf
      dest: /etc/
    notify:
      - restarted rsyncd
    tags: 04-copy rsyncd.conf
  - name: 05-create rsync.passwd
    copy:
      src: rsync.passwd
      dest: /etc/
      mode: 600
    tags: 05-create rsync.passwd
  - name: 06-create backup and data directory
    file:
      path: "{{ item }}"
      state: directory
      owner: www
      group: www
    loop:
      - "{{ path_backup }}"
      - "{{ path_data }}"
    tags: 06-create backup and data directory
  - name: 08-start rsyncd
    service:
      name: rsyncd
      state: started
    tags: 08-start rsyncd
  - name: 09-enbaled rsyncd
    systemd:
      name: rsyncd
      enabled: yes
    tags: 09-enbaled rsyncd

2)cd files (配置文件统一归到files目录)

3)vi vars/main.yml (放定义的变量)

path_backup: /backup
path_data: /data    

4)vi handlers/main.yml (notify的触发重启机制)

- name: restart rsyncd
  service:
    name: rsyncd
    state: restarted

5)创建一个开关文件

6)执行
ansible-playbook -C rsync_install.yml
ansible-playbook rsync_install.yml
7,ansible角色templates功能调用
templates模块的功能和files模块的功能类似。使用场景是不一样的:files模块里的配置文件直接批量复制到其他主机就行
它里面的配置参数你写好了就不用变,像rsync和nfs配置文件,但像SSH优化配置文件,里面的设置的登录ip是要跟相应主机ip变化而变化。这个时候templates模块就简单很多

1)这里我们创建一个init角色,这是一个初始化角色,就是将我们主机需要的所有基础配置统一用这个角色去做好
mkdir -p /etc/ansible/roles/init
mkdir {files,handlers,tasks,templates,vars}

2)vi tasks/main.yml
#01.配置base源

- name: 01_configure_yum_repos
  yum_repository:
    name: base
    description: base yum repo
    baseurl:
      - http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
    gpgcheck: no                        

#02.配置epel源

- name: 02_configure_yum_Repos
  yum_repository:
    name: epel
    description: epel yum repo
    baseurl:
      - https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
    gpgcheck: no                        

#03.安装常用软件

- name: 03_install_server
  yum:
    name: "{{ packages }}"
  vars:
    packages:
    - ntpdate
    - lsof
    - tree
    - iftop
    - iotop                 

#04.创建用户组

- name: 04_create_group
  group:
    name: www
    gid: 666                

#05.创建用户

- name: 05_create_user
  user:
    name: www
    uid: 666
    group: www
    shell: /sbin/nologin
    create_home: no             

#06.创建数据目录和脚本目录

- name: 06_create_dir
  file:
    path: "{{ item }}"
    state: directory
    mode: ‘0755‘
  loop:
    - /data
    - /server/scripts   

#07.创建同步时间定时任务

- name: 07_cron_ntpdate
  cron:
    name: Time_Update
    minute: "*/5"
    job: ‘/sbin/ntpdate time1.aliyun.com‘           

#08.拷贝优化后的ssh配置文件

- name: 08_copy_ssh
  template:
    src: sshd_config.j2
    dest: /etc/ssh/sshd_config
    mode: ‘0600‘
    backup: yes
  notify: restart sshd  

3)cp /etc/ssh/sshd_config templates/sshd_config.j2(这里配置文件就不用写在files模块下了)优化参数

#Port 22
#AddressFamily any
ListenAddress {{ ansible_facts.eth0.ipv4.address }}
#ListenAddress ::

原文地址:https://blog.51cto.com/13858002/2433669

时间: 2024-10-06 21:22:56

19,Ansible角色的相关文章

ansible角色调用

本篇博客仅供学习,没有实际项目意义,仅供学习之用 实验目的:配置中心服务器自动配置两台机器分别部署为nginx的反响为例服务和nginx的web服务. 配置密钥连接: 进入用户的ssh密钥路径 cd /root/.ssh/ 生成公私钥 ssh-keygen -t rsa -b 4096 将公钥发送给远程目标主机 ssh-copy-id -i id_rsa.pub [email protected] 测试连接 ssh [email protected] 定义角色的路径:默认位置[[email pr

掌握Ansible角色(Roles)自动化部署配置LAMP架构

Roles简介: Ansible为了层次化.结构化地组织Playbook,使用了角色(roles).Roles能够根据层次型结构自动装载变量文件.task以及handlers等.简单来讲,roles就是通过分别将变量.文件.任务.模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中.? 在一个playbook中创建使用Roles的步骤: 1.创建以roles命令的目录. * mkdir /etc/ansibl

自动化运维工具ansible 角色Roles介绍(三)

一.角色(roles)介绍角色定制:roles 对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web.db.ha 时或不同服务器组合不同的应用就需要写多个yml文件.很难实现灵活的调用. roles 用于层次性.结构化地组织playbook.roles 能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用 roles只需要在playbook中使用include指令即可.简单来讲,roles就是通过分别将变量(vars).文件(file).任务(tasks).模块

Ansible角色管理-Roles(实例演示!!!)

Roles的概述 Roles能够根据层次型结构自动装载变量文件.task以及handlers等. 简单来讲,Roles就是通过分别将变量.文件.任务.模块及处理器放置于单独的目录中,并可以便捷地include它们. Roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中. Roles的目录 目录名称 具体含义 files 用来存放由copy模块或script模块调用的文件 templates 用来存放j正则模板,template模块会自动在此目录中寻找正则模板文件 task

Ansible 的角色定义及调用

ansible 角色定义及调用 ==========================================================================  概述:    本章是上篇ansible的后续,将主要介绍ansible中角色的定义和调用,内容如下: 角色目录的定义方法 在playbook中调用角色的方法: 示例: ·定义nginx角色并调用: ·定义memcached角色并调用: ·定义mysql角色并调用: =========================

Ansible 一键配置安装Keepalived+Nginx作为前端,httpd+php作为后端

一.环境:  Ansible控制机:172.16.0.6                 Ansible nginx:172.16.0.{2|4}         Ansible Keepalived: 172.16.0.{2|4}         Ansible httpd: 172.16.0.{128|129}         Keepalived IP:192.168.220.5/32 除控制机全部采用Linux Cento7,外网统一192.168.220.0/27 一般生产机我们会把Y

Ansible自动化部署之ROLES

一.ROLES 角色 1.目录层级结构 2.角色调用 3.层级结构展示 示例1:利用ansible角色安装nginx 示例2:变量调用 示例3:在playbook调用角色方法:传递变量给角色 示例4:条件测试角色调用 示例5:角色安装 示例6:角色变量调整memcached内存大小 一.ROLES 角色 对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web.db.ha 时或不同服务器组合不同的应用就需要写多个yml文件.很难实现灵活的调用.. roles 用于层次性.结构化地组织pla

运维工具ansible+cobbler+zabbix

运维工作 一.系统 硬件----部署操作系统---多个主机 如何高效的安装操作系统 1.部署在裸机上的操作系统 bare metal pxe预执行环境:网卡自身有一个rom,可以自己加载来获得IP地址,能够到文件服务器上加载bootloader文件,依赖于网卡和网络预先提供的安装服务 但是pxe只能预引导1中操作系统 二次封装的pxe:cobbler 将多版本的操作系统环境支持 * [但是都需要支持pxe] 2.虚拟机器 virtual machine * 二.程序 configurtion 自

ansible自动化安装lnmp

今天尝试用ansible自动化编译安装了lnmp环境,是以把自己的见解和大家分享,不足之处还望大家指正. lnmp的构成 lnmp = linux + nginx + mysql + php/python/perl 下面给大家介绍下我的安装步骤 系统:linux7 首先下载lnmp环境所需模块,创建ansible角色 # mkdir -pv /tmp/roles/{mysql,php,nginx}/{files,vars,templates,tasks,handlers,meta} # cd /