美文网首页
DHCP服务 、Ansible

DHCP服务 、Ansible

作者: haoxi2018 | 来源:发表于2019-03-04 22:48 被阅读0次

    (第十七周作业)

    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

          本文链接:https://www.haomeiwen.com/subject/codiuqtx.html