Content Development Introduction
Use this section to set up your environment for OneOps pack (circuits)/cookbook development on a Mac OS X or a
Linux system and to create a new component (cookbook) with its accompanying pack.
For both API and Circuit development you need access to a running OneOps deployment. To build your own deployment,
start with the Installation section.
For Circuit development, follow the instructions below.
Installation of OneOps is described in the
Setup and Configuration
The easiest way to start is to copy an existing cookbook and pack (for example, Tomcat) and develop on that. To do
it from scratch, follow the procedure described below:
- Select the circuit repo.
- To create a new component (cookbook), use the knife command.
Create a Cookbook
- To create a cookbook, enter the following:
Change to repo
Create new component called “mycomp”
$ bundle exec knife cookbook create mycomp
** Creating cookbook mycomp
** Creating README for cookbook: mycomp
** Creating CHANGELOG for cookbook: mycomp
** Creating metadata for cookbook: mycomp
Start defining the attributes
$ vi components/cookbooks/mycomp/metadata.rb
- Develop the recipes for your component (for example,
repair lifecycle actions).
- After you complete the cookbook design, create the pack under the
- Define its resources (components) and relationship between them. For more details, refer to an existing pack
(for example, Tomcat).
Create a Pack
To create a pack, follow these steps:
$ cd circuit-oneops-1/packs
$ cp tomcat.rb mypack.rb
$ vi mypack.rb
As in the case of chef recipes, a OneOps pack is also defined using a custom Ruby DSL with syntax like variable,
resource, relation, etc. Because the Pack DSL is a Ruby DSL, anything that can be done using Ruby can also be done
in a Pack, including if and case statements, using the include? Ruby method, etc.
For detailed information on how to develop a pack, see Add a Platform.
Create a Circuit
To create a circuit, refer to:
Confirming it Works
This section is useful if you are using a shared dev instance in your organization .
Before you start the testing, make sure you have access to your OneOps dev instance and have added your SSH keys
to the Inductor.
# Sync the metadata and packs.
# This is only required if there are any changes in the metadata or pack:
# Pack sync commands.
Export the OneOps CMS API.
export CMSAPI=http://<your OneOps instance>:8080/
bundle exec knife model sync mycomp
bundle exec knife pack sync packs/mypack --reload
Clear the Cache
curl http://<your OneOps instance>:8080/transistor/rest/cache/md/clear
Select the Repo.
Copy the Cookbook to the Corresponding Repo in the Inductor (/opt/oneops)
scp -r components/cookbooks/mycomp ooadmin@<your OneOps instance inductor>:/opt/oneops/circuit-oneops-1/current/components/cookbooks/
Copy the Pack File to the Corresponding Repo in the Inductor (/opt/oneops)
scp packs/mypack.rb ooadmin@<your OneOps instance inductor>:/opt/oneops/circuit-oneops-1/current/packs/
Add an icon image for the pack
- Component Icon : 128x128 PNG graphic - Add to circuit-oneops-1/components/cookbooks//doc (ex. apache_cassandra)
- Pack(Platform) Icon : 128x128 PNG graphic - Add to circuit-oneops-1/packs/doc/
- see https://github.com/oneops/circuit-oneops-1/tree/master/packs/doc
Testing via GUI
- Create a new Assembly and environment.
- Now you are ready to test the pack by creating a new assembly and env in
https://<your OneOps instance inductor>/.
Do not store any of your source code in oneops/inductor dev env. This env is upgraded every Wednesday as part of the regular OneOps release cycle.
- Create a pull request.
After you make sure that everything is working fine in the dev env, commit the code and create a pull request from your forked repo.