Docs: Update docs to prepare for 0.10.0 release
[leap_platform.git] / platform.rb
1 # encoding: utf-8
2 #
3 # These are variables defined by this leap_platform and used by leap_cli.
4 #
5
6 Leap::Platform.define do
7   self.version = "0.10"
8   self.compatible_cli = "1.9".."1.99"
9
10   #
11   # the facter facts that should be gathered
12   #
13   self.facts = ["ec2_local_ipv4", "ec2_public_ipv4"]
14
15   #
16   # absolute paths on the destination server
17   #
18   self.hiera_dir  = '/etc/leap' if self.respond_to?(:hiera_dir)
19   self.hiera_path = '/etc/leap/hiera.yaml'
20   self.leap_dir   = '/srv/leap'
21   self.files_dir  = '/srv/leap/files'
22   self.init_path  = '/srv/leap/initialized'
23
24   #
25   # the named paths for this platform
26   # (relative to the provider directory)
27   #
28   self.paths = {
29     # directories
30     :hiera_dir        => 'hiera',
31     :files_dir        => 'files',
32     :nodes_dir        => 'nodes',
33     :services_dir     => 'services',
34     :templates_dir    => 'templates',
35     :tags_dir         => 'tags',
36     :node_files_dir   => 'files/nodes/#{arg}',
37
38     # input config files
39     :common_config    => 'common.json',
40     :provider_config  => 'provider.json',
41     :service_config   => 'services/#{arg}.json',
42     :tag_config       => 'tags/#{arg}.json',
43     :template_config  => 'templates/#{arg}.json',
44     :secrets_config   => 'secrets.json',
45     :cloud_config     => 'cloud.json',
46     :node_config      => 'nodes/#{arg}.json',
47
48     # input config files, environmentally scoped
49     :common_env_config    => 'common.#{arg}.json',
50     :provider_env_config  => 'provider.#{arg}.json',
51     :service_env_config   => 'services/#{arg[0]}.#{arg[1]}.json',
52     :tag_env_config       => 'tags/#{arg[0]}.#{arg[1]}.json',
53
54     # input templates
55     :provider_json_template        => 'files/service-definitions/provider.json.erb',
56     :eip_service_json_template     => 'files/service-definitions/#{arg}/eip-service.json.erb',
57     :soledad_service_json_template => 'files/service-definitions/#{arg}/soledad-service.json.erb',
58     :smtp_service_json_template    => 'files/service-definitions/#{arg}/smtp-service.json.erb',
59
60     # custom files
61     :custom_puppet_dir => 'files/puppet',
62     :custom_puppet_modules_dir => 'files/puppet/modules',
63     :custom_puppet_manifests_dir => 'files/puppet/manifests',
64     :custom_tests => 'files/tests',
65     :custom_bin => 'files/bin',
66
67     # output files
68     :facts            => 'facts.json',
69     :user_dir         => 'users/#{arg}',
70     :user_ssh         => 'users/#{arg}/#{arg}_ssh.pub',
71     :user_pgp         => 'users/#{arg}/#{arg}_pgp.pub',
72     :known_hosts      => 'files/ssh/known_hosts',
73     :authorized_keys  => 'files/ssh/authorized_keys',
74     :monitor_pub_key  => 'files/ssh/monitor_ssh.pub',
75     :monitor_priv_key => 'files/ssh/monitor_ssh',
76     :ca_key           => 'files/ca/ca.key',
77     :ca_cert          => 'files/ca/ca.crt',
78     :client_ca_key    => 'files/ca/client_ca.key',
79     :client_ca_cert   => 'files/ca/client_ca.crt',
80     :dh_params        => 'files/ca/dh.pem',
81     :acme_key         => 'files/ca/lets-encrypt-account.key',
82     :acme_info        => 'files/ca/lets-encrypt-account.json',
83     :commercial_key   => 'files/cert/#{arg}.key',
84     :commercial_csr   => 'files/cert/#{arg}.csr',
85     :commercial_cert  => 'files/cert/#{arg}.crt',
86     :dkim_priv_key    => 'files/mx/dkim.key',
87     :dkim_pub_key     => 'files/mx/dkim.pub',
88
89     :commercial_ca_cert       => 'files/cert/commercial_ca.crt',
90     :vagrantfile              => 'test/Vagrantfile',
91     :static_web_provider_json => 'files/web/bootstrap/#{arg}/provider.json',
92     :static_web_htaccess      => 'files/web/bootstrap/#{arg}/htaccess',
93     :static_web_readme        => 'files/web/bootstrap/README',
94
95     # node output files
96     :hiera             => 'hiera/#{arg}.yaml',
97     :node_ssh_pub_key  => 'files/nodes/#{arg}/#{arg}_ssh.pub',
98     :node_x509_key     => 'files/nodes/#{arg}/#{arg}.key',
99     :node_x509_cert    => 'files/nodes/#{arg}/#{arg}.crt',
100     :node_tor_priv_key => 'files/nodes/#{arg}/tor.key',
101     :node_tor_pub_key  => 'files/nodes/#{arg}/tor.pub',
102
103     # testing files
104     :test_client_key     => 'test/cert/client.key',
105     :test_client_cert    => 'test/cert/client.crt',
106     :test_openvpn_config => 'test/openvpn/#{arg}.ovpn',
107     :test_client_openvpn_template => 'test/openvpn/client.ovpn.erb'
108   }
109
110   #
111   # the files that need to get renamed when a node is renamed
112   #
113   self.node_files = [
114     :node_config, :hiera, :node_x509_cert, :node_x509_key, :node_ssh_pub_key
115   ]
116
117   self.monitor_username = 'monitor'
118
119   self.reserved_usernames = ['monitor', 'root']
120
121   self.default_puppet_tags = ['leap_base','leap_service']
122 end
123