ansible应用进阶playbook--LNMP+WordPress

前面写过了ansible常用的模块介绍,熟悉这些模块是基础,接下来我们通过一个实例来介绍playbook,planbook通过灵活的组装这些基础模块组件,可以实现各位复杂的业务操作场景

我们先来说明下playbook几个常用的概念

var:ansible里变量的概念就是重用某些定义值,主要是模板会用到

tasks:任务就是按照配置文件的定义去执行里面的操作

handles:当被操作的主机配置发送改变时要进行的操作,这里需要通知他,然后handles定义的动作会被执行,是task列表,这些task与前述的tasks并没有本质上的不同

roles:role在ansible可以将任务等模块化了,使他们复用性更强

下面我们通过一键安装LNMP环境并且部署WordPress博客来学习下(github上面的,里面的内容我们稍微修改下就行了)

[[email protected] wordpress-nginx]# tree
.
├── group_vars
│   ├── all
│   └── all.0
├── hosts
├── LICENSE.md
├── README.md
├── roles
│   ├── common
│   │   ├── files
│   │   │   ├── epel.repo
│   │   │   ├── iptables-save
│   │   │   └── RPM-GPG-KEY-EPEL-6
│   │   ├── handlers
│   │   │   └── main.yml
│   │   └── tasks
│   │       └── main.yml
│   ├── mysql
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── templates
│   │       └── my.cnf.j2
│   ├── nginx
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── templates
│   │       └── default.conf
│   ├── php-fpm
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── templates
│   │       └── wordpress.conf
│   └── wordpress
│       ├── tasks
│       │   └── main.yml
│       └── templates
│           └── wp-config.php
├── site.retry
└── site.yml

21 directories, 23 files

总的目录结构在上面,site.yml是总的入口
下面我们简单看下mysql部分,其他的基本都差不多

[[email protected] wordpress-nginx]# cat site.yml 
- name: Install WordPress, MySQL, Nginx, and PHP-FPM
  hosts: wordpress
  remote_user: root

  roles:
    - common
    - mysql
    - nginx
    - php-fpm
    - wordpress
    
[[email protected] wordpress-nginx]# cat hosts 
[wordpress]
172.16.80.127

[[email protected] wordpress-nginx]# cat roles/mysql/handlers/main.yml 
---
- name: restart mysql
  service: name=mysqld state=restarted
  
[[email protected] wordpress-nginx]# cat roles/mysql/tasks/main.yml 
---
- name: Install Mysql package
  yum: name={{ item }} state=present
  with_items:
   - mysql-server
   - MySQL-python
   - libsemanage-python

 # with_items:  代表下面的列出的变量都会传到item里面

- name: Create Mysql configuration file
  template: src=my.cnf.j2 dest=/etc/my.cnf
  notify:
  - restart mysql

- name: Start Mysql Service
  service: name=mysqld state=started enabled=yes
  
[[email protected] wordpress-nginx]# cat roles/mysql/templates/my.cnf.j2 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
port={{ mysql_port }}

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我们来运行下这个配置

[[email protected] wordpress-nginx]# ansible-playbook -i hosts  site.yml
[[email protected] wordpress-nginx]# ansible-playbook -i hosts  site.yml

PLAY [Install WordPress, MySQL, Nginx, and PHP-FPM] ****************************

TASK [setup] *******************************************************************
ok: [172.16.80.127]

TASK [common : Copy the EPEL repository definition] ****************************
ok: [172.16.80.127]

TASK [common : Create the GPG key for EPEL] ************************************
ok: [172.16.80.127]

TASK [common : Set up iptables rules] ******************************************
ok: [172.16.80.127]

TASK [mysql : Install Mysql package] *******************************************
ok: [172.16.80.127] => (item=[u‘mysql-server‘, u‘MySQL-python‘, u‘libsemanage-python‘])

TASK [mysql : Create Mysql configuration file] *********************************
ok: [172.16.80.127]

TASK [mysql : Start Mysql Service] *********************************************
ok: [172.16.80.127]

TASK [nginx : Install nginx] ***************************************************
ok: [172.16.80.127]

TASK [nginx : Copy nginx configuration for wordpress] **************************
changed: [172.16.80.127]

TASK [php-fpm : Install php-fpm and deps] **************************************
ok: [172.16.80.127] => (item=[u‘php‘, u‘php-fpm‘, u‘php-enchant‘, u‘php-IDNA_Convert‘, u‘php-mbstring‘, u‘php-mysql‘, u‘php-PHPMailer‘, u‘php-process‘, u‘php-simplepie‘, u‘php-xml‘])

TASK [php-fpm : Disable default pool] ******************************************
ok: [172.16.80.127]

TASK [php-fpm : Copy php-fpm configuration] ************************************
ok: [172.16.80.127]

TASK [wordpress : Download WordPress] ******************************************
changed: [172.16.80.127]

TASK [wordpress : Extract archive] *********************************************
changed: [172.16.80.127]
 [WARNING]: Consider using unarchive module rather than running tar

TASK [wordpress : Add group "wordpress"] ***************************************
changed: [172.16.80.127]

TASK [wordpress : Add user "wordpress"] ****************************************
changed: [172.16.80.127]

TASK [wordpress : Fetch random salts for WordPress config] *********************
changed: [172.16.80.127 -> localhost]
 [WARNING]: Consider using get_url or uri module rather than running curl

