我想在 aws opsworks ec2 服务器上使用Chef-shell会话,以便我可以测试一些我想包含在自定义配方中的环境和实例特定代码。例如,我想查看node[:opsworks][:instance][:layers] 或 node[:opsworks][:instance][:public_dns_name] 等实例属性的输出以及我传递的数据使用自定义 json到 opsworks 堆栈。
我可以启动chef-shell,只是不知道如何使用它来访问opsworks 属性。
如果我通过 ssh 进入 opsworks ec2 实例,我可以访问像 node['ec2']['instance_id'] 这样的属性,但没有像 node['opsworks']['instance']['layers'] 这样的特定于 opsworks 的属性
root@mongodb1:/opt/aws/opsworks/current/bin# ./chef-shell
loading configuration: none (standalone session)
Session type: standalone
Loading......done.
This is the chef-shell.
Chef Version: 11.10.4
http://www.opscode.com/chef
http://docs.opscode.com/
run `help' for help, `exit' or ^D to quit.
Ohai2u ubuntu@mongodb1.localdomain!
chef > attributes_mode
chef:attributes > node['ec2']['instance_id']
=> "i-c1a98f2c"
chef:attributes > node['opsworks']['instance']['layers']
NoMethodError: undefined method `[]' for nil:NilClass
from …
Run Code Online (Sandbox Code Playgroud) 我工作的公司正在迁移到 AWS,因此我有机会开始调查他们提供的各种服务。OpsWorks 看起来非常适合推出大规模架构更改,但是“自定义”层包括 13 个无法删除的配方。
他们似乎做各种不同的事情,包括安装驱动器 /var/www/html
有谁知道我在哪里可以找到一些关于默认 OptsWorks 脚本正在做什么的文档,更重要的是他们为什么这样做?
我显然可以通读厨师脚本,但对他们来说是新手,就像阅读胡言乱语一样。
我在 VPC、多个安全组、内部名称服务的 route53 中有十几个不同大小的 EBS 支持的实例。
我想将整个内容克隆到另一个可用区。有没有人做过这样的事情?OpsWorks 似乎具有该功能。有人用过吗?
简而言之 - 操作系统 Amazon Linux 或 Ubuntu。一个 EC2 实例(或 OpsWorks 实例?)正在运行。每天启动第二个实例,使用最新的安全更新更新它,安装我的应用程序。关闭第一实例。每天重复...
AWS文档指出:
默认情况下,AWS OpsWorks 会在设置过程中自动安装最新更新... 我们建议您... 创建并启动新实例以替换您当前的在线实例。然后删除当前实例。新实例将在安装过程中安装最新的一组安全补丁。
如何自动化这个过程?
我知道,我可以通过 CLI 启动一个微实例来管理这个过程,但我更喜欢使用一些 AWS 内置工具,这样我就可以获得失败通知,添加一些冗余(如果 CLI 实例失败),一切都会继续处理新的 CLI / AWS API 版本等。
我错过了一些优雅的方法吗?
更新:能够使用现有的弹性 IP 是首选。