• Puppet学习之文件管理


    Puppet学习之文件管理

    使用puppet可以方便的进行文件管理,可以对文件的内容、属组、属主、权限等进行管理。可管理的文件类型包括普通文件、目录、链接文件。类型需要在ensure类型中明确指定。接下来从三个方面来介绍puppet文件管理的操作。

    一、    Puppet服务器端的配置

    1.   fileserver.conf文件的配置

    vim fileserver.conf 添加如下内容,在puppet master上创建一个文件存放目录

    [files]

    path /etc/puppet/files

    allow 10.1.4.0/24

    2.   site.pp文件的配置

    最好是更改其他的文件,然后用这个文件import进来,我这里为了测试简便就直接更改这个文件了,具体的如何操作见后面的实战部分。

    二、    Puppet文件管理重要参数介绍

    1.   backup参数

    指定在文件内容替换之前进行备份操作,可以备份在本地,也可以集中备份。集中远程备份的话可以使用filebucket(我们在后面的实战部分会进行详细介绍),这个备份的时候如果备份在本地可以指定备份的文件名。

    2.   content参数

    指定文件的内容(字符串),这个参数和sourcetarget参数冲突。

    3.   ensure参数

    这个参数指定是否创建、删除文件或者目录,有presentabsentfiledirectory等值。其中present会检查文件是否存在,不存在就会创建一个空文件。absent会删除文件或者目录,如果是目录需要指定recurse参数指定是否允许递归。如果指定的是其他的参数,则会创建连接文件,为了方便管理,建议在创建的时候使用ensure => link,并通过target参数指定文件。注意不能在windows系统上链接文件,

    4.   force参数

    该参数强制执行文件操作,进行如下操作的时候必须指定force参数

    Ø  purge 子目录

    Ø  用文件或者链接文件替换目录

    Ø  使用ensure => absent参数删除目录

    5.   group参数

    指定文件或者目录的属组,可以是组名或者组id,如果是windows的话属组和属主不能相同。

    6.   ignore参数

    这个参数指定在递归期间对符合指定的模式的文件操作将被忽略。

    7.   links参数

    这个参数指定处理文件期间如何处理链接文件,可以设置followmanage。在拷贝文件的时候,follow将会拷贝目标文件代替链接文件,manage将只会拷贝链接文件,ignore将会跳过。

    8.   mode参数

    这个参数用来指定文件或者目录的权限,puppet使用传统的unix权限方案,如果系统采用的权限方案不同的,puppet为这些系统将权限翻译成等价的权限,比如windows。这些权限可以是数字(r=4,w=2,x=1)也可以是字符(rwxst)

    9.   owner参数

    指定文件的属主,可以是用户名或是用户id,如果是windows的话属组和属主不能相同。

    10.  path参数

    指定文件管理的路径。Windows路径也使用/而不是\

    11.  purge参数

    这个参数会删除在master上不存在的文件,这个参数只有在管理目录的时候指定了recurse => true参数的时候才有意义。

    12.  recurse参数

    这个参数指定是否进行递归调用以及递归调用的深度,选项如下

    Ø  inf,true  ---在远程和本地都进行递归调用

    Ø  remote ---只在远程进行递归调用

    Ø  false ---不进行递归调用

    Ø  [0-9]+ ---true参数一样,但是限制递归调用目录的深度

    13.  source参数

    该参数指定将会被拷贝到指定位置的资源文件,值可以是指定远程文件的URIS或者本地的完整路径。可以指定多个sorce,这个参数和contenttarget冲突。

    14.  target参数

    这个参数指定创建链接文件的目标文件或者目录。

            上面只是列了一些常用的选项,更多选项请参考:

            http://docs.puppetlabs.com/references/latest/type.html#file

     

    三、    Puppet文件管理实战

    1.   使用filebucket进行远程备份。

    Ø  Filebucket的配置

    vim site.pp

    #添加filebucket的配置

    filebucket { 'main':

      server => "puppet.zhang.com",

      path   => false,

    }

    #让节点node1.zhang.com进行远程备份

    node 'node1.zhang.com'{

    file { "/etc/test2":

        source => "puppet://puppet.zhang.com/files/test2",

        backup => main

      }

    }

    如果没有设置bucketdir路径,那么默认文件保存在master$vardir/bucket路径。存储是以文件的md5值为目录,目录下面存储了文件的路径和内容,因此获取备份文件的内容和恢复都需要使用到文件的md5值。

    Ø  agent通过filebucket客户端获取文件的内容

    puppet filebucket get 4894b816078bcca4b63a6feaaf38aff8

    Ø  agent通过filebucket客户端还原文件的内容

    puppet filebucket restore /etc/test2 4894b816078bcca4b63a6feaaf38aff8

     

    2.   master上文件目录下的一个文件,复制到agent的指定位置,如果文件存在就先对文件进行备份然后覆盖。

    配置代码如下:

    node 'node1.zhang.com'{

            file {"/etc/test1":

            source => "puppet://puppet.zhang.com/files/test1",

            backup => ".bak_$uptime_seconds",

    }

    }

     

    3.   agent上的一个文件复制成另外一个文件,如果目的文件存在就先做备份再覆盖,并制定文件属master和权限。

    配置代码如下:

    node 'node1.zhang.com'{

    file {"/tmp/test2":

            source => "/etc/passwd",

            backup => ".bak_$uptime_seconds",

            group => nobody,

            owner => nobody,

            mode => 600;

    }

    }

     

    4.   agent上创建/tmp/test3,并制定文件的内容为test3

    配置代码如下:

    node 'node1.zhang.com'{

    file {"/tmp/test3":

        content => "test3"}

    }

     

    5.   agent上的某个文件或者文件夹建立软连接。

    node 'node1.zhang.com'{

    file {"/tmp/test4":

            ensure => link,

            target => "/var/log/messages";

            "/tmp/test5":

            ensure => link,

            target => "/var/log";

            }

    }

    也可以简写成如下代码:

    node 'node1.zhang.com'{

    file {"/tmp/test4":

            ensure => "/var/log/messages";

            "/tmp/test5":

            ensure => "/var/log";

            }

    }

     

    6.   如果agent/tmp/test6文件存在的话就删除掉agent上的/tmp/test6文件。

    node 'node1.zhang.com'{

    file {"/tmp/test6":

            ensure => absent;

            }

    }

     

    7.   如果agent上不存在/tmp/test7文件就在agent上创建/tmp/test6文件。

    node 'node1.zhang.com'{

    file {"/tmp/test7":

            ensure => present;

            }

    }

     

    8.   agent上创建目录。

    node 'node1.zhang.com'{

    file {

            "/tmp/test8":

            ensure => directory;

            }

    }

     

    9.   删除agent上面的目录。

    node 'node1.zhang.com'{

    file {  "/tmp/test9/":

            ensure => absent,

            force => true;

            }

    }

     

    10.  类似rsync,将master上面的文件目录同步到agent上,不同步含有log的文件和目录,如果含有子目录,递归到子目录,删除master上没有agent上有的文件或者目录。

    node 'node1.zhang.com'{

    file {"/tmp/test10":

            ensure  => directory,

            source  => "puppet://puppet.zhang.com/files/",

            ignore  => '*log*',

            recurse => true,

            purge   => true,

            force   => true,

    }

    }

     

     

    四、    参考文档

    http://docs.puppetlabs.com/references/stable/configuration.html

    http://docs.puppetlabs.com/references/stable/configuration.html

     

  • 相关阅读:
    winform窗口打开特效及窗口位置居中
    C# Installer Projects 打包工具
    C#
    MVVM模式开发WinForm-ReactiveUI
    C#实现类似百度网盘、育网校园云盘在“我的电脑”磁盘驱动器
    MVVM框架
    自制2048小游戏
    一个无限循环轮播图 HCCycleView
    Xcode插件及cocoapods不能正常使用的解决方法
    Runtime — 运行时机制
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7169807.html
Copyright © 2020-2023  润新知