备忘录 厨师 文件复制
最近,因为另外一份工作很忙,所以我已经完全忘记了去年学习的厨师技巧。因此,我决定为自己记个备忘录。
(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
我終於能做我想做的事了!如果不定期去接觸,就很容易在到了中年時就忘記了呢。
公式手册