在厨师客户端运行期间,如何通过配方获得节点client.rb中某个键的值? 例: client.rb path_to_foo "/opt/foo" 食谱/ default.rb log config[:path_to_foo]
我是厨师新手。 我尝试使用Chef的PHP食谱来编写一个安装Zend OpCache(PHP 5.4,因为还没有内置)的配方。 我尝试使用php_pear php_pear "opcache" do package_name "ZendOpcache" action :install preferred_state "beta" zend_extensions ["opcache.so"] directives node['php']['opcache']['directives'] end 但生成的.ini文件具有ZendOpcache作为variables的前缀 ubuntu@webserver3:~$ cat /etc/php5/conf.d/ZendOpcache.ini ; configuration for php ZendOpcache module zend_extension=/usr/lib/php5/20100525/opcache.so ZendOpcache.revalidate_freq="60" ZendOpcache.enable_cli="1" ZendOpcache.memory_consumption="128" ZendOpcache.interned_strings_buffer="8" ZendOpcache.fast_shutdown="1" ZendOpcache.max_accelerated_files="4000" ZendOpcache.save_comments="0" 前缀应该是opcache 。 然后我尝试自己手动创build.ini文件 template "#{node['php']['ext_conf_dir']}/opcache.ini" do source "extension.ini.erb" cookbook "php" owner "root" group "root" mode "0644" variables(:name => […]
我想从远程存储库复制一个目录。 要复制单个设置/文件,我正在使用remote_file资源。 但是如果你想复制一个完整的目录,这是行不通的。 我也检查了厨师的remote_directory资源,但是只有当目录在食谱本身时才能使用。 任何想法如何实现相同。
我们有一个服务器将通过厨师食谱来pipe理。 系统的每个用户都使用/ etc / shadow中的散列进行configuration。 我们可以安全地将这些阴影哈希存储在我们的版本控制系统中,允许用户轻松更改密码,或者必须将它们存储在更安全的encryption数据包中?
厨师11.10.4环境在AWS Opsworks中运行。 我不知道如何通过节点属性node['aws-tag'][#{lyr}]传递下面的“each do”块variables的值“lyr”? 下面的代码块在02-06行而不是在07-14行。 [01] include_recipe "aws" [02] unless node['aws-tag']['tags'].empty? || node['aws-tag']['tags'].nil? [03] aws_resource_tag node['ec2']['instance_id'] do [04] tags(node['aws-tag']['tags']) [05] action :update [06] end [07] node['opsworks']['instance']['layers'].each do |lyr| [08] unless node['aws-tag'][#{lyr}].empty? || node['aws-tag'][#{lyr}].nil? [09] aws_resource_tag node['ec2']['instance_id'] do [10] tags(node['aws-tag'][#{lyr}]) [11] action :update [12] end [13] end [14] end [15] end 下面是chef-shell的结果,显示了上面代码中引用的属性的值: chef> node ['opsworks'] ['instance'] […]
我正在使用S3归档部署应用程序来部署从构build过程生成的zip文件。 当我部署到多个服务器时,我注意到部署生成的绝对path在每个服务器上都是不同的。 显然,path正在使用部署时间,每个服务器都可以在不同的秒钟内部署应用程序。 例如 Server1: /srv/www/myapp/releases/20141112085530/ Server2: /srv/www/myapp/releases/20141112085520/ Server3: /srv/www/myapp/releases/20141112085515/ 在应用程序中我有一个脚本,需要应用程序的绝对path,所以脚本的返回将不同于每个服务器。 如果我使用非粘性会话ELB,这将是不方便的。 我目前的解决scheme是脚本将需要为每个构build而不是绝对path生成的散列。 但是我只是想知道是否有最低限度的方式来configurationOpsWorks,使部署的绝对path与每个服务器的S3部署保持一致。
我正在尝试使用test-kitchen ,一个工具来testing厨师(虚拟机)的食谱。 然而,当遵循指南和做kitchen init –driver=kitchen-vagrant ,我得到以下错误: create .kitchen.yml append Rakefile create test/integration/default append .gitignore append .gitignore Fetching: kitchen-vagrant-0.15.0.gem (100%) ERROR: While executing gem … (Gem::FilePermissionError) You don't have write permissions into the /var/lib/gems/1.9.1 directory. 我不是以root身份运行。 我主要是一个Python程序员,并不太了解Ruby生态系统(和gem等)。 在python中,使用pip,可以使用–user将python软件包安装到用户的主目录。 或者使用本地存储的virtualenv 。 其他人也有类似的问题, 但build议/接受的答案有时是作为根源运行 。 我没有做任何事情。 我正在使用Ubuntu Linux 14.04.1可靠。 我想为虚拟机使用vagrant (但是如果需要的话,我可以更改为另一个本地虚拟机系统)。 有没有一个标准的方法来安装和使用用户的主目录中的附加Rubygem?
我的食谱configuration如下所示: package "scribe" do action :install end package "supervise-scripts" do action :install end remote_directory "/var/service/" do source "#{node['site-scribe']['cluster']}" end Dir.foreach('/var/service') do |dir| next if dir == '..'|| dir == '.' execute "svc_add_#{dir}" do command "/usr/bin/svc-add #{dir}" not_if { ::Dir.exists?("/var/service/#{dir}/supervise") } end execute "svc_restart_#{dir}" do command "/usr/bin/svc-restart #{dir}" end end 而现在我有奇怪的行为..第一次运行的服务器上的唯一执行remote_directory块Dir.foreach客户端,而不是启动Dir.foreach循环。 在第二次运行时,它通常执行Dir.foreach (总是在没有下载remote_directory时候)。 为什么我的循环Dir.foreach不启动,如果remote_directory块被执行? 同样的行为是当我删除not_if 。 […]
使用jenkins cookbook 2.2.2 ==> https://supermarket.chef.io/cookbooks/jenkins 我可以使用chef_zero provisioner与vagrant vm合作jenkins chef.run_list = [ 'recipe[jenkins::master]', ] 不过,我想安装插件,并从erb模板创build一个新的工作,我没有运气。 我的理解是,configuration应该通过与厨师零“chef.json”数据结构通过。 我已经尝试了很多很多的语法configuration,但没有运气(也没有错误,因为如果不正确,它会被忽略) 这里是安装一个不工作的插件的例子(我想问题是如何configuration一个chef资源在stream浪汉chef_zero规定内): chef.json = { 'java' => { 'jdk_version' => '7', }, 'jenkins' => { 'master' => { 'jenkins_plugin' => [ 'job-dsl', 'groovy', 'git', 'packer' ] } } } 我将非常感激,如果任何人都可以提供一个chef.json的stream浪的例子,stream浪者chef_zero供应商想要安装jenkins插件(和/或从erb模板或xml文件安装一个新的工作)
我在CentOS虚拟机上安装了主机服务器,并且在另一个CentOS虚拟机上有工作站设置。 当我运行'刀客户端列表'我看到: org-validator.pem和我的工作站没有列出。 我可以成功从我的工作站上的服务器获取ssl。 我已经下载了我的工作站上的org-validator.pem和admin.pem,并将它们正确放置。 我必须运行厨师客户端来生成新的密钥? 为什么我的工作站没有列出?