Initial parity cookbook
Supports installing multiple instances of Parity on the same machine, running on different ports Refs #15
This commit is contained in:
parent
ccbf11a407
commit
2f8de91008
9
site-cookbooks/kosmos-parity/CHANGELOG.md
Normal file
9
site-cookbooks/kosmos-parity/CHANGELOG.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# kosmos-parity CHANGELOG
|
||||||
|
|
||||||
|
## 0.1.0
|
||||||
|
- [Greg Karékinian] - Initial release of kosmos-parity
|
||||||
|
|
||||||
|
- - -
|
||||||
|
Check the [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) for help with Markdown.
|
||||||
|
|
||||||
|
The [Github Flavored Markdown page](http://github.github.com/github-flavored-markdown/) describes the differences between markdown on github and standard markdown.
|
53
site-cookbooks/kosmos-parity/README.md
Normal file
53
site-cookbooks/kosmos-parity/README.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# kosmos-parity Cookbook
|
||||||
|
|
||||||
|
This cookbook installs [Parity](https://parity.io/) nodes
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
### Platforms
|
||||||
|
|
||||||
|
- Ubuntu
|
||||||
|
|
||||||
|
### Chef
|
||||||
|
|
||||||
|
- Chef 12.1 or later
|
||||||
|
|
||||||
|
## Attributes
|
||||||
|
|
||||||
|
### kosmos-parity::default
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Key</th>
|
||||||
|
<th>Type</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Default</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><tt>['kosmos-parity']['home_path']</tt></td>
|
||||||
|
<td>String</td>
|
||||||
|
<td>The parity user's home path</td>
|
||||||
|
<td><tt>/home/parity</tt></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### kosmos-parity::default
|
||||||
|
|
||||||
|
Just include `kosmos-parity` in your node's `run_list`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name":"my_node",
|
||||||
|
"run_list": [
|
||||||
|
"recipe[kosmos-parity]"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## License and Authors
|
||||||
|
|
||||||
|
Authors:
|
||||||
|
|
||||||
|
* Greg Karékinian
|
1
site-cookbooks/kosmos-parity/attributes/default.rb
Normal file
1
site-cookbooks/kosmos-parity/attributes/default.rb
Normal file
@ -0,0 +1 @@
|
|||||||
|
node.default['kosmos-parity']['home_path'] = "/home/parity"
|
9
site-cookbooks/kosmos-parity/metadata.rb
Normal file
9
site-cookbooks/kosmos-parity/metadata.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
name 'kosmos-parity'
|
||||||
|
maintainer 'Kosmos'
|
||||||
|
maintainer_email 'mail@kosmos.org'
|
||||||
|
license 'All rights reserved'
|
||||||
|
description 'Installs/Configures kosmos-parity'
|
||||||
|
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
|
||||||
|
version '0.1.0'
|
||||||
|
|
||||||
|
depends 'ark'
|
56
site-cookbooks/kosmos-parity/recipes/default.rb
Normal file
56
site-cookbooks/kosmos-parity/recipes/default.rb
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#
|
||||||
|
# Cookbook Name:: kosmos-parity
|
||||||
|
# Recipe:: default
|
||||||
|
#
|
||||||
|
# Copyright 2017, Kosmos
|
||||||
|
#
|
||||||
|
# All rights reserved - Do Not Redistribute
|
||||||
|
#
|
||||||
|
|
||||||
|
group "parity" do
|
||||||
|
gid 72748
|
||||||
|
end
|
||||||
|
|
||||||
|
user "parity" do
|
||||||
|
system true
|
||||||
|
manage_home true
|
||||||
|
comment "parity user"
|
||||||
|
uid 72748
|
||||||
|
gid 72748
|
||||||
|
end
|
||||||
|
|
||||||
|
parity_version = "1.6.6"
|
||||||
|
parity_package_path = "#{Chef::Config[:file_cache_path]}/parity_#{parity_version}_amd64.deb"
|
||||||
|
remote_file parity_package_path do
|
||||||
|
source "https://d1h4xl4cr1h0mo.cloudfront.net/v#{parity_version}/x86_64-unknown-linux-gnu/parity_#{parity_version}_amd64.deb"
|
||||||
|
mode 0750
|
||||||
|
notifies :install, "dpkg_package[parity]", :immediately
|
||||||
|
end
|
||||||
|
|
||||||
|
dpkg_package "parity" do
|
||||||
|
source parity_package_path
|
||||||
|
end
|
||||||
|
|
||||||
|
parity_node "dev" do
|
||||||
|
config chain: "dev",
|
||||||
|
network_port: 30303,
|
||||||
|
json_rpc_port: 8545,
|
||||||
|
dapps_port: 8090,
|
||||||
|
ui_port: 8180
|
||||||
|
end
|
||||||
|
|
||||||
|
parity_node "testnet" do
|
||||||
|
config chain: "ropsten",
|
||||||
|
network_port: 30304,
|
||||||
|
json_rpc_port: 8546,
|
||||||
|
dapps_port: 8091,
|
||||||
|
ui_port: 8181
|
||||||
|
end
|
||||||
|
|
||||||
|
parity_node "mainnet" do
|
||||||
|
config chain: "homestead",
|
||||||
|
network_port: 30305,
|
||||||
|
json_rpc_port: 8547,
|
||||||
|
dapps_port: 8092,
|
||||||
|
ui_port: 8182
|
||||||
|
end
|
50
site-cookbooks/kosmos-parity/resources/node.rb
Normal file
50
site-cookbooks/kosmos-parity/resources/node.rb
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
provides :parity_node
|
||||||
|
|
||||||
|
property :name, String, name_property: true
|
||||||
|
property :config, Hash
|
||||||
|
|
||||||
|
action :enable do
|
||||||
|
node_name = name
|
||||||
|
|
||||||
|
base_path = "#{node['kosmos-parity']['home_path']}/.local/share/io.parity.ethereum/#{name}"
|
||||||
|
|
||||||
|
directory base_path do
|
||||||
|
recursive true
|
||||||
|
owner "parity"
|
||||||
|
group "parity"
|
||||||
|
end
|
||||||
|
|
||||||
|
%w(chains keys).each do |subfolder|
|
||||||
|
directory "#{base_path}/#{subfolder}" do
|
||||||
|
recursive true
|
||||||
|
owner "parity"
|
||||||
|
group "parity"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
config_file = "#{base_path}/config.toml"
|
||||||
|
|
||||||
|
template config_file do
|
||||||
|
source "config.toml.erb"
|
||||||
|
owner "parity"
|
||||||
|
group "parity"
|
||||||
|
variables config.merge(base_path: base_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
execute "systemctl daemon-reload" do
|
||||||
|
command "systemctl daemon-reload"
|
||||||
|
action :nothing
|
||||||
|
end
|
||||||
|
|
||||||
|
parity_service = "parity_#{node_name}"
|
||||||
|
template "/lib/systemd/system/#{parity_service}.service" do
|
||||||
|
source "parity.systemd.service.erb"
|
||||||
|
variables config_file: config_file
|
||||||
|
notifies :run, "execute[systemctl daemon-reload]", :delayed
|
||||||
|
notifies :restart, "service[#{parity_service}]", :delayed
|
||||||
|
end
|
||||||
|
|
||||||
|
service parity_service do
|
||||||
|
action [:enable, :start]
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,13 @@
|
|||||||
|
[parity]
|
||||||
|
chain = "<%= @chain %>"
|
||||||
|
base_path = "<%= @base_path %>"
|
||||||
|
[network]
|
||||||
|
port = <%= @network_port %>
|
||||||
|
[rpc]
|
||||||
|
# JSON-RPC over HTTP
|
||||||
|
port = <%= @json_rpc_port %>
|
||||||
|
[dapps]
|
||||||
|
# Dapps Server
|
||||||
|
port = <%= @dapps_port %>
|
||||||
|
[ui]
|
||||||
|
port = <%= @ui_port %>
|
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Parity Daemon (<%= @environment %>)
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/parity --config <%= @config_file %> $ARGS
|
||||||
|
User=parity
|
||||||
|
Group=parity
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
Loading…
x
Reference in New Issue
Block a user