使用Ansible工具搭建远程主机LAMP1.1准备工作

ansible命令:用于单一模块、任务执行

ansible-playbook:用于执行剧本,执行多个模块、任务(task)

- name: 描述信息

modile: 参数

一个playbokk是由多个play组成的列表

Play主要功能在于将事先归为一组的主机,装扮成事先通过ansible中task定义的角色。

/etc/ansible/role目录中

/{httpd,mysql,php} 三个角色{tasks|template|var|meta|files等--- play}

Files:存放需要同步到异地服务器的源码文件及配置文件

Handlers:当服务的配置文件发生变化时需要进行的操作,比如:重启服务,重新加载配置文件;

(notify模块与handers连用)

Notify:start httpd

Handlers:

- name:start httpd

Meta:角色定义,可留空;

Tasks:需要进行执行的任务;(调用具体模块)

Templates:用于执行安装的模板文件,一般为脚本

Vars:本次安装定义的变量

实例:使用playbook实现LAMP环境搭建

1.1 准备工作

停止httpd服务、卸载httpd服务

[root@ansible ~]# ansible all -m service -a "name=httpd state=stopped"

[root@ansible ~]# ansible all -m yum -a "name=httpd state=removed"

1.2 工作思路

安装apache

安装mysql

安装php

连接

提供测试页

1.3 创建文件夹

[root@ansible ~]# mkdir -p /etc/ansible/roles/{httpd,mysql,php}/{tasks,files,templates,vars,meta,default,handlers}

1.4 本地安装apache

[root@ansible etc]# yum install -y httpd

1.5 本地优化apache

[root@ansible etc]# vim /etc/httpd/conf/httpd.conf

将ServerName值改为本地值

启动apache的时候会自动做一次dns解析,需花费时间,将地址配置为本机就会节约很多时间。

1.6 将apache配置文件放入httpd角色中的files中

[root@ansible etc]# cp /etc/httpd/conf/httpd.conf /etc/ansible/roles/httpd/files/

1.7 将mysql配置文件复制到mysql角色下的files目录中

[root@ansible etc]# cp /etc/my.cnf /etc/ansible/roles/mysql/files/

1.8 前期准备工作

创建pre_main.yaml

[root@ansible ~]# cd /etc/ansible/roles/

[root@ansible roles]# vim pre_mani.yml

- name: clean the yum

shell: yum clean all /清除yum源缓存

- name: clean the iptables

shell: iptables –F /关闭iptables

- name: clean the firewalld

shell: systemctl stop firewalld /关闭防火墙

1.9 准备php测试页

切换目录至/etc/ansible/roles/httpd/files

[root@ansible ~]#cd /etc/ansible/roles/httpd/files

创建测试页

[root@ansible files]# vim index.php

1.10 为apache角色创建分镜头剧本

[root@ansible ~]# vim /etc/ansible/roles/httpd/tasks/main.yaml

- name: web server install

yum: name=httpd state=installed /安装apache

- name: provide test page

copy: src=index.php dest=/var/www/html /复制主页到远程主机

- name: delete apache config file

shell: rm -rf /etc/httpd/conf/httpd.conf /删除远程主机原始配置文件

- name: provide config file

copy: src=httpd.conf dest=/etc/httpd/conf/ /复制服务器配置文件到远程主机

- name: start httpd

service: name=httpd state=started /启动服务

src 默认从files目录找

安装apache之后系统会默认创建/var/www/html目录

1.11 为 mysql角色创建分镜头剧本

[root@ansible ~]# vim /etc/ansible/roles/mysql/tasks/main.yaml

- name: install mysql

yum: name=mariadb-server state=installed

- name: delete the config

shell: rm -rf /etc/my.cnf

- name: copy the config

copy: src=my.cnf dest=/etc/

- name: start mysql

service: name=mariadb state=started

1.12 为php角色创建分镜头剧本

[root@ansible ~]# vim /etc/ansible/roles/php/tasks/main.yaml

- name: install php

yum: name=php state=installed

- name: install php-mysql

yum: name=php-mysql state=installed

1.13 创建主镜头剧本

[root@ansible ~]# cd /etc/ansible/roles/

[root@ansible roles]# vim main.yaml

- name: LAMP build

remote_user: root

hosts: all

roles:

- httpd

- mysql

- php

1.14 执行剧本

[root@ansible roles]# ansible-playbook main.yaml