Hi Michael,

> I’d then recommend not to use the Puppet-CA, but a different method to create 
> and sign certificates for the Icinga2 cluster.
> https://github.com/icinga/puppet-icinga2#ca-and-certificates

My thought was, it may possible to sign / import / whatever the certificates 
from the CA which is used by Icinga master on the satellites (in that case, by 
the CA from Puppet master at the office), so that the satellites trusts the 
master and vise versa. The agents trusts only the satellites. For me it sounds 
like, what Lennart wrote:

(sorry, German only) 
https://blog.netways.de/2017/05/05/icinga-2-best-practice-teil-5-autosign-von-zertifikatsanfragen-in-verteilten-umgebungen/


> Opinions on that differ of course.

Otherwise I would use the "build in" CA from Icinga2.

>> 
>> The next thing is, that we don't have PuppetDB on DC1 and DC2 running, until 
>> we can make sure, that no passwords or other secrets are stored in plaintext 
>> for example in PuppetDB itself. It makes hiera-eyaml useless. I think, 
>> without PuppetDB I have to add just more lines to the manifests and/or hiera 
>> for creating the the correct agent -> satellite Icinga configs for DC1 and 
>> DC2. On the Icinga master side, I hope to find the right lines, to add the 
>> zones for the DC1 and DC2. The example4 
>> (https://github.com/Icinga/puppet-icinga2/tree/master/examples/example4) 
>> have some Puppet examples for have external zones. I'm not sure, how to 
>> integrate them in my setup, without breaking anything ;-)
>> 
> So to speak, the example uses exported resources and those require the 
> PuppetDB (just as explanation for others who can’t follow why it’s about 
> PuppetDB here).

Yes, but only on the Icinga master side. Problem is here especially with the 
PuppetDB, that it holds nearly all passwords in cleartext, while all sensitive 
datas are saved in hiera-eyaml on the file system :-/ I have at the moment zero 
ideas, how to handle it, like saving passwords for snmp3 and/or checks other 
user credentials for service checks. Databases for example are O.K, because 
MySQL/PSQL .... can use files for getting passwords ...
( I have also posted the question on puppet-users: 
https://groups.google.com/forum/#!topic/puppet-users/ebTUra_xosM )


> Are those Puppet servers in DC1 and DC2 standalone Puppet masters, or how do 
> they relate to your central Puppet-Master? That will be hard to maintain if 
> the Puppet agent would need to 2 different parent locations (I doubt this 
> works and is safe). From that point of view, all of these instances are 
> isolated on their own, and likely should be treated as such.

Yes, standalone. That is a requirement for the PCI DSS 
(https://www.pcisecuritystandards.org/minisite/en/).

Office -> PuppetMaster-Office
DC1 -> PuppetMaster-DC1
DC2 -> PuppetMaster-DC2

The only relation they have, is the same Git repo. Nothing more. So all three 
are completely independent.

> How does one manage these Puppet environments without Icinga 2 currently?

I hope, I understand the question ...

At the office we running all the test and dev servers, so adding a new server 
is like every Puppet workflow:

1. Sysops add new manifest to the Git and push it to the repo on the Puppet 
server at office
2. Than running Puppet agent on the new server ... and testing ..., after 
testing / development is fine
3. The manifest would be copied from ENV dev to ENV live and values like 
hostname / IP / firewall would be changed afterwards
4. git commit ...
3. On the DC the new production server would be installed
3. The Puppet git repo on DC gets synchronized (git pull via SSH and two faster 
auth (yubikey))
4. Now the manifest for the new live server is available on the DC Puppet master
5. Run Puppet agent ...

That is the workflow for all DCs we have. So all depends on the Git repo, but 
nothing more.

Back to Icinga2, it was first clear .... and saw no problems at the beginning, 
but It seems that a distributed/decentralized Icinga2 setup with Puppet isn't 
possible.

The only way I think is:

1. Keep office Icinga master as it is with Puppetdb and for dev/test env
2. Create Icinga2 satellite/agent Puppet profile, which installs the Icinga2 
and make use of Puppet templates for zone.conf/icinga2.conf
3. Create a plain directory which is recursive synchronized for Icinga2 
/etc/zones.d/<DC>/<hosts>.conf

In that way, I have to only get the certificate setup running in the correct 
way. The rest comes over the Icinga2 API, right?  It is far a way from a dream 
setup, but usable I think.

Any conclusions or other ideas ?

cu denny
_______________________________________________
icinga-users mailing list
icinga-users@lists.icinga.org
https://lists.icinga.org/mailman/listinfo/icinga-users

Reply via email to