TASK [wordpress : Create WordPress database] ***********************************
changed: [172.16.80.127]

TASK [wordpress : Create WordPress database user] ******************************
changed: [172.16.80.127]

TASK [wordpress : Copy WordPress config file] **********************************
changed: [172.16.80.127]

TASK [wordpress : Change ownership of WordPress installation] ******************
changed: [172.16.80.127]

TASK [wordpress : Start php-fpm Service] ***************************************
changed: [172.16.80.127]

RUNNING HANDLER [nginx : restart nginx] ****************************************
changed: [172.16.80.127]

PLAY RECAP *********************************************************************
172.16.80.127              : ok=23   changed=12   unreachable=0    failed=0

截图看看

最后打开浏览器测试访问http://172.16.80.127

可以看到它自动跳转到安装界面http://172.16.80.127/wp-admin/install.php

时间: 2024-11-05 18:35:52

ansible应用进阶playbook--LNMP+WordPress的相关文章

ansible中的playbook

ansible中的playbook,将常用的模块任务,写入到playbook中,ansible方便快捷的管理主机. playbook使用yaml语言来书写,简单说下yaml语言. 1.YAML简介 YAML是一个可读性高的用来表达资料序列的格式.优点 YAML的可读性好 YAML和脚本语言的交互性好 YAML使用实现语言的数据类型 YAML有一个一致的信息模型 YAML易于实现 YAML可以基于流来处理 YAML表达能力强扩展性好 YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标

Ansible roles实现LAMP部署wordpress

ansible lamp ansible roles实现lamp安装wordpress 整个role目录的结构: .├── ansible.cfg├── hosts├── httpd-php_roles.retry├── httpd-php_roles.yml├── roles│   ├── httpd│   │   ├── files│   │   │   ├── mysql_wp.sh│   │   │   ├── wordpress-4.7.4-zh_CN.tar.gz│   │   │

ansible核心模块playbook介绍

ansible的playbook采用yaml语法,它简单地实现了json格式的事件描述.yaml之于json就像markdown之于html一样,极度简化了json的书写.在学习ansible playbook之前,很有必要把yaml的语法格式.引用方式做个梳理. 1.1 初步说明 以一个简单的playbook为例,说明yaml的基本语法. --- - hosts: 192.168.100.59,192.168.100.65 remote_user: root pre_tasks: - name

ansible连载之playbook使用

ansible-playbook的使用 1. ansible playbook介绍: 简单的说就是定义一个配置文件,文件中写入你需要安装的服务,配置文件,变量等信息,使他们可以按照事先定义好的机制完成一个任务.ansible Playbook使用YAML语法结构,所以配置阅读起来都比较简单. 2. ansible playbook组成结构: target section: 定义将要执行playbook的远程主机组 variable section: 定义playbook运行时需要使用的变量 ta

运维工具Ansible浅谈playbook讲解以及YAML语法和JSON语法的互化

引言:运维发展到今天已经远远不是传统的运维做一些重复性的枯燥工作,面对海量爆发的访问量,传统的运维已经很吃力,比如让你装三五台机器的系统,这个so easy,那要是安装几百上千台呢,还easy吗.我要安装nginx服务,并提供好相应的端口转发机制以及location资源访问机制,但是有多发十几台这样的机制,并且每台机器转发机制都不相同,这个对我们来说是一个不小的挑战,因此运维进入了自动化时代,自动化运维就显得重要了.因此本文就是围绕自动化运维工具Ansible来展开的. 一,为什么要使用Ansi

VPS+LNMP+WordPress搭建个人网站

1. 购买VPS 推荐网站:http://www.dangodango.com/,选购一个适合自己的,大部分可以使用支付宝支付,购买后会分配一个ip地址 2. 购买域名 推荐网站:http://www.freenom.com/en/index.html,购买后在网站后台把域名指向VPS的ip地址 3.安装LNMP 参考网址:https://lnmp.org/install.html  &  https://github.com/licess/lnmp 安装完成后,使用 lnmp vhost ad

ansible入门与playbook实战

一.简要 1.关于AnsibleAnsilbe是一个部署一群远程主机的工具;Ansilbe通过SSH协议实现远程节点和管理节点之间的通信.理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到.Ansible是python开发的,故依赖一些python库和组件,如:paramiko,PyYaml和jinja三个关键组件; 2.ansible架构:右边绿色部分是被管理的主机(虚拟机,物理机,云主机等)从以上架构图中可以看出ansible是由主机清单(配置),play

ansible中的playbook详解

首先简单说明一下playbook,playbook是什么呢?根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断等等,在shell脚本中是一条一条的命令,而在playbook中是一个一个的task任务构成,每个task任务可以看做shell中的一条命令:shell脚本一般只是在当前服务器上执行,而playbook则是在不止一个服务器上执行,因此playbook需要在其中指定运行该playbook的服务器名. p

mage Ansible学习2 Playbook

一.上集回顾 1.运维: 手动 --> 标准化 --> 工具化 --> 自动化 --> 智能化 2.工具化 OS Install:PXE ,Cobbler:Virutalization & Cloud Commputing OS Config: ansible,fabric,puppet,saltstack,chef,cfengine,... Deployment: fabric,ansible,... Task Exec:fabric,ansible,func,... 3