Accenture is using Private Chef to be the management control point for the Accenture Cloud Platform, a cloud service broker, managing hybrid cloud environments and cloud-based applications for its clients and internal teams. In addition to broker services, the platform features tailored solutions for Infrastructure as a Services, Testing as a Service, Big Data Platforms, and various development offerings. During this presentation, Thomas Myers, the Chef lead on the project, will discuss the challenges and successes of integrating Chef into the Accenture Cloud Platform.
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Cookin’ up Hybrid Clouds: Chef and the Accenture Cloud Platform
1. Special of the Day
Cookin’ up hybrid clouds with Chef
and the Accenture Cloud Platform
Tom Myers
April 26, 2013
Accenture is using Private Chef as the
management control point for our newly launched
Accenture Cloud Platform.
3. Accenture Cloud Platform Ecosystem
Hybrid Environment
• Accenture’s Common Hosting Platform
• Broad Collection of IaaS Providers
- Azure, AWS, OpSource, Terremark…
Geographical Requirements
• Operating Environment across five continents
• Soon to be six (how soon will we need Antarctica?)
• Latency
Transition
• From Traditional Tools
• To Cloud-native tools
Balance
• Platform Agility vs Customer Stability
7. Demo
• VMs
– Private Chef A (PROD)
– Private Chef B (TEST)
– Node One (VM who has been recently provisioned)
• Data Bag Example Usage:
• Add Local IP (role)
• Query status data bag
• Environments
– Transfer (role) from PROD to TEST
– Rename (data bag) and Transfer (role) back to PROD
11. Data Bags
• Provide common interface for back-end systems
– Back-end processing
• Write node-specific data
• Assign role to run list (if needed)
• Poll Reports data bag for results
– Node processing
• Remove node-specific data
• Write result to Reports data bag
• Knife plug-in to support operations tasks
• Easy clean-up
12. Change Server Cookbook
Default
require 'fileutils'
# Everything runs in compile time. Will preempt any other recipes.
# never run this recipe twice
node.run_list.delete("role[change-server]")
node.run_list << 'role[change-server-done]'
node.save
# timestamp for backup/restore
timestamp = Time.now.strftime("%Y%m%d.%H%M%S")
hosts_file_path = node[:hosts][:config]
node_name = Chef::Config[:node_name]
rename_lists = data_bag('rename_nodes')
rename_lists.each do |list_name|
rename_list = data_bag_item('rename_nodes', list_name).raw_data
node_name = rename[node_name] || node_name
end
14. Change Server Cookbook
if File.exists?(client_pem_path)
log_success
node.name(node_name)
reload_chef_client_config(node)
# delete change-server-done from NEW server
node.run_list.delete('role[change-server-done]')
node.save
else
log_failure(client_rb_path, validation_pem_path, attributes_json_path)
restore(hosts_file_path, timestamp)
restore(client_rb_path, timestamp)
restore(validation_pem_path, timestamp)
restore(client_pem_path, timestamp)
# delete change-server-done from OLD server
node.run_list.delete('role[change-server-done]')
node.save
end
15. Other Interesting Ideas
Side by Side Chef (today)
• Allow existing chef-using clients to continue use of open-source chef
without interruption until on-boarding process is available.
Shared Org Cookbooks (coming soon)
• Allow organizations to share (read-only) cookbooks, enabling the
inherent separation between orgs while allowing for a shared baseline
of cookbooks.
Handlers as Alerts (coming soon)
• Use handlers to alert our back-end systems to provide and alternative
to polling mechanisms.
Web Service Knife Wrapper (coming soon)
• Consume the ability for knife to bootstrap a newly provisioned server
without requiring any modification to the default provider image via a
web service call from our back-end systems.