根据ansible role完成LAMP渠道批量布置51CTO博客 - 娱乐之横扫全球

根据ansible role完成LAMP渠道批量布置51CTO博客

2019年03月01日10时20分26秒 | 作者: 雨欣 | 标签: 布置,批量,完成 | 浏览: 2543

前语

作为运维人员,当面临几十台或上百台效劳器需求修正某个参数或布置某个渠道,你将从何下手呢?ansible的呈现很好的处理了这一困扰,ansible依据Python开发,调集了众多运维东西(puppet、cfengine、chef、func、fabric)的长处,完成了批量系统装备、批量程序布置、批量运转指令等功能。本文带来的是依据Ansible Role完成LAMP渠道批量布置。

ansible简介

特性

  • No agents:不需求在被管控主机上装置恣意客户端

  • No server:无效劳器端,运用时直接运转指令即可

  • Modules in any languages:依据模块作业,可运用恣意言语开发模块

  • YAML,not code:运用yaml言语定制剧本playbook

  • SSH by default:依据SSH作业

  • Strong multi-tier solution:可完成多级指挥

根本架构

指令格局

#常用格局
ansible <host-pattern> [-f forks] [-m module] [-a args]
host-pattern # 可所以all,或许装备文件中的主机组名
-f forks # 指定并行处理的进程数
-m module # 指定运用的模块,默许模块为command
-a args # 指定模块的参数
#检查各模块
ansible-doc [options] [modules]
# 首要选项有:
-l或list # 列出可用的模块
-s或snippet #显现指定模块的简略运用方法

其他知识点介绍详见官方文档,咱们直接进入正题

ansible role完成LAMP渠道批量布置

ansible role

ansilbe自1.2版别引进的新特性,用于层次性、结构化地安排playbook。roles能够依据层次型结构主动装载变量文件、tasks以及handlers等。要运用roles只需求在playbook中运用include指令即可。简略来讲,roles就是经过别离将变量、文件、使命、模块及处理器放置于独自的目录中,并能够快捷地include它们的一种机制。人物一般用于依据主机构建效劳的场景中,但也可所以用于构建看护进程等场景中。

#创立role的进程
(1) 创立以roles命名的目录;
(2) 在roles目录中别离创立以各人物称号命名的目录,如webservers等;
(3) 在每个人物命名的目录中别离创立files、handlers、meta、tasks、templates和vars目录;用不
到的目录能够创立为空目录,也能够不创立;
(4) 在playbook文件中,调用各人物;
#role内各目录中可用的文件
tasks目录:至少应该包括一个名为main.yml的文件,其界说了此人物的使命列表;此文件能够运用in
clude包括其它的位于此目录中的task文件;
files目录:寄存由copy或script等模块调用的文件;
templates目录:template模块会主动在此目录中寻觅Jinja2模板文件;
handlers目录:此目录中应当包括一个main.yml文件,用于界说此人物用到的各handler;在handler
中运用include包括的其它的handler文件也应该位于此目录中;
vars目录:应当包括一个main.yml文件,用于界说此人物用到的变量;
meta目录:应当包括一个main.yml文件,用于界说此人物的特别设定及其依靠联系;
default目录:为当时人物设定默许变量时运用此目录;应当包括一个main.yml文件;

试验拓扑

装备进程

装置ansible

[root@scholar ~]# yum install ansible -y        #需epel源

装备inventory文件

[root@scholar ~]# vim /etc/ansible/hosts 
#界说被控主机
[webservers]
172.16.10.123 ansible_ssh_user=root ansible_ssh_pass=centos
172.16.10.124 ansible_ssh_user=root ansible_ssh_pass=centos
[dbservers]
172.16.10.125 ansible_ssh_user=root ansible_ssh_pass=centos

完成依据ssh密钥通讯

[root@scholar ~]# ssh-keygen -t rsa -P 
[root@scholar ~]# yum install sshpass -y  #请保证装置sshpass,否则无法通讯

#别的一组也履行以上操作

#此刻能够将/etc/ansible/hosts改为
[webservers]
172.16.10.123 
172.16.10.124 
[dbservers]
172.16.10.125

创立各目录

[root@scholar ~]# mkdir lamp/role -pv
[root@scholar role]# mkdir web/{files,handlers,meta,tasks,templates,vars,default} db/{fil
es,handlers,meta,tasks,templates,vars,default} php/{files,handlers,meta,tasks,templates,v
ars,default} -p

预备各效劳装备文件

[root@scholar role]# cp /etc/httpd/conf/httpd.conf web/files/
[root@scholar role]# cp /etc/php.ini php/files/
[root@scholar role]# cp /etc/my.cnf db/files/

创立各剧本

[root@scholar role]# touch web.yml php.yml db.yml site.yml
[root@scholar role]# touch web/{handlers,tasks}/main.yml db/{handlers,tasks}/main.yml php
/tasks/main.yml
[root@scholar role]# vim web.yml

- name: web service
  remote_user: root
  hosts: webservers
  roles:
    - web

[root@scholar role]# vim php.yml    

- name: php service
  remote_user: root
  hosts: webservers
  roles:
    - php
    
[root@scholar role]# vim db.yml 

- name: mysql service
  remote_user: root
  hosts: dbservers
  roles:
    - db

[root@scholar role]# vim web/tasks/main.yml     

- name: install httpd
  yum: name=httpd state=present
- name: configuration httpd
  copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf
  notify:
    - restart httpd
- name: service httpd start
  service: name=httpd enabled=no state=started
  
[root@scholar role]# vim web/handlers/main.yml 

- name: restart httpd
  service: name=httpd state=restarted
  
[root@scholar role]# vim php/tasks/main.yml 

- name: install php
  yum: name=php state=present
- name: configuration php
  copy: src=php.ini dest=/etc/php.ini
  
[root@scholar role]# vim db/tasks/main.yml 

- name: install mysql
  yum: name=mysql state=present
- name: install mysql-server
  yum: name=mysql-server state=present
- name: configuration mysqld
  copy: src=my.cnf dest=/etc/my.cnf
  notify:
    - restart mysqld
- name: service mysqld start
  service: name=mysqld enabled=no state=started
  
[root@scholar role]# vim db/handlers/main.yml 

- name: restart mysqld
  service: name=mysqld state=restarted

批量布置

布置httpd

布置php

布置mysql

检查各节点效劳端口是否被监听

The end

依据ansible role完成LAMP渠道批量布置就简略提到这儿了,以上仅是初露锋芒,其他高难度布置还有待探求,试验进程中坑也不少,详细遇到问题可留言沟通。以上仅为个人学习收拾,如有讹夺,大神勿喷~~~

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章