Project

General

Profile

Katello on Existing Foreman » History » Version 10

Stephen Benjamin, 05/18/2015 06:41 AM

1 1 Stephen Benjamin
h1. Katello on Existing Foreman
2 1 Stephen Benjamin
3 1 Stephen Benjamin
h2. Summary
4 1 Stephen Benjamin
5 1 Stephen Benjamin
Goals:
6 1 Stephen Benjamin
# I am a user and I want to install Katello on my existing production Foreman.
7 1 Stephen Benjamin
8 10 Stephen Benjamin
9 1 Stephen Benjamin
h2. Targeted Release
10 1 Stephen Benjamin
11 2 Stephen Benjamin
TBD
12 1 Stephen Benjamin
13 1 Stephen Benjamin
h2. Targeted Persona
14 1 Stephen Benjamin
15 1 Stephen Benjamin
[[Personas-SystemEngineer| Samuel - System Engineer]] - production Foreman
16 1 Stephen Benjamin
[[Personas-Developer| Daniel - Developer]] - development environment
17 1 Stephen Benjamin
18 10 Stephen Benjamin
h2. Design Requirements
19 2 Stephen Benjamin
20 2 Stephen Benjamin
Based on https://groups.google.com/forum/#!searchin/foreman-dev/katello$20on/foreman-dev/rMc1rWJMmBg/gTjEDJuD_a0J
21 1 Stephen Benjamin
22 10 Stephen Benjamin
h3. Installer
23 1 Stephen Benjamin
24 10 Stephen Benjamin
katello-installer is a separate independent installer.  As part of this effort, it will need to move to be a plugin of foreman-installer itself, that can be installed at a later point in time.  katello-installer will provide scenarios for katello and a katello proxy (capsule).  Scenarios will be able to both change the default settings of foreman's answers (taxonomies on, certificates, etc), but also provide its own additional top-level modules.
25 1 Stephen Benjamin
26 10 Stephen Benjamin
Scenario Tracker http://projects.theforeman.org/issues/10161
27 7 Stephen Benjamin
28 6 Stephen Benjamin
29 10 Stephen Benjamin
> !plugins2.png!
30 6 Stephen Benjamin
31 10 Stephen Benjamin
In order to do this, puppet-foreman_proxy needs to be moved to the top level of the installer, puppet-capsule largely stripped and renamed to indicate its new content-specific purpose (if not able to integrate into puppet-foreman_proxy itself).
32 1 Stephen Benjamin
33 1 Stephen Benjamin
34 10 Stephen Benjamin
h3. Certificates
35 1 Stephen Benjamin
36 10 Stephen Benjamin
Katello requires a number of certificates in order to deploy all of the services that are involved. For a summary of all the certs that are used and deployed see https://github.com/Katello/puppet-certs#certificates-overview. In order for us to install the Katello plugin alongside an existing Foreman installation, we will need to support deploying certs for new services, create new CA's (i.e. candlepin), while not breaking the existing Foreman infrastructure.
37 1 Stephen Benjamin
38 10 Stephen Benjamin
In order to accomplish this, we will abandon the current katello-certs-tool and puppet-certs, in favor of a puppet-openssl module.  Optionally, the katello and candlepin CA's can be issued by an existing CA (such as the Puppet CA), keeping the foreman infrastructure intact and functioning.
39 1 Stephen Benjamin
40 10 Stephen Benjamin
h3. Backends
41 1 Stephen Benjamin
42 10 Stephen Benjamin
Katello has three main backends that store data: Pulp, Candlepin and Elasticsearch. Some Katello objects have corresponding objects in one or all backends. 
43 1 Stephen Benjamin
44 10 Stephen Benjamin
# Foremans will need to have Organizations and Locations enabled and an initial one created (done with the scenario)
45 10 Stephen Benjamin
# Existing Organizations need to be created in Candlepin
46 10 Stephen Benjamin
# Users will need to be created in Pulp, and the anonymous_admin and anonymous_api_admin will need to have the correct remote_id to correspond to the Pulp admin user.
47 1 Stephen Benjamin
48 10 Stephen Benjamin
h3. Databases
49 1 Stephen Benjamin
50 10 Stephen Benjamin
Katello currently only tests and supports Postgres. 
51 1 Stephen Benjamin
52 10 Stephen Benjamin
Requirements:
53 1 Stephen Benjamin
54 10 Stephen Benjamin
# Support MySQL
55 1 Stephen Benjamin
56 10 Stephen Benjamin
  _It looks like it should be possible, we'd also need to add MySQL to our testing in Jenkins, and support in the installer.  Currently the migration fails with errors like this, so we will need modifications:_
57 1 Stephen Benjamin
58 10 Stephen Benjamin
  <pre>
59 10 Stephen Benjamin
Mysql2::Error: Error on rename of './katello/#sql-a3a_13' to './katello/katello_content_view_filters_repositories' (errno: 150): ALTER TABLE `katello_content_view_filters_repositories` CHANGE `filter_id` `content_view_filter_id` int(11) DEFAULT NULL/home/stbenjam/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.21/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `query'
60 10 Stephen Benjamin
  </pre>
61 1 Stephen Benjamin
62 10 Stephen Benjamin
# What about Candlepin?
63 10 Stephen Benjamin
  _Theoretically supports MySQL_
64 1 Stephen Benjamin
65 1 Stephen Benjamin
66 10 Stephen Benjamin
h3. Capsules
67 10 Stephen Benjamin
68 1 Stephen Benjamin
Katello deploys Capsules which includes deploying the following:
69 1 Stephen Benjamin
70 1 Stephen Benjamin
* Smart Proxy
71 1 Stephen Benjamin
* Pulp Node or Pulp Master
72 1 Stephen Benjamin
* Certs
73 1 Stephen Benjamin
* Qpid
74 1 Stephen Benjamin
* Puppet Master
75 1 Stephen Benjamin
76 10 Stephen Benjamin
Capsules upstream should just become Foreman Smart Proxies.  This means moving Foreman Proxy module to the top level, and either integrating existing Katello functions into plugins for the puppet-foreman_proxy module, or providing it externally through our own content-specific module (stripped down version of the existing capsule module).
77 1 Stephen Benjamin
78 10 Stephen Benjamin
79 3 Stephen Benjamin
h2. Documentation
80 3 Stephen Benjamin
81 1 Stephen Benjamin
h3. Bugs/RFE
82 1 Stephen Benjamin
83 1 Stephen Benjamin
* Tracker http://projects.theforeman.org/issues/7605