apmec/doc/source/install/deploy_openwrt.rst
2018-05-07 13:25:56 +02:00

5.5 KiB

Deploying OpenWRT as MEA

Once apmec is installed successfully, follow the steps given below to get started with deploying OpenWRT as MEA.

1. Ensure Glance already contains OpenWRT image. Normally, Apmec tries to add OpenWRT image to Glance while installing via devstack. By running openstack image list to check OpenWRT image if exists. If not, download the image from OpenWRT official site. And upload this image into Glance by using the command specified below:

openstack image create OpenWRT --disk-format qcow2 \
                               --container-format bare \
                               --file /path_to_image/openwrt-x86-kvm_guest-combined-ext4.img \
                               --public

2. Create a yaml template named tosca-mead-openwrt-with-firewall-rules.yaml which contains basic configuration of OpenWRT and some firewall rules of OpenWRT. All contents of the template file shows below:

tosca_definitions_version: tosca_simple_profile_for_mec_1_0_0

description: OpenWRT with services

metadata:
  template_name: OpenWRT

topology_template:
  node_templates:
    VDU1:
      type: tosca.nodes.mec.VDU.Apmec
      capabilities:
        mec_compute:
          properties:
            num_cpus: 1
            mem_size: 512 MB
            disk_size: 1 GB
      properties:
        image: OpenWRT
        config:
          firewall: |
            package firewall

            config defaults
                option syn_flood '1'
                option input 'ACCEPT'
                option output 'ACCEPT'
                option forward 'REJECT'

            config zone
                option name 'lan'
                list network 'lan'
                option input 'ACCEPT'
                option output 'ACCEPT'
                option forward 'ACCEPT'

            config zone
                option name 'wan'
                list network 'wan'
                list network 'wan6'
                option input 'REJECT'
                option output 'ACCEPT'
                option forward 'REJECT'
                option masq '1'
                option mtu_fix '1'

            config forwarding
                option src 'lan'
                option dest 'wan'

            config rule
                option name 'Allow-DHCP-Renew'
                option src 'wan'
                option proto 'udp'
                option dest_port '68'
                option target 'ACCEPT'
                option family 'ipv4'

            config rule
                option name 'Allow-Ping'
                option src 'wan'
                option proto 'icmp'
                option icmp_type 'echo-request'
                option family 'ipv4'
                option target 'ACCEPT'
        mgmt_driver: openwrt
        monitoring_policy:
          name: ping
          parameters:
            count: 3
            interval: 10
          actions:
            failure: respawn

    CP1:
      type: tosca.nodes.mec.CP.Apmec
      properties:
        management: true
        anti_spoofing_protection: false
      requirements:
        - virtualLink:
            node: VL1
        - virtualBinding:
            node: VDU1

    VL1:
      type: tosca.nodes.mec.VL
      properties:
        network_name: net_mgmt
        vendor: Apmec

The above template file comes from two files. One is tosca-mead-openwrt.yaml <https://github.com/openstack/apmec/blob/master/samples/tosca-templates/ mead/tosca-mead-openwrt.yaml> and other one is tosca-config-openwrt-with-firewall.yaml <https://github.com/openstack/apmec/blob/master/samples/tosca-templates/ mead/tosca-config-openwrt-with-firewall.yaml>. In this template file, we specify the mgmt_driver: openwrt which means this MEAD is managed by openwrt driver <https://github.com/openstack/apmec/blob/master/apmec/ mem/mgmt_drivers/openwrt/openwrt.py>. This driver can inject firewall rules which defined in MEAD into OpenWRT instance by using SSH protocol. We can run cat /etc/config/firewall to confirm the firewall rules if inject succeed.

3.Create a sample mead:

apmec mead-create \
                   --mead-file tosca-mead-openwrt-with-firewall-rules.yaml \
                   <MEAD_NAME>

4.Create a MEA:

apmec mea-create --mead-name <MEAD_NAME> <NAME>

This MEA will contains all the firewall rules that MEAD contains by using 'cat /etc/config/firewall' in MEA.

5.Check the status:

apmec mea-list
apmec mea-show <MEA_ID>