zoukankan      html  css  js  c++  java
  • Chef学习之八:Resource cookbook_file学习

    References:http://docs.opscode.com/resource_cookbook_file.html


    现在开始照着官方文档的顺序,耐心学习每一个resource。第一个就是cookbook_file。我一直觉得用Resource来命名很是奇怪,其实这些应该是命令或者是功能(function),但是我想把他们命名成Resource是为了避免和命令行中的命令冲突吧。


    cookbook_file,这个资源是用来把文件拷贝到客户机器上的,本地文件(或者说Chef Server, Workstation的文件)是放在cookbooks\<some cookbook>\files\下面的。平台无关的文件可以放在default子目录中(注意,不能放在根目录里面),平台相关的放在相关平台的子目录,比如ubuntu,比如centos,这些就要看具体的文档了。


    好,一个简单例子:

    1. 创建文件:files\txt\file4test.txt

    2. recipe:

    cookbook_file "/home/ubuntu/myfile" do
      source "/txt/file4test.txt"
      action :create
    end
    

    验证:/home/ubuntu/myfile创建成功。

    注意:

    • 你不能把文件拷贝到不存在的目录下,这个资源是不会帮你创建文件夹的。
    • 如果你不修改客户端的文件,再次执行chef-client命令,该文件不会被重新拷贝。
    • 如果你修改了客户端文件,再次执行chef-client命令,该文件会被重置。

    该例子里面我用到了source属性,他的作用是告诉Chef,你的源文件在哪里,注意,不能写平台目录(或者default)。
    其实还有一个属性是path, 他的作用是告诉Chef,目标文件要被拷贝到哪里。官方文档的第一个例子是有问题的。下面是一个用path的例子,作用类似:

    cookbook_file "/home/ubuntu/apps/myfile2" do
      source "/txt/file4test.txt"
      path "/home/ubuntu/myfile2"
      action :create
      owner "ubuntu"
      group "ubuntu"
    end

    注意到,我既写了路径在资源名上,也写了路径在path里面,哪个获胜呢?path里面的那个!同时,我也使用了owner和group属性。其实,还有另外一些实用属性:backup(是否有多个备份),cookbook(引用另外一个cb里面的文件),mode。还有针对Windows平台的inherits,rights。

    好了,cookbook_file就这么多了。




  • 相关阅读:
    spring aop
    Linux进程管理命令
    逻辑卷管理-LVM(Logical Volume Manager)
    Linux磁盘与文件系统管理(二)
    Linux磁盘与文件系统管理(一)
    Linux后台运行和关闭、查看后台任务
    Linux用户管理及用户信息查询
    文件备份与压缩
    Liunx信息显示与文件搜索
    文本处理三剑客之 awk
  • 原文地址:https://www.cnblogs.com/puncha/p/3876921.html
Copyright © 2011-2022 走看看