Hi there,

I'm trying to understand the concepts underlying Foreman. In other words, 
"how is Foreman meant to be used?"

I've installed Foreman on a VM, played with it for a few hours and browsed 
through the documentation. For what Puppet is concerned, it looks like 
Foreman expects that you create Puppet classes on the Foreman UI, but you 
have to install modules from the command line, directly on the server. 
Later, you have to issue a command from to UI to sync the changes in the 
file system with the Foreman database.

To me, this seems a bit uncoherent. It's a bit like there is a piece in the 
middle not yet covered by the UI (i.e. the installation and/or creation + 
modification of modules). It's especially disturbing that you have to 
connect with SSH and run commands manually. You could say, this is mainly a 
cosmetic issue, a usability concern, but it's really an anti-pattern in 
continuous delivery. Servers should be locked down, nobody should be 
allowed to make uncontrolled changes. Since none of all the changes are 
under version control it's impossible to do rollbacks, and there's probably 
not even an audit trail for the changes to the host, neither for the Puppet 
configuration nor for changes to Foreman.

The whole situation feels a bit uncomfortable. The Puppet configuration is 
an important asset, it's source code that I want to have revisioned, 
quality checked (linted), and saved offsite in case the server burns down, 
so it can be restored reliably if needed. I could now install Git on the 
Foreman host, put /etc/puppetlabs/puppet/code/ under version control, and 
deploy changes via a CI server. The problem here is that I have to throw 
away any changes (to the Puppet configuration) made by Foreman, otherwise 
there will a polluted system, or even a merge conflict.

In other words, Forman is not made with version control in mind, is this 
correct? Can anyone confirm this finding?

Can we do something about it? - Think this: If the Foreman host were 
actually locked down the only way to introduce changes to the host were by 
changing the Puppet configuration that sets up the host itself (which, 
fortunately, is already under control of Puppet/Foreman). If the Puppet 
configuration on the host could be pushed to a Git repository, and changes 
to it be committed and deployed (automatically) back to the host then the 
situation would look more promising. The UI to modify the Puppet 
configuration would have to be read-only, or it would have to make changes 
directly on the main branch of the repository and commit (and push) them 
right after any modification.

Peter

-- 
You received this message because you are subscribed to the Google Groups 
"Foreman users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to foreman-users+unsubscr...@googlegroups.com.
To post to this group, send email to foreman-users@googlegroups.com.
Visit this group at https://groups.google.com/group/foreman-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to