components/puppet/files/solaris/lib/puppet/type/nis.rb
author Drew Fisher <drew.fisher@oracle.com>
Thu, 29 May 2014 15:59:20 -0600
changeset 1921 489d0d0f656f
parent 1661 c59d67c9d1d7
permissions -rw-r--r--
18713757 'puppet resource service' outputs incorrect services 18820288 puppet describe --list outputs 'no documentation' incorrectly 18849968 Typos in link_properties and interface_properties docs 18856443 link_aggregation type provider duplicates lower_links 18859231 Typo in address_object and link_aggregation resource type docs 18859804 Typo in nis resource type 18859837 Typo in ldap resource type 18859156 Duplicate doc content for address_object resource type 18865233 ip_interface resource fails when ipmp or aggregations present
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     1
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     2
# CDDL HEADER START
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     3
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     4
# The contents of this file are subject to the terms of the
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     5
# Common Development and Distribution License (the "License").
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     6
# You may not use this file except in compliance with the License.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     7
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     8
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     9
# or http://www.opensolaris.org/os/licensing.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    10
# See the License for the specific language governing permissions
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    11
# and limitations under the License.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    12
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    13
# When distributing Covered Code, include this CDDL HEADER in each
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    14
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    15
# If applicable, add the following below this CDDL HEADER, with the
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    16
# fields enclosed by brackets "[]" replaced with your own identifying
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    17
# information: Portions Copyright [yyyy] [name of copyright owner]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    18
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    19
# CDDL HEADER END
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    20
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    21
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    22
#
1661
c59d67c9d1d7 17798202 Several providers return errors due to Ruby 1.9 changes.
Drew Fisher <drew.fisher@oracle.com>
parents: 1427
diff changeset
    23
# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    24
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    25
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    26
require 'ipaddr'
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    27
require 'puppet/property/list'
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    28
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    29
def valid_hostname?(hostname)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    30
    return false if hostname.length > 255 or hostname.scan('..').any?
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    31
    hostname = hostname[0...-1] if hostname.index('.', -1)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    32
    return hostname.split('.').collect { |i|
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    33
        i.size <= 63 and 
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    34
        not (i.rindex('-', 0) or i.index('-', -1) or i.scan(/[^a-z\d-]/i).any?)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    35
    }.all?
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    36
end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    37
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    38
Puppet::Type.newtype(:nis) do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    39
    @doc = "Manage the configuration of the NIS client for Oracle Solaris"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    40
1427
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    41
    newparam(:name) do
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    42
       desc "The symbolic name for the NIS domain and client settings to use.
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    43
              This name is used for human reference only."
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    44
        isnamevar
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    45
    end
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    46
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    47
    newproperty(:domainname) do
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    48
        desc "The NIS domainname"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    49
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    50
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    51
    newproperty(:ypservers, :parent => Puppet::Property::List) do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    52
        desc "The hosts or IP addresses to use as NIS servers.  Specify
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    53
              multiple entries as an array"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    54
1661
c59d67c9d1d7 17798202 Several providers return errors due to Ruby 1.9 changes.
Drew Fisher <drew.fisher@oracle.com>
parents: 1427
diff changeset
    55
        # ensure should remains an array
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    56
        def should
1661
c59d67c9d1d7 17798202 Several providers return errors due to Ruby 1.9 changes.
Drew Fisher <drew.fisher@oracle.com>
parents: 1427
diff changeset
    57
            @should
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    58
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    59
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    60
        def insync?(is)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    61
            is = [] if is == :absent or is.nil?
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    62
            is.sort == self.should.sort
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    63
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    64
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    65
        # svcprop returns multivalue entries delimited with a space
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    66
        def delimiter
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    67
            " "
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    68
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    69
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    70
        validate do |value|
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    71
            begin
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    72
                ip = IPAddr.new(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    73
            rescue ArgumentError
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    74
                # the value wasn't a valid IP address, so check the hostname
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    75
                raise Puppet::Error, "ypserver entry:  #{value} is 
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    76
                    invalid" if not valid_hostname? value
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    77
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    78
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    79
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    80
1427
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    81
    newproperty(:securenets) do
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    82
        desc "Entries for /var/yp/securenets.  Each entry must be a hash.
0b76fc564cd2 17284016 nis, ldap, and dns refreshed on every Puppet run
Virginia Wray <virginia.wray@oracle.com>
parents: 1409
diff changeset
    83
              The first element in the hash is either a host or a netmask.
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    84
              The second element must be an IP network address.  Specify
1921
489d0d0f656f 18713757 'puppet resource service' outputs incorrect services
Drew Fisher <drew.fisher@oracle.com>
parents: 1661
diff changeset
    85
              multiple entries as separate entries in the hash."
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    86
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    87
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    88
    newproperty(:use_broadcast) do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    89
        desc "Send a broadcast datagram requesting needed bind information for
1921
489d0d0f656f 18713757 'puppet resource service' outputs incorrect services
Drew Fisher <drew.fisher@oracle.com>
parents: 1661
diff changeset
    90
              a specific NIS server."
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    91
        newvalues(:true, :false)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    92
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    93
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    94
    newproperty(:use_ypsetme) do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    95
        desc "Only allow root on the client to change the binding to a desired
1921
489d0d0f656f 18713757 'puppet resource service' outputs incorrect services
Drew Fisher <drew.fisher@oracle.com>
parents: 1661
diff changeset
    96
              server."
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    97
        newvalues(:true, :false)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    98
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    99
end