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 ...
随机推荐
- Venn 维恩图的绘制
使用在线绘图工具 https://bioinfogp.cnb.csic.es/tools/venny/index.html http://www.biovenn.nl/index.php http:/ ...
- UDF——输出每个单元的面法向量以及对应面上的节点
测试文件及源码下载链接: https://pan.baidu.com/s/1K-mD7-_ZkHUl21C2w3o-Bw 提取码: a7n2
- windows server 2008的系统备份
添加windows server backup功能,打开运行“服务器管理器”->“功能”选项, 点击“添加功能”,选择“Windows Server Backup”,选择下一步安装该功能. 点击 ...
- pandas 获取不符合条件的dataframe
pandas 获取不符合条件的dataframe 或将其过滤掉: df[df["col"].str.contains('this'|'that')==False] >> ...
- [转帖]分布式锁-redLock And Redisson
分布式锁-redLock And Redisson 2019-03-01 16:51:48 淹不死的水 阅读数 372更多 分类专栏: 分布式锁 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- Scala Collection Method
接收一元函数 map 转换元素,主要应用于不可变集合 (1 to 10).map(i => i * i) (1 to 10).flatMap(i => (1 to i).map(j =&g ...
- .Net Core3.0使用gRPC 和IdentityServer4
gRPC是什么gRPC是可以在任何环境中运行的现代开源高性能RPC框架.它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证.它也适用于分布式计 ...
- 排序算法Java代码实现(一)—— 选择排序
以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...
- .Net调用ffmpeg对视频截图
2019/10/27, .Net c#代码片段 摘要:借助ffmpeg对视频/图片截图.生成缩略图,使用命令行调用ffmpeg工具,支持Linux和Windows 网上很多版本都是需要等待4s的做法, ...
- 八.软件自动化和web测试
1.软件自动化测试 1.1 自动化测试的概念 自动化测试:就是通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动化的测试 软件测试自动化涉及到测试流程.测试体系.自动化编译以 ...