432423423 发表于 2017-10-31 16:13:26

Puppet Host资源介绍(二十一)

puppet host资源
        host资源主要用来管理操作系统的hosts功能,hosts是一个没有扩展名的系统文件,基本作用就是关联ip和域名,当用户打开一个网址会首先从hosts解析,如果没有再去dns查找解析.linux系统存放在/etc/hosts文件中。

使用puppet describe host查看资源帮助信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# puppet describe host
host
====
Installs and manages host entries.For most systems, these
entries will just be in `/etc/hosts`, but some systems (notably OS X)
will have different solutions.
Parameters
----------
- **comment**
    A comment that will be attached to the line with a # character.
- **ensure**
    The basic property that the resource should be in.
    Valid values are `present`, `absent`.
- **host_aliases**
    Any aliases the host might have.Multiple values must be
    specified as an array.
- **ip**
    The host's IP address, IPv4 or IPv6.
- **name**
    The host name.
- **target**
    The file in which to store service information.Only used by
    those providers that write to disk. On most systems this defaults to
    `/etc/hosts`.
Providers
---------
    parsed






host资源常用的属性:
host {"资源标题":
        ensure
        ip
        name
        host_aliases
        target
}

资源参数意义:
ensure:确定该主机是否启用,值为present即启用,值为absent即关闭.
ip:主机的ip,支持ipv6.
name:主机名.
target:指定自定义host文件位置.


依旧使用old 三台机器演示:
192.168.30.134        puppet
192.168.30.131        sh-web1(web用途)
192.168.30.132        sh-proxy2(proxy)

之前文章写过定义admin模块为基础模块,所以将host资源加入admin模块即可使用。

说明:admin模块的init.pp文件声明admin::hosts类.

1
2
3
4
5
6
7
8
9
class admin {
    include admin::hosts
    exec {"selinux":
      command => "sed -i '/^SELINUX=/s/=.*/=disabled/g' /etc/sysconfig/selinux",
      path => ["/bin/","/sbin/","/usr/bin/","/usr/sbin/"],
      user => root,
      group => root,
    }
}




说明:admin的manifests资源目录下新建hosts.pp文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class admin::hosts {
    host {"puppet":
      ensure => present,
      ip => "192.168.30.134",
    }
    host {"sh-web1":
      ensure => present,
      ip => "192.168.30.131",
    }
    host {"sh-proxy2":
      ensure => present,
      ip => "192.168.30.132",
    }
    host {"test.example.com":
      ensure => present,
      host_aliases => ["db","web"],
      ip => "192.168.30.137",
    }
}






puppet 入口文件nodes.pp所有主机都继承admin.
说明:nodes.pp文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
node base {
    include admin
    }
    node /sh-(proxy|web)\d+/inherits base {
      case $::hostname {
            /sh-proxy\d+/: {
             include nginx
          }
         "sh-web1": {
            include cron
      }
      }
}






说明:下面的更新是没有加"host_aliases"别名的更新,为了区别别名效果.

1
2
3
4
5
6
7
8
9
10
# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for sh-proxy2.localdomain
Info: Applying configuration version '1507646562'
Notice: /Stage/Admin/Exec/returns: executed successfully
Notice: /Stage/Admin::Hosts/Host/ensure: created
Info: Computing checksum on file /etc/hosts
Notice: Finished catalog run in 0.23 seconds





1
2
3
4
5
6
7
8
9
10
# cat /etc/hosts
# HEADER: This file was autogenerated at Tue Oct 10 22:42:50 +0800 2017
# HEADER: by puppet.While it can still be managed manually, it
# HEADER: is definitely not recommended.
127.0.0.1localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1localhostlocalhost.localdomain localhost6 localhost6.localdomain6
192.168.30.134puppet
192.168.30.131sh-web1
192.168.30.132sh-proxy2
192.168.30.137test.example.com






说明:下面的更新是加了"host_aliases"别名的更新,为了区别别名效果.

1
2
3
4
5
6
7
8
9
10
# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for sh-proxy2.localdomain
Info: Applying configuration version '1507646705'
Notice: /Stage/Admin/Exec/returns: executed successfully
Notice: /Stage/Admin::Hosts/Host/host_aliases: defined 'host_aliases' as 'db web'
Info: Computing checksum on file /etc/hosts
Notice: Finished catalog run in 0.23 seconds






1
2
3
4
5
6
7
8
9
10
# cat /etc/hosts
# HEADER: This file was autogenerated at Tue Oct 10 22:45:07 +0800 2017
# HEADER: by puppet.While it can still be managed manually, it
# HEADER: is definitely not recommended.
127.0.0.1localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1localhostlocalhost.localdomain localhost6 localhost6.localdomain6
192.168.30.134puppet
192.168.30.131sh-web1
192.168.30.132sh-proxy2
192.168.30.137test.example.comdb web





总结:其实方法不止这一种,hosts文件上篇写了file资源用法,可以直接写一个/etc/hosts file文件,所有主机下发这个文件也可以起到配置/etc/hosts的效果.


页: [1]
查看完整版本: Puppet Host资源介绍(二十一)