备忘录 厨师 文件复制

最近,因为另外一份工作很忙,所以我已经完全忘记了去年学习的厨师技巧。因此,我决定为自己记个备忘录。

 (Chef Server) OS: REHL 7.2 , Chef Server:12.6.0.1
 (Chef Client) OS: CentOS 7.2 , Chef Client:chef-12.10.24-1

在厨师中进行文件复制

以前,由于中间件安装介质的种类繁多且体积庞大,
我们使用了script资源并执行了scp命令。
然而,这种方式相当繁琐。
由于各个产品使用不同的cookbook,我们使用了data bag来实现以共同用户执行scp命令。

我正在创建一个关于安装PostgreSQL和Apache的cookbook,因此不再像以前那样进行操作,而是直接使用cookbook_file资源。
※本例中以PostgreSQL9.6.2为例。

将rpm文件复制到file目录中。

将以下文件存储在PostgreSQL的cookbook目录下的file/default目录中。

    • libxslt-1.1.28-5.el7.x86_64.rpm  ※前提ファイルセット

 

    • postgresql96-9.6.2-2PGDG.rhel6.x86_64.rpm

 

    • postgresql96-contrib-9.6.2-2PGDG.rhel6.x86_64.rpm

 

    • postgresql96-libs-9.6.2-2PGDG.rhel6.x86_64.rpm

 

    postgresql96-server-9.6.2-2PGDG.rhel6.x86_64.rpm

创建attribute.

default['psgl']['work_dir'] = '/tmp/_work'
default['psgl']['pre_package_name'] = ["libxslt-1.1.28-5.el7.x86_64.rpm"]
default['psgl']['psgl_package_name'] = [
    "postgresql96-libs-9.6.2-2PGDG.rhel6.x86_64.rpm",
    "postgresql96-9.6.2-2PGDG.rhel6.x86_64.rpm",
    "postgresql96-contrib-9.6.2-2PGDG.rhel6.x86_64.rpm",
    "postgresql96-server-9.6.2-2PGDG.rhel6.x86_64.rpm"
]

制作一本烹饪书

我想做的事情是:
– 把Chef Server上cookbook目录file/default中保存的文件复制到Chef Node上的/tmp/_work目录中
– 前提文件和PostgreSQL的文件分别复制

# ファイルのコピー先ディレクトリを作成
directory "#{node['psgl']['work_dir']}" do
    action:create
end

# PostgreSQLの前提ファイルをコピー
node['psgl']['pre_package_name'].each do |file|
    remote_file = File.join(node['psgl']['work_dir'],file)
    cookbook_file " copy #{file}" do
        source "#{file}"
        path "#{remote_file}"
    end
end

# PostgreSQLのモジュールをコピー
node['psgl']['psgl_package_name'].each do |file|
    remote_file = File.join(node['psgl']['work_dir'],file)
    cookbook_file " copy #{file}" do
        source "#{file}"
        path "#{remote_file}"
    end
end

我終於能做我想做的事了!如果不定期去接觸,就很容易在到了中年時就忘記了呢。

公式手册

广告
将在 10 秒后关闭
bannerAds