[16] DevOps 自动化运维工具Chef----如何在本地运行cookbooks里面的配方?

原创 2017年06月21日 00:05:56

在这节中,我们将会分享如何在Chef的客户端通过chef-zero里运行cookbooks里面的配方。下面看具体的步骤,

@创建下面的文件结构

.chef

cookbooks

test.json


@ .chef目录下指定访问Chef-zero服务器的地址和私钥

.chef目录的下面的后缀名为.pem的私钥可以为任何格式正确的私钥文件

具体目录如下:


其中,knife.rb的内容如下:

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
#chef_server_url   'http://127.0.0.1:8889'
node_name         'dsc-5'
#cookbook_path            ["#{current_dir}/../cookbooks"]
client_key               "#{current_dir}/test.pem"


@ cookbooks目录下面的内容


其中metadata.rb如下:

name 'starter'
description 'A basic starter cookbook'
version '1.0.0'
maintainer 'Awesome Company, Inc.'
maintainer_email 'you@example.com'

其只要是cookbooks的说明

recipes里面包含一个default.rb

其内容如下:

# This is a Chef recipe file. It can be used to specify resources which will
# apply configuration to a server.

log "Welcome to Chef1111, #{node["starter_name"]}!" do
  level :info
end

dsc_script 'BackupUser' do
  code <<-EOH
    $user = 'backup33'
    $password = ConvertTo-SecureString -String "YourPass$(random)" -AsPlainText -Force
    $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $password

   User $user
     {
       UserName = $user
       Password = $cred
       Description = 'Backup operator'
       Ensure = "Present"
       Disabled = $false
       PasswordNeverExpires = $true
       PasswordChangeRequired = $false
     }
   EOH

  configuration_data <<-EOH
    @{
      AllNodes = @(
          @{
          NodeName = "localhost";
          PSDscAllowPlainTextPassword = $true
          })
      }
    EOH
end
# For more information, see the documentation: https://docs.chef.io/essentials_cookbook_recipes.html

@test.json的内容

在test.json里面可以制定chef client运行的任务清单,比如

{
	"run_list": [ "recipe[starter]" ]
}

上面会调用C:\chef\chef-repo\cookbooks\starter\recipes下默认的default.rb; 如果还有其他的rb文件,可以在starter后面加上::然后写上rb的文件名。

比如,

{
	"run_list": [ "recipe[starter:another]" ]
}


@运行命令

切换到c:\chef\chef-repo 目录,然后运行C:\chef\chef-repo>chef-client --local-mode -j .\test.json


@运行结果

运行结果如下:

C:\chef\chef-repo>chef-client --local-mode -j .\test.json
[2017-06-20T23:45:20+08:00] INFO: Auto-discovered chef repository at C:/chef/che
f-repo
[2017-06-20T23:45:21+08:00] INFO: Started chef-zero at chefzero://localhost:8889
 with repository at C:/chef/chef-repo
  One version per cookbook


