Prepare a deployment model for a new BIND9 server

Prepare a deployment model for a new BIND9 server

Before you deploy a BIND9 server as a back end for Designate, prepare your cluster deployment model as described below.

The example provided in this section describes the configuration of the deployment model with two BIND9 servers deployed on separate VMs of the infrastructure nodes.

To prepare a deployment model for a new BIND9 server:

  1. Open the classes/cluster/cluster_name/openstack directory in your Git project repository.

  2. Create a dns.yml file with the following parameters:

    classes:
    - system.linux.system.repo.mcp.extra
    - system.linux.system.repo.mcp.apt_mirantis.ubuntu
    - system.linux.system.repo.mcp.apt_mirantis.saltstack
    - system.bind.server.single
    - cluster.cluster_name.infra
    parameters:
      linux:
        network:
          interface:
            ens3: ${_param:linux_single_interface}
      bind:
        server:
          key:
            designate:
              secret: "${_param:designate_bind9_rndc_key}"
              algorithm: "${_param:designate_bind9_rndc_algorithm}"
          allow_new_zones: true
          query: true
          control:
            mgmt:
              enabled: true
              bind:
                address: ${_param:single_address}
                port: 953
              allow:
                - ${_param:openstack_control_node01_address}
                - ${_param:openstack_control_node02_address}
                - ${_param:openstack_control_node03_address}
                - ${_param:single_address}
                - 127.0.0.1
              keys:
                - designate
        client:
          enabled: true
          option:
            default:
              server: 127.0.0.1
              port: 953
              key: designate
          key:
            designate:
              secret: "${_param:designate_bind9_rndc_key}"
              algorithm: "${_param:designate_bind9_rndc_algorithm}"
    

    Note

    In the parameters above, substitute cluster_name with the appropriate value.

  3. In control.yml, modify the parameters section as follows. Add targets according to the number of the BIND9 servers that will be managed.

    designate:
      server:
        backend:
          bind9:
            rndc_key: ${_param:designate_bind9_rndc_key}
            rndc_algorithm: ${_param:designate_bind9_rndc_algorithm}
        pools:
          default:
            description: 'test pool'
            targets:
              default:
                description: 'test target1'
              default1:
                type: ${_param:designate_pool_target_type}
                description: 'test target2'
                masters: ${_param:designate_pool_target_masters}
                options:
                  host: ${_param:openstack_dns_node02_address}
                  port: 53
                  rndc_host: ${_param:openstack_dns_node02_address}
                  rndc_port: 953
                  rndc_key_file: /etc/designate/rndc.key
    

    Note

    In the example above, the first target that contains default parameters is defined in openstack/init.yml. The second target is defined explicitly. You can add more targets in this section as required.

  4. In init.yml, modify the parameters section.

    Example:

    openstack_dns_node01_hostname: dns01
    openstack_dns_node02_hostname: dns02
    openstack_dns_node01_deploy_address: 10.0.0.8
    openstack_dns_node02_deploy_address: 10.0.0.9
    openstack_dns_node01_address: 10.0.0.1
    openstack_dns_node02_address: 10.0.0.2
    mysql_designate_password: password
    keystone_designate_password: password
    designate_service_host: ${_param:openstack_control_address}
    designate_bind9_rndc_key: >
      4pc+X4PDqb2q+5o72dISm72LM1Ds9X2EYZjqg+nmsS7F/C8H+z0fLLBunoitw==
    designate_bind9_rndc_algorithm: hmac-sha512
    designate_domain_id: 5186883b-91fb-4891-bd49-e6769234a8fc
    designate_pool_ns_records:
      - hostname: 'ns1.example.org.'
        priority: 10
    designate_pool_nameservers:
      - host: ${_param:openstack_dns_node01_address}
        port: 53
      - host: ${_param:openstack_dns_node02_address}
        port: 53
    designate_pool_target_type: bind9
    designate_pool_target_masters:
      - host: ${_param:openstack_control_node01_address}
        port: 5354
      - host: ${_param:openstack_control_node02_address}
        port: 5354
      - host: ${_param:openstack_control_node03_address}
        port: 5354
    designate_pool_target_options:
       host: ${_param:openstack_dns_node01_address}
       port: 53
       rndc_host: ${_param:openstack_dns_node01_address}
       rndc_port: 953
       rndc_key_file: /etc/designate/rndc.key
    designate_version: ${_param:openstack_version}
    
    linux:
      network:
        host:
        dns01:
          address: ${_param:openstack_dns_node01_address}
          names:
          - ${_param:openstack_dns_node01_hostname}
          - ${_param:openstack_dns_node01_hostname}.${_param:cluster_domain}
        dns02:
          address: ${_param:openstack_dns_node02_address}
          names:
          - ${_param:openstack_dns_node02_hostname}
          - ${_param:openstack_dns_node02_hostname}.${_param:cluster_domain}
    
  5. In classes/cluster/cluster_name/infra/kvm.yml, add the following class:

    classes:
    - system.salt.control.cluster.openstack_dns_cluster
    
  6. In classes/cluster/cluster_name/infra/config.yml, modify the classes and parameters sections.

    Example:

    • In the classes section:

      classes:
      - system.reclass.storage.system.openstack_dns_cluster
      
    • In the parameters section, add the DNS VMs.

      reclass:
         storage:
           node:
             openstack_dns_node01:
               params:
                 linux_system_codename: xenial
                 deploy_address: ${_param:openstack_database_node03_deploy_address}
             openstack_dns_node01:
               params:
                 linux_system_codename: xenial
                 deploy_address: ${_param:openstack_dns_node01_deploy_address}
             openstack_dns_node02:
               params:
                 linux_system_codename: xenial
                 deploy_address: ${_param:openstack_dns_node02_deploy_address}
            openstack_message_queue_node01:
               params:
                 linux_system_codename: xenial
      
  7. Commit and push the changes.

Once done, proceed to deploy the BIND9 server service as described in Deploy a new BIND9 server for Designate.