DHCP服务 、Ansible

(第十七周作业)

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 

你可能感兴趣的:(DHCP服务 、Ansible)