Starting Chef Client, version 12.13.37
[2017-06-20T23:45:25+08:00] INFO: *** Chef 12.13.37 ***
[2017-06-20T23:45:25+08:00] INFO: Platform: i386-mingw32
[2017-06-20T23:45:25+08:00] INFO: Chef-client pid: 5984
[2017-06-20T23:45:36+08:00] INFO: HTTP Request Returned 404 Not Found: Object no
t found: chefzero://localhost:8889/nodes/dsc-5
[2017-06-20T23:45:36+08:00] INFO: Setting the run_list to ["recipe[starter]"] fr
om CLI options
[2017-06-20T23:45:36+08:00] INFO: Run List is [recipe[starter]]
[2017-06-20T23:45:36+08:00] INFO: Run List expands to [starter]
[2017-06-20T23:45:36+08:00] INFO: Starting Chef Run for dsc-5
[2017-06-20T23:45:36+08:00] INFO: Running start handlers
[2017-06-20T23:45:36+08:00] INFO: Start handlers complete.
[2017-06-20T23:45:36+08:00] INFO: HTTP Request Returned 404 Not Found: Object no
t found:
resolving cookbooks for run list: ["starter"]
[2017-06-20T23:45:36+08:00] INFO: Loading cookbooks [starter@1.0.0]
Synchronizing Cookbooks:
[2017-06-20T23:45:36+08:00] INFO: Storing updated cookbooks/starter/recipes/defa
ult.rb in the cache.
[2017-06-20T23:45:36+08:00] INFO: Storing updated cookbooks/starter/metadata.rb
in the cache.
  - starter (1.0.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 2 resources
Recipe: starter::default
  * log[Welcome to Chef1111, !] action write[2017-06-20T23:45:36+08:00] INFO: Pr
ocessing log[Welcome to Chef1111, !] action write (starter::default line 4)
[2017-06-20T23:45:36+08:00] INFO: Welcome to Chef1111, !

  * dsc_script[BackupUser] action run[2017-06-20T23:45:36+08:00] INFO: Processin
g dsc_script[BackupUser] action run (starter::default line 8)
[2017-06-20T23:45:38+08:00] WARN: Could not parse LCM output: Could not parse:
WARNING: Whatif is deprecated in this cmdlet. Please remove Whatif and try
again.

[2017-06-20T23:45:50+08:00] INFO: DSC resource configuration completed successfu
lly
    - converge DSC configuration 'BackupUser'
    - converge DSC resource Unknown DSC Resources by
[2017-06-20T23:45:50+08:00] INFO: Chef Run complete in 14.448 seconds


Running handlers:
[2017-06-20T23:45:50+08:00] INFO: Running report handlers
Running handlers complete
[2017-06-20T23:45:50+08:00] INFO: Report handlers complete
Chef Client finished, 2/2 resources updated in 29 seconds


C:\chef\chef-repo>


如果您觉得文章对您有帮助,请打赏支持本人的写作热情。

             @微信                                                                  @支付宝

             



版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Chef自动化部署框架的好处

使用Chef自动化部署框架的好处 (1)default.rb属性文件放在attributes目录下,灵活配置。 以前处理方式,java解析配置文件,生成shell脚本。 (2)php.ini.e...

[13] DevOps 自动化运维工具Chef----用chef-apply命令单机运行Chef配方(Receipt)

前面的12篇文章唠唠叨叨了如何安装Chef,如何查看Chef的数据库的密码,就是没有分享如何跑一个简单的Chef的配方去完成一项任务。这篇文章的目的就是让大家见识一下如何用Chef执行一个简单的任务。...

[9]DevOps 自动化运维工具Chef---如何解决在Window平台上执行一些knife子命令时所报的错误, knife search, knife status?

有的时候,我们需要window平台上执行一些knife子命令,比如,knife status --run-list 查看运行的run list的状态,knife search '*:*' -i 搜索所...

[14] DevOps 自动化运维工具Chef----如何用Chef调用PowerShell DSC的Resource

上一个章节讲述了如何用Chef-apply运行本地的一个chef的菜谱,这节笔者主要与大家分享如何把Chef和PowerShell DSC集成起来;我们知道,PowerShell在管理WIndow的机...

[7]DevOps 自动化运维工具Chef---如何安装Chef的Report?

Chef Report是一个非常有用的功能,它能检测所有的chef节点的任务执行情况: 成功,失败,终止。 而且能记录客户端节点的执行情况。Chef report的最低执行版本如下: Chef ser...

[15] DevOps 自动化运维工具Chef----chef-apply, chef-client,chef-zero,chef-solo区别

在使用Chef的时候,经常会遇到下面这些比较容易混淆的概念和命令:chef-apply, chef-client,chef-zero,chef-solo; 那么这四个命令到底有什么区别呢?...

[4] DevOps 自动化运维工具Chef----在Ubuntu上安装最新的Chef Client 12.13.37 并和Chef server关联起来

上一节分享了在Ubuntu上安装最新的Chef WorkStation 12.13.37,现在这一节给大家分享一下,Ubuntu上安装最新的Chef Client 12.13.37 并和Chef se...

使用Chef管理windows集群 | 运维自动化工具

但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰。试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半...

《Ansible自动化运维》—1.(ansible与devops)

ansible是基于Python语言实现的,由Paramiko和pyYAML两个关键模块构建的。             Paramiko使用Python写的一个模块,遵循SSH2协议,支持以加密和认...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[16] DevOps 自动化运维工具Chef----如何在本地运行cookbooks里面的配方?
举报原因:
原因补充:

(最多只允许输入30个字)