美文网首页
puppt资源文件基础编写

puppt资源文件基础编写

作者: 小尛酒窝 | 来源:发表于2018-09-11 10:11 被阅读0次

    一、puppet资源

    puppet的资源文件通常以.pp结尾,资源是puppet 的基本元素,每个定义的资源都具有标题、类型及一系列的属性。
    puppet定义资源的默认语法为:

         type {'title':
          attribute1 => value1,
          atrribute2    => value2,
          ……
         }
    

    puppet的资源定义有三个特殊属性NAMEVAR、ensure和Provider,分别表示定义资源的名称、资源的目标状态和资源的管理接口。
    puppet的资源定义具有以下特性:
    1、puppet使用title在编译时区分每个资源,并使用命令变量(NAMEVAR)在执行时区分资源。
    2、在同一类资源中其资源的title和NAMEVAR都是唯一的。
    3、每个类型的资源都有部分属性具有默认值。
    4、如果在某一个资源中,不指定其NAMEVAR值,则默认使用其title的值。

    二、puppet的资源类型

    1、group

    此类型用于管理用户组资源,其常用的属性包括但不限于:

    name:用于设置用户组名。
    gid:用于蛇用户组ID。
    system:用于设置此组是否为系统组,true or false。
    ensure:目标状态,present or absent。
    members:成员用户。
    

    资源例子:

    group{'charles':
            ensure => present,
            name => 'charles',      
    }   
    

    2、user

    此类型用户定义用户资源,其属性包括但不限于:

    name:设置用户名。
    uid:设置UID。
    gid:设置基本组ID。
    groups:设置附加组,注意,不能包含基本组。
    comment:添加注释。
    expiry:设置用户账号过期时间。
    home:设置用户家目录。
    shell:设置用户的默认shell。
    system:设置该用户是否为系统 用户。
    ensure:设置该用户资源的状态。
    password:设置用户的登录密码,需为加密后的密码串。
    b
    

    资源例子:

    user{'charles':
            ensure => present,
            name => 'charles',
            shell => '/bin/bash',
            password => '$6$MFMKzg2y3Obrujqi$KOuDgG8kdE3v3Bl0I8LEpCe.LZOqM1ZNerBCPdfwBnmkDbC4ZhLJlXKd/yp/7JSu9PZ4JrCpVmWviCbK3Cyss.',
    }
    

    3、package

    用于管理包组资源,其属性包括但不限于:

    ensure:用于指明包资源的状态,包括:installed、present、latest、absent等等。
    name:指明包名。
    source:指定安装包的来源路径。
    provider:指定如何安装包,如rpm、yum等等的方式。
    

    资源例子:

    package{'nginx':
            ensure => latest,
            provider => yum,
            require => Package['epel']
    }
    
    package{'epel':
            ensure => latest,
            provider => yum,
            name => 'epel-release',
    }
    

    4、service

    用于管理服务资源,其属性包括但不限于:

    ensure:指定服务的运行状态,running or stopped。
    enable:指定服务是否开机自启动,true or false。
    name:指定服务名称。
    path:指定搜索启动脚本的路径。
    hasrestart:用于指定带有restart命令的脚本,如果没有restart选项,则会默认调用stop和start来组合完成重启动作。true or false
    restart:手动定义用于重启的命令,通常用于定义reload的操作。
    subscribe => File["配置文件路径"]:当配置文件改变的时候,重启服务。
    

    资源例子:

    service{'nginx':
            ensure => running,
            enable => true,
            name => 'nginx',
            require => Package['nginx'],
    }
    

    5、file

    用于管理文件资源,包括文件的属主、属组和访问权限等,其属性包括但不限于:

    ensure:指定文件的状态及类型,常用值:present、absent、file、directory、link。
    path:指定目标文件的路径。
    source:指定源文件路径。
    content:指定文件内容。
    target:指定符号链接的目标文件。
    owner:指定文件的属主。
    group:指定文件的属组。
    mode:指定文件的权限。
    atime/ctime/mtime:指定文件的时间戳属性。
    

    资源示例:

          file{'test.txt':
           path => '/tmp/test.txt',
           ensure => file,
           source => '/etc/fstab',
          }
    
          file{'test.symlink':
           path => '/tmp/test.symlink',
           ensure => link,
           target => '/tmp/test.txt',
           require => File['test.txt'],
          }
    
          file{'test.dir':
           path => '/tmp/test.dir',
           ensure => directory,
           source => '/etc/yum.repos.d/',
           recurse => true,
          }
    

    6、exec

    用于定义指定的命令资源,定义的命令必须可以重复执行多次并且不产生额外的错误。其常用属性包括:

    command:指明要运行的命令,不指定的话默认为namevar的值。
    cwd:切换到指定的目录下执行命令。
    creates:文件路径,仅此路径表示的文件不存在时,command方才执行。
    user/group:运行命令的用户身份。
    path:指定所使用命令的存放路径。
    onlyif:此属性指定一个命令,此命令正常(退出码为0)运行时,当前command才会运行。
    unless:此属性指定一个命令,此命令非正常(退出码为非0)运行时,当前command才会运行。
    refresh:重新执行当前command的替代命令。
    refreshonly:仅接收到订阅的资源的通知时方才运行。
    

    资源例子:

    exec{'useradd':
            command => 'useradd user1 ; echo "123456"| passwd --stdin user1',
            unless => 'id user1',
            path => '/bin:/sbin',
    }
    

    7、cron

    用于安装管理cron资源,每一个cron任务资源都必须提供 一个任务和至少一个周期属性,其常用属性包括:

    command:需要周期执行的任务命令。
    ensure:cron任务资源的状态。
    hour/minute/monthday/month/weekday:定义时间周期属性
    user:定义该cron任务以哪个用户身份运行。
    target:添加为指定用户的周期任务。
    name:cron周期任务的名称。
    

    资源示例:

        cron{'timesync':
         command => '/usr/sbin/ntpdate 10.1.0.1 &> /dev/null',
         ensure => present,
         minute => '*/3',
         user => 'root',
    

    8、notify

    向代理终端发送开始工作的通知信息,常用属性:

        message:信息内容
        name:信息名称;
    

    三、应用例子

    #配置安装nginx,并根据根据nginx.conf是否修改来决定是否需要重载nginx服务
    [root@localhost manifests]# vim nginx.pp 
    
    package{'nginx':
            ensure => latest,
            provider => yum,
            require => Package['epel'],
    }
    
    package{'epel':
            ensure => latest,
            provider => yum,
            name => 'epel-release',
    }
    
    file{'nginx.conf':
            path => '/etc/nginx/nginx.conf',
            source => '/root/manifests/nginx.conf',
            ensure => file,
            notify => Service['nginx'],
    }
    
    service{'nginx':
            ensure => running,
            enable => true,
            name => 'nginx',
            restart => '/usr/sbin/nginx -s reload',
            hasrestart => true,
    }
    
    
    Package['nginx'] -> File['nginx.conf'] -> Service['nginx']
    
    
    [root@localhost manifests]# puppet apply -v -d --noop nginx.pp
    [root@localhost manifests]# puppet apply -v -d nginx.pp
    

    相关文章

      网友评论

          本文标题:puppt资源文件基础编写

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