Ansible--项目实战
Ansible项目实战lnmp
项目规划
通过ansible roles配置lnmp环境,nginx通过源码编译安装,php通过源码编译安装,mysql通过yum安装(mysql源码编译超级慢)支持系统(centos6.x和centos7.x系列)
说明: 将nginx和php源码包放到对应的角色文件下的files目录下,通过vars/main.yml控制安装的版本和路径。如下:
[root@ansible roles]# cat nginx/vars/main.yml
DOWNLOAD_DIR: "/usr/local/src/" #软件包拷贝到目标主机的存放路径
INSTALL_DIR: "/usr/local/" #安装路径
NGINX_VERSION: "1.12.2" #软件包版本
USER: "nginx" #运行的用户
GROUP: "nginx" #运行的组
角色编写
这里角色都统一放在了/etc/ansible/roles下
安装编译时所需要用到的依赖包
[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# cat init_pkg.yml
#安装源码编译php、nginx时所需要用到的依赖包
---
- hosts: all
remote_user: root tasks:
- name: Install Package
yum: name={{ item }} state=installed
with_items:
- gcc-c++
- glibc
- glibc-devel
- glib2
- glib2-devel
- pcre
- pcre-devel
- zlib
- zlib-devel
- openssl
- openssl-devel
- libpng
- libpng-devel
- freetype
- freetype-devel
- libxml2
- libxml2-devel
- bzip2
- bzip2-devel
- ncurses
- curl
- gdbm-devel
- libXpm-devel
- libX11-devel
- gd-devel
- gmp-devel
- readline-devel
- libxslt-devel
- expat-devel
- xmlrpc-c
- libcurl-devel
nginx roles
1)创建相应文件夹
[root@ansible roles]# mkdir -p nginx/{files,handlers,tasks,templates,vars}
2)最终编写效果
[root@ansible roles]# tree nginx
nginx
├── files
│ ├── nginx-1.12..tar.gz
│ └── nginx-1.16..tar.gz
├── handlers
│ └── main.yml
├── tasks
│ ├── config.yml
│ ├── copypkg.yml
│ ├── group.yml
│ ├── install.yml
│ ├── main.yml
│ ├── service.yml
│ └── user.yml
├── templates
│ ├── nginx.conf.j2
│ ├── nginx_init.j2
│ └── nginx.service.j2
└── vars
└── main.yml directories, files
php roles
1)创建相应文件夹
[root@ansible roles]# mkdir -p php/{files,handlers,tasks,templates,vars}
2)最终编写效果
[root@ansible roles]# tree php
php
├── files
│ └── php-5.6..tar.gz
├── handlers
│ └── main.yml
├── tasks
│ ├── config.yml
│ ├── copypkg.yml
│ ├── group.yml
│ ├── install.yml
│ ├── main.yml
│ ├── service.yml
│ └── user.yml
├── templates
│ ├── php-fpm.conf.j2
│ ├── php-fpm.init.j2
│ ├── php-fpm.service.j2
│ └── php.ini.j2
└── vars
└── main.yml directories, files
mysql roles
1)创建相应文件夹
[root@ansible roles]# mkdir -p mysql/{files,handlers,tasks,templates,vars}
2)最终编写效果
[root@ansible roles]# tree mysql
mysql
├── files
├── handlers
│ └── main.yml
├── tasks
│ ├── config.yml
│ ├── install.yml
│ ├── main.yml
│ └── service.yml
├── templates
│ ├── my.cnf6.j2
│ └── my.cnf7.j2
└── vars directories, files
角色执行playbook文件编写
[root@ansible roles]# cat nginx_roles.yml
#源码编译安装nginx
---
- hosts: all
remote_user: root
roles:
- role: nginx [root@ansible roles]# cat php_roles.yml
#源码编译安装nginx
---
- hosts: all
remote_user: root
roles:
- role: php [root@ansible roles]# cat mysql_roles.yml
#yum安装MySQL
---
- hosts: all
remote_user: root
roles:
- role: mysql [root@ansible roles]# cat lnmp.yml
#配置lnmp,创建虚拟主机
---
- hosts: all
remote_user: root
roles:
- role: nginx
- role: php
- role: mysql vars:
PORT:
WEBDIR: "/opt/www"
CONFIGDIR: "/usr/local/nginx/conf/conf.d" tasks:
- name: create vhost dir
file: name={{ WEBDIR }} state=directory owner=www group=www mode= - name: create vhost conf
template: src=vhost.conf.j2 dest={{ CONFIGDIR }}/vhost.conf
notify: Restart Nginx - name: create index.php
shell: "echo '<?php phpinfo(); ?>' > {{ WEBDIR }}/index.php" handlers:
- name: Restart Nginx
service: name=nginx state=restarted # hostslist文件准备,这样方便执行,可以在执行playbook时指定某台机器上运行
[root@ansible roles]# cat hostlist
192.168.1.31
192.168.1.32
192.168.1.33
192.168.1.36 #所有文件查看
[root@ansible roles]# ll
总用量
-rw-r--r--. root root 6月 : hostlist
-rw-r--r--. root root 6月 : init_pkg.yml
-rw-r--r--. root root 6月 : lnmp.yml
drwxr-xr-x. root root 6月 : mysql
-rw-r--r--. root root 6月 : mysql_roles.yml
drwxr-xr-x. root root 6月 : nginx
-rw-r--r--. root root 6月 : nginx_roles.yml
drwxr-xr-x. root root 6月 : php
-rw-r--r--. root root 6月 : php_roles.yml
-rw-r--r--. root root 6月 : vhost.conf.j2
所有文件查看
[root@ansible roles]# tree
.
├── hostlist
├── init_pkg.yml
├── lnmp.yml
├── mysql
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── config.yml
│ │ ├── install.yml
│ │ ├── main.yml
│ │ └── service.yml
│ ├── templates
│ │ ├── my.cnf6.j2
│ │ └── my.cnf7.j2
│ └── vars
├── mysql_roles.yml
├── nginx
│ ├── files
│ │ ├── nginx-1.12..tar.gz
│ │ └── nginx-1.16..tar.gz
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── config.yml
│ │ ├── copypkg.yml
│ │ ├── group.yml
│ │ ├── install.yml
│ │ ├── main.yml
│ │ ├── service.yml
│ │ └── user.yml
│ ├── templates
│ │ ├── nginx.conf.j2
│ │ ├── nginx_init.j2
│ │ └── nginx.service.j2
│ └── vars
│ └── main.yml
├── nginx_roles.yml
├── php
│ ├── files
│ │ └── php-5.6..tar.gz
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── config.yml
│ │ ├── copypkg.yml
│ │ ├── group.yml
│ │ ├── install.yml
│ │ ├── main.yml
│ │ ├── service.yml
│ │ └── user.yml
│ ├── templates
│ │ ├── php-fpm.conf.j2
│ │ ├── php-fpm.init.j2
│ │ ├── php-fpm.service.j2
│ │ └── php.ini.j2
│ └── vars
│ └── main.yml
├── php_roles.yml
└── vhost.conf.j2 directories, files
执行说明
1)单独某一台机器安装nginx
[root@ansible roles]# ansible-playbook -i hostlist nginx_roles.yml --limit 192.168.1.31
2)单独某一台机器安装php
[root@ansible roles]# ansible-playbook -i hostlist php_roles.yml --limit 192.168.1.31
3)单独某一台机器安装mysql
[root@ansible roles]# ansible-playbook -i hostlist mysql_roles.yml --limit 192.168.1.31
4)单独某一台机器部署lnmp
[root@ansible roles]# ansible-playbook -i hostlist lnmp.yml --limit 192.168.1.31
5)所有机器部署php
[root@ansible roles]# ansible-playbook php_roles.yml
6)所有机器部署nginx
[root@ansible roles]# ansible-playbook nginx_roles.yml
7)所有机器部署mysql
[root@ansible roles]# ansible-playbook mysql_roles.yml
8)所有机器部署lnmp
[root@ansible roles]# ansible-playbook lnmp.yml

