(第十七周作业)
1、搭建DHCP服务,为局域网内用户提供10.1.1.0/24网段的IP,且租约期默认为48小时
1)准备两台服务器,都位于10.1.1.0/24网段内:
A机:DHCP服务端,
B机:客户端,从服务器获得IP地址。
2)A机服务端执行以下操作:
临时关闭防火墙
# service iptables stop
临时关闭 selinux
# setenforce 0
停止网络管理服务的开机自启动设置
# chkconfig --level 2345 NetworkManager off
关闭网络管理服务
# service NetworkManager stop
编辑网卡设置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
#表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理
NM_CONTROLLED=no
#服务器自身使用静态IP地址
BOOTPROTO=static
#配置地址为
IPADDR=10.1.1.88
#网关配置
GATEWAY=10.1.1.2
安装DHCP服务
# yum install dhcp* -y
配置DHCP服务
#vi /etc/dhcp/dhcpd.conf
allow bootp;
#默认租约时间(单位为秒,48小时为48*3600秒,即172800秒)
default-lease-time 172800;
#最大租约时间
max-lease-time 172800;
#syslog设置,可以到/var/log/syslog文件查看DHCP分配的日志
log-facility local7;
#子网和子网掩码
subnet 10.1.1.0 netmask 255.255.255.0 {
#客户端的默认网关
option routers 10.1.1.2;
#客户端的子网掩码
option subnet-mask 255.255.255.0;
#客户端的搜索域
option domain-name "magedu.com";
#客户端的域名服务器
option domain-name-servers 10.1.1.2;
#可供分配的IP范围
range dynamic-bootp 10.1.1.50 10.1.1.250;
}
重启 dhcp 服务
# service dhcpd restart
3)B机客户端执行以下操作进行测试
编辑网卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
#不通过网络管理器进行管理
NM_CONTROLLED=no
#通过dhcp服务来获得IP
BOOTPROTO=dhcp
重启网卡
# service network restart
查看B机的IP
# ifconfig
如果IP在10.1.1.50 和10.1.1.250之间,则测试成功。
2、在上述实验基础上,实现DHCP中继
DHCP中继:当DHCP客户机和DHCP服务器不在同一个网段时,由DHCP中继传递DHCP报文
在第1题实验的基础上,
准备一台DHCP中继器,这里称为C机,有两张网卡,一张与10.1.1.0/24网段连接,另一线与10.1.2.0/24网段连接,
还需要一台D机作为10.1.2.0/24网段的客户端服务器,用于验证DHCP中继服务。
1)在A机,修改DHCP服务配置文件,增加一下子网设置:
subnet 10.1.2.0 netmask 255.255.255.0 {
#客户端的默认网关
option routers 10.1.2.2;
option subnet-mask 255.255.255.0;
#客户端的搜索域
option domain-name "magedu.com";
#客户端的域名服务器
option domain-name-servers 10.1.1.2;
#可供分配的IP范围
range dynamic-bootp 10.1.2.50 10.1.2.250;
}
重启DHCP服务
#service dhcpd restart
2)在C机(DHCP中继服务器)执行的操作
安装DHCP服务
# yum install dhcp* -y
安装dhcp软件包,安装完之后,就已经包含了dhcp中继相关的程序和脚本等文件。配置dhcp中继服务器时,只需修改配置文件/etc/sysconfig/dhcrelay服务即可,作为路由器使用时,还需要开启服务器的路由转发功能。
#vi /etc/sysconfig/dhcrelay
#指定要监听网卡,不定义就是监听所有
INTERFACES="eth0 eth1"
#指定DHCP服务器的地址
DHCPSERVERS="10.1.1.88"
配置网卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.1.2
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
#不通过网络管理器进行管理
NM_CONTROLLED=no
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.2.1
NETMASK=255.255.255.0
GATEWAY=10.1.2.1
#不通过网络管理器进行管理
NM_CONTROLLED=no
开启服务器的路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
重启网卡
#service network restart
重启DHCP中继服务
#service dhcrelay restart
3)D机客户端执行以下操作进行测试
(D机执行与B机一样的操作,以验证IP是否能够获取到)
3、借助Ansible Playbook自动化搭建LNMP环境(可借助yum)
需要两台虚拟机
A机:Ansible服务器(192.168.56.70)
B机:安装LNMP环境(192.168.56.71)
1)A机安装Ansible服务
#yum install epel-release -y
#yum install ansible -y
2)A机执行以下操作:
创建资产文件
# vi /etc/ansible/hosts
[LNMPserver]
192.168.56.71
创建playbook文件
# vi /root/main.yml
---
- hosts: LNMPserver
#远程主机的用户
remote_user: root
tasks:
#安装Nginx(首先要下载 nginx-1.14.2.tar.gz 放到/root目录下)
- name: copy Nginx tar to remote hosts
copy: src=/root/nginx-1.14.2.tar.gz dest=/tmp/nginx-1.14.2.tar.gz
- name: tar x Nginx tar
shell: cd /tmp;tar -xf nginx-1.14.2.tar.gz
##安装依赖包
- name: install dependcy pakger
yum: name={{ item }} state=latest
with_items:
- openssl-devel
- pcre-devel
- gcc
##创建nginx用户的脚本后面给出
- name:copy useradd nginx shell
copy: src=/root/create_users.sh dest=/tmp/create_users.sh
-name: create user nginx
shell: /bin/bash /tmp/create_users.sh
##编译安装nginx
- name: install Nginx
shell: cd /tmp/nginx-1.14.2;./configure--user=nginx --group=nginx --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module --with-pcre;make&& make install
- name: startnginx service
shell: /usr/loal/nginx/sbin/nginx
#安装mysql
- name: Install MariaDB
yum: name={{ item }} state=present
with_items:
- mariadb-server
- mariadb
- name: Start MariaDB Service
service: name=mariadb state=started enabled=yes
#安装php-nginx
- name: install php-nginx
yum: name={{ item }} state=present
- php
- php-gd
- php-mysql
- gd
- php-fpm
- name: start php-fpm service
service: name=php-fpm state=started enabled=yes
编写创建nginx用户的脚本
# vi /root/create_users.sh
#!/bin/bash
id nginx >/dev/null 2>&1
if [ $? -ne 0 ];then
useradd nginx
fi
使用ansible-playbook进行检测:
#cd /root
# ansible-playbook main.yml --syntax-check
检测无误后执行
# ansible-playbook main.yml
4、采用Ansible Role方式自动化搭建LNMP
在第3题的基础上
在A机执行以下操作
# mkdir /root/LNMP
定义主文件
# vi /root/LNMP/lnmp.yaml
---
- name: "Install Nginx, Mysql and php-fpm"
hosts: lnmpServer
remote_user: root
roles:
- nginx
- mysql
- php-fpm
设置资产文件
# vi /root/LNMP/hosts
[lnmpServer]
192.168.56.32
创建roles目录及各应用子目录
# mkdir -p /root/LNMP/roles/{nginx,mysql,php-fpm}
(1)关于nginx子目录下创建相关的子目录
#mkdir -p /root/LNMP/roles/nginx/{handlers,tasks,templates,files}
#vi /root/LNMP/roles/nginx/handlers/main.yml
---
- name: restart nginx
shell: /usr/loal/nginx/sbin/nginx -s reload
# vi /root/LNMP/roles/nginx/tasks/main.yml
---
- name: copy Nginx tar to remote hosts
copy: src=nginx-1.14.2.tar.gz dest=/tmp/nginx-1.14.2.tar.gz
- name: tar x Nginx tar
shell: cd /tmp;tar -xf nginx-1.14.2.tar.gz
##安装依赖包
- name: install dependcy pakger
yum: name={{ item }} state=latest
with_items:
- openssl-devel
- pcre-devel
- gcc
##拷贝创建nginx用户的脚本
- name:copy useradd nginx shell
copy: src=create_users.sh dest=/tmp/create_users.sh
- name: create user nginx
shell: /bin/bash /tmp/create_users.sh
##编译安装nginx
- name: install Nginx
shell: cd /tmp/nginx-1.14.2;./configure--user=nginx --group=nginx --prefix=/usr/local/nginx--with-http_stub_status_module --with-http_ssl_module --with-pcre;make&& make install
- name: startnginx service
shell: /usr/loal/nginx/sbin/nginx
把nginx-1.14.2.tar.gz放入/root/LNMP/roles/nginx/files中
# cp /root/nginx-1.14.2.tar.gz /root/LNMP/roles/nginx/files
把create_users.sh放入/root/LNMP/roles/nginx/templates中
# cp /root/create_users.sh /root/LNMP/roles/nginx/templates
(2)关于mysql子目录下创建相关的子目录
#mkdir -p /root/LNMP/roles/mysql/{handlers,tasks,templates}
#vi /root/LNMP/roles/mysql/handlers/main.yml
---
- name: restart mariadb service
service: name=mariadb state=restarted
# vi /root/LNMP/roles/mysql/tasks/main.yml
---
- name: Install MariaDB
yum: name={{ item }} state=present
with_items:
- mariadb-server
- mariadb
- name: Start MariaDB Service
service: name=mariadb state=started enabled=yes
(3)关于php-fpm子目录下创建相关的子目录
#mkdir -p /root/LNMP/roles/php-fpm/{handlers,tasks,templates}
#vi /root/LNMP/roles/php-fpm/handlers/main.yml
---
- name: restart php-fpm service
service: name=php-fpm state=restarted
# vi /root/LNMP/roles/php-fpm/tasks/main.yml
---
- name: install php-nginx
yum: name={{ item }} state=present
- php
- php-gd
- php-mysql
- gd
- php-fpm
- name: start php-fpm service
service: name=php-fpm state=started enabled=yes
(4)检测并执行部署
#cd /root/LNMP
# ansible-playbook lnmp.yaml --syntax-check
检测无误后执行
# ansible-playbook lnmp.yaml