如需源码及软件包联系我
Ansible--项目实战的更多相关文章
- 项目实战10.1—企业级自动化运维工具应用实战-ansible
实战环境: 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测 ...
- Python+Django+ansible playbook自动化运维项目实战☝☝☝
Python+Django+ansible playbook自动化运维项目实战☝☝☝ 一.入门引导 DevOPSDevOps(英文Development和Operations的组合)是一组过程.方法 ...
- Python+Django+ansible playbook自动化运维项目实战✍✍✍
Python+Django+ansible playbook自动化运维项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受 ...
- Python+Django+Ansible Playbook自动化运维项目实战
Python+Django+AnsiblePlaybook自动化运维项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单 ...
- 【SSH项目实战三】脚本密钥的批量分发与执行
[SSH项目实战]脚本密钥的批量分发与执行 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载, ...
- Linux运维项目实战系列
Linux运维项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-项目实战2-实现基于LVS负载均衡集群的电商网站架构 2.1项目实战2.1-nginx 反向 ...
- 【SSH项目实战】脚本密钥的批量分发与执行【转】
[TOC] 前言 <项目实战>系列为<linux实战教学笔记>第二阶段内容的同步教学配套实战练习,每个项目循序衔接最终将组成<Linux实战教学笔记>第二阶段核心教 ...
- Linux运维企业架构项目实战系列
Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...
- Jenkins CI&CD 自动化发布项目实战(下篇)
Jenkins CI&CD 自动化发布项目实战(下篇) 作者 刘畅 时间 2020-12-04 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...
- Jenkins CI&CD 自动化发布项目实战(上篇)
Jenkins CI&CD 自动化发布项目实战(上篇) 作者 刘畅 时间 2020-11-28 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...
随机推荐
- Ubuntu下安装配置SQLSERVER2017
摘要自微软官网: https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu 安装步骤: 1. 导入公共秘 ...
- udev规则(转)
Writing udev rules by Daniel Drake (dsd)Version 0.74 The most recent version of this document can al ...
- ZROI1119 【十一·联考】幸福
ZROI1119 [十一·联考]幸福 传送门 一道矩阵快速幂. #include<iostream> #include<cstdio> #include<algorith ...
- Linux上使用yum安装openjdk
来源:https://www.cnblogs.com/yaun1498078591/p/10368884.html 使用yum查找jdk: yum search java|grep jdk # yum ...
- Tomcat对取消post长度限制
1.Tomcat 默认的post参数的最大大小为2M, 当超过时将会出错,可以配置maxPostSize参数来改变大小. 从 apache-tomcat-7.0.63 开始,参数 maxPostSiz ...
- 【转帖】普通程序员如何转向AI方向
普通程序员如何转向AI方向 https://www.cnblogs.com/subconscious/p/6240151.html 眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智 ...
- thymeleaf是用于编写html模版的编程语言(工具语言)
一.编程语言 用于编写html模版的编程语言. thymeleaf一种命令式和声名式混合的寄生语言. html与thymeleaf的结合是dsl与命令式语言的结合. html与thymeleaf的结合 ...
- ajax 执行成功以后返回的数据走的是error方法而不是success方法的问题
今天在一个功能的时候发现写的ajax的方法执行后台代码成功后返回前台时执行的是error方法而不是success方法,代码如下 jQuery('#form').ajaxSubmit({ type: & ...
- js获取简单表单对象(1)
<form id="form"> <input type="text" name="username" value ...
- [個人紀錄] git 設定
-- git history git config --global alias.history=log --graph --all --pretty=format:'%C(bold blue)%H% ...