67 Commits

Author SHA1 Message Date
Bogdan Dobrelya
2e224ddaaa Add missing hiera interpolation calls
Complements [0], [1]

[0] https://review.openstack.org/#/c/526692
[1] https://review.openstack.org/#/c/561498

Related-bug: #1742915

Change-Id: I57859178988e92f926b6c41370afd8b0d1552831
Signed-off-by: Bogdan Dobrelya <bdobreli@redhat.com>
2018-04-18 10:10:46 +02:00
Steven Hardy
3a7baa8fa6 Convert ServiceNetMap evals to hiera interpolation
Since https://review.openstack.org/#/c/514707/ added the net_ip_map
to hieradata, we can look up the per-network bind IPs via hiera
interpolation instead of heat map_replace.

In some cases the ServiceNetMap lookup is used for other things,
but anywhere we make use of the "magic" translation via NetIpMap
is changed the same way.

This will enable more of the configuration data to be exposed per
role vs per node in a future patch (to simplify our ansible
workflow).

Co-authored-by: Bogdan Dobrelya <bdobreli@redhat.com>
Change-Id: Ie3da9fedbfce87e85f74d8780e7ad1ceadda79c8
2018-03-10 08:18:30 +00:00
Zuul
9604728016 Merge "Fix Redis TLS setup and its HA deployment" 2018-02-13 23:34:49 +00:00
Zuul
d01d2ea23e Merge "logging: use service_config_settings for fluentd" 2018-02-12 19:40:36 +00:00
Lukas Bezdicka
0cb5c847f3 Always evaluate step first in conditional
If we use variables defined in later step in conditional before
checking which step are we on we will fail.

Resolves: rhbz#1535457
Closes-Bug: #1743764
Change-Id: Ic21f6eb5c4101f230fa894cd0829a11e2f0ef39b
2018-02-09 17:12:29 +01:00
Lars Kellogg-Stedman
b20bce1bf0 logging: use service_config_settings for fluentd
The initial fluentd client implementation predates the introduction of
service_config_settings, and necessitated some invasive changes to
what is now common/serivces.yaml. This commit modifies existing
services to use the service_config_settings based configuration
mechanism supported by more recent versions of the fluentd support in
puppet-tripleo.

Partial-bug: #1715187
Depends-On: I3149902401d68d6fd236073a73a20f982d4b952a
Depends-On: I2b057190ec0e4e75ee4ee47ebe0164c2644e5ab7
Depends-On: Ie7df4b8b94cb0ae38096ab95800f211ef1cd8455
Change-Id: I28028ffa00df2da8e0478a551d3de89c3ee46e1f
2018-02-07 16:37:00 +01:00
Damien Ciabrini
91db2020df Fix Redis TLS setup and its HA deployment
This patch reverts the revert of Redis TLS [1,2], and update the
pacemaker redis template to configure Redis to encrypt the
replication traffic between Redis nodes.

[1] a3769c03175cb36f0066c173477749a26f767566
[2] ebc8414cd0c18426ff80d9d65c964e91a7fe447f

Depends-On: I6cc818973fab25b4cd6f7a0d040aaa05a35c5bb1
Change-Id: I7f7be4bba6d41c04385f074857c82507cc8c2617
Closes-Bug: #1737707
2018-02-05 14:05:12 +00:00
marios
dec003def8 Convert tags to when statements for Q major upgrade workflow
This converts "tags: stepN" to "when: step|int == N" for the direct
execution as an ansible playbook, with a loop variable 'step'.
The tasks all include the explicit cast |int.

This also adds a set_fact task for handling of the package removal
with the UpgradeRemovePackages parameter (no change to the interface)

The yaml-validate also now checks for duplicate 'when:' statements

Q upgrade spec @ Ibde21e6efae3a7d311bee526d63c5692c4e27b28
Related Blueprint: major-upgrade-workflow
[0]: 394a92f761/tripleo_common/utils/config.py (L141)
Change-Id: I6adc5619a28099f4e241351b63377f1e96933810
2018-01-08 13:57:47 +02:00
Pradeep Kilambi
a3769c0317 Redis replication does not work with TLS
Lets revert the tls support until we know it works.

Revert "TLS proxy for redis"

This reverts commit c2a93cf4c5d9d6b5ee0536380751a7a9540927cc.

Closes-bug: #1735259

Change-Id: I8157ce04617c094978175f3e4b3071bdf76362fe
2017-11-29 17:46:59 -05:00
Carlos Camacho
927495fe3d Change template names to queens
The new master branch should point now to queens instead of pike.

So, HOT templates should specify that they might contain features
for queens release [1]

[1]: https://docs.openstack.org/heat/latest/template_guide/hot_spec.html#queens

Change-Id: I7654d1c59db0c4508a9d7045f452612d22493004
2017-11-23 10:15:32 +01:00
Juan Antonio Osorio Robles
410e062aa0 mysql: Only set certificate specs if TLS everywhere is enabled
The conditional was missing.

Change-Id: Ie2617dd9dba1c49f37e82448b6bf229d127ed46a
Closes-Bug: #1729384
2017-11-01 18:17:33 +02:00
Emilien Macchi
cef3f5b1a6 Transform mongodb::server::bind_ip in an array
Because puppet-mongodb requires it to be an array and not a string.
See 23068c10a4

Co-Authored-By: Juan Antonio Osorio Robles <jaosorior@redhat.com>
Change-Id: I3c1ea4f350ecaea2efcf53ebf8ac26e4936054f7
Closes-Bug: #1726217
2017-10-23 14:04:57 +00:00
Damien Ciabrini
ff0a0dd987 mysql: expose IPv6 configuration to mysql puppet modules
When deploying on IPv6 networks, set a hiera key that can be consumed
by puppet modules to configure MySQL or Galera appropriately.

Currently, this is required for configuring SST encryption in Galera
when Internal TLS is enabled [1].

[1] I1d6ee8febb596b3ab9dcde3a85a028ee99b2798c

Change-Id: Ia857350ac451fc1bda6659d85019962d3a9d5617
Partial-Bug: #1719885
2017-09-29 22:32:07 +02:00
Martin André
c2a93cf4c5 TLS proxy for redis
Redis does not have TLS out of the box. Let's use a proxy container for
TLS termination.

bp tls-via-certmonger

Co-Authored-By: Juan Antonio Osorio Robles <jaosorior@redhat.com>
Change-Id: Ie2ae0d048a71e1b1b4edb10c74bc0395a1a9d5c9
Depends-On: I078567c831ade540cf704f81564e2b7654c85c0b
Depends-On: Ia50933da9e59268b17f56db34d01dcc6b6c38147
2017-08-31 05:28:20 +00:00
Juan Antonio Osorio Robles
0d8a3399eb TLS everywhere: Configure CA for mongodb
It wasn't being configured, thus making mongodb fail.

Change-Id: If0d7513aacfa74493a9747440fb97f915a77db84
Closes-Bug: #1710162
2017-08-11 16:07:13 +03:00
Pradeep Kilambi
ba2441932c Start redis service after upgrade
We install redis if its not already there, but we should also
ensure redis service is started in the next step 4.

related to issues we're seeing in I284de61bbefac9e9b37390650016643ffe38b5cc

Change-Id: Ic01db53ea8669f14e87f6987045b2be5a3480024
2017-08-02 15:53:18 -04:00
Jenkins
37099cce3d Merge "Make various password descriptions consistent" 2017-07-26 13:13:56 +00:00
Ben Nemec
c54e9b681b Make various password descriptions consistent
Since these are obviously global parameters they shouldn't specify
what will be using them because they are used in multiple places.

Change-Id: I5054c2d67dffe802e37f8391dd7bad4721e29831
Partial-Bug: 1700664
2017-07-21 18:39:28 +00:00
Emilien Macchi
0443e7a836 Revert "Disable systemd-networkd & systemd-resolved"
https://github.com/camptocamp/puppet-systemd/pull/32 is disabling by default the services so we don't have to control them via TripleO.

This reverts commit d24874c7b2625e25630534a86864a93050f661d3.

Change-Id: I4044f0b28b636c7a022912f6f24707bce22c8b98
Related-Bug: #1704160
2017-07-21 16:10:48 +00:00
Jenkins
07a5fe1ba6 Merge "Adds network/cidr mapping into a new service property" 2017-07-14 23:11:34 +00:00
Giulio Fidente
baf6eee501 Adds network/cidr mapping into a new service property
Makes it possible to resolve network subnets within a service
template; the data is transported into a new property ServiceData
wired into every service which hopefully is generic enough to
be extended in the future and transport more data.

Data can be consumed in service templates to set config values
which need to know what is the subnet where a deamon operates (for
example the Ceph Public vs Cluster network).

Change-Id: I28e21c46f1ef609517175f7e7ee19e28d1c0cba2
2017-07-14 13:44:04 +02:00
Emilien Macchi
d24874c7b2 Disable systemd-networkd & systemd-resolved
Latest commits in puppet-systemd enabled by default systemd-networkd and
systemd-resolved but we don't want to manage them for now in TripleO.
MySQL and MongoDB services were managing some systemd resources so now
we ensure that these 2 systemd services are disabled. In the future, we
might want and activate these services and revert that patch but for now
we want to disable them.

Change-Id: I42c6c9b643a71a0fbb1768bbae91e8bfa916ea00
Closes-Bug: #1704145
2017-07-14 04:10:55 +00:00
Jenkins
4ccce0e36b Merge "Add node's FQDN to mysql certificate request and CA file" 2017-06-21 15:06:38 +00:00
Pradeep Kilambi
94bd9b1e7d Add an upgrade task for redis service
Change-Id: Id7188ee8a4b05f0aa3c76c4da581e8c4f1b85d86
2017-06-20 15:37:56 -04:00
Juan Antonio Osorio Robles
53407bd8b7 Add node's FQDN to mysql certificate request and CA file
This will add the node's FQDN to the mysql certificate request
besides the VIP's FQDN which we already use. This is needed for
adding TLS to the replication traffic. The CA file was also added
as hieradata, since the path will be needed for the TLS
configuration.

bp tls-via-certmonger

Change-Id: I9252303b92a2805ba83f86a85770db2551a014d3
2017-06-19 12:45:37 +00:00
Jenkins
14276d79af Merge "TLS everywhere: configure mongodb's TLS settings" 2017-05-22 07:56:01 +00:00
Carlos Camacho
0a0e2ee629 Update the template_version alias for all the templates to pike.
Master is now the development branch for pike
changing the release alias name.

Change-Id: I938e4a983e361aefcaa0bd9a4226c296c5823127
2017-05-19 09:58:07 +02:00
Juan Antonio Osorio Robles
b743b82815 TLS everywhere: configure mongodb's TLS settings
This configures the mongodb server to use TLS in the internal network,
while also passing the necessary attributes to generate the needed cert
and key.

bp tls-via-certmonger

Depends-On: I85dda29bcad686372a74bd7f094bfd62777a3032
Change-Id: If6c603b074cfa7e122579cec29d034fd3312868d
2017-05-17 07:44:47 +00:00
Saravanan KR
a096ddab34 Add role specific information to the service template
When a service is enabled on multiple roles, the parameters for the
service will be global. This change enables an option to provide
role specific parameter to services and other templates.

Two new parameters - RoleName and RoleParameters, are added to the
service template. RoleName provides the role name of on which the
current instance of the service is being applied on. RoleParameters
provides the list of parameters which are configured specific to the
role in the environment file, like below:

  parameters_default:
      # Default value for applied to all roles
      NovaReservedHostMemory: 2048
      ComputeDpdkParameters:
          # Applied only to ComputeDpdk role
          NovaReservedHostMemory: 4096

In above sample, the cluster contains 2 roles - Compute, ComputeDpdk.
The values of ComputeDpdkParameters will be passed on to the templates
as RoleParameters while creating the stack for ComputeDpdk role. The
parameter which supports role specific configuration, should find the
parameter first in in the RoleParameters list, if not found, then the
default (for all roles) should be used.
Implements: blueprint tripleo-derive-parameters

Change-Id: I72376a803ec6b2ed93903cc0c95a6ffce718b6dc
2017-05-15 10:06:46 +05:30
Michele Baldessari
dde4f6d1cf Set puppet-redis managed_by_cluster_manager to true
Via https://github.com/arioch/puppet-redis/pull/192 puppet-redis grew
ulimit support also for pacemaker managed redis instances. To be able to
use that we need to set redis::managed_by_cluster_manager to true.

We also allow redis::ulimit to be configurable and we set a default of
10420 which was the default value before the above change.

Change-Id: I06129870665d7d3bfa09057fd9f0a33a99f98397
Depends-On: I4ffccfe3e3ba862d445476c14c8f2cb267fa108d
Closes-Bug: #1688464
2017-05-06 19:09:08 +02:00
Juan Antonio Osorio Robles
be4bc8f3f2 Internal TLS: Use specific CA file for mysql-client
Instead of using the CA bundle, this sets the mysql client configuration
file to use a specific file for validating the certificate of the
database server. This helps in two ways:

* Improves performance since validation will check only one certificate.
* Improves security since we're only the certificates signed by one CA
  are valid, instead of any certificate that the system trusts (which
  could include potentially compromised public certs).

Change-Id: I46f7cb6da73715f8f331337e0161418450d5afd7
Depends-On: I75bdaf71d88d169e64687a180cb13c1f63418a0f
2017-05-03 11:53:47 +00:00
Pradeep Kilambi
75d4883802 Add params to tweak memory limit on mongodb
The puppet-tripleo change was added in
Ie9391aa39532507c5de8dd668a70d5b66e17c891.

Closes-bug: #1656558

Change-Id: Ibe2e4be5b5dc953d8d4b14f680a460409db95585
2017-04-03 18:15:33 -04:00
Juan Antonio Osorio Robles
3bd4a3f94b MySQL: Use conditional instead of nested stack for TLS-specific bits
Usually a nested stack is used that contains the TLS-everywhere bits
(config_settings and metadata_settings). Nested stacks are very
resource intensive. So, instead of doing using nested stacks, this patch
changes that to use a conditional, and output the necessary
config_settings  and metadata_settings this way in an attempt to save
resources.

Change-Id: Ib7151d67982957369f7c139a3b01274a1a746c4a
2017-03-27 14:00:46 +03:00
Jenkins
0825568aa6 Merge "Enables increasing mariadb open files for noha deployments" 2017-03-26 04:01:31 +00:00
Michele Baldessari
b6a7ac432c Bind redis-sentinel to its network
We currently do not bind redis-sentinel to any IP:
redis      21144  0.0  0.0 142908  5908 ?        Ssl  07:43   0:11 /usr/bin/redis-sentinel *:26379 [sentinel]

Let's bind it to the same network as redis.

Change-Id: I8a782ae1db84eb614aa3995a1638a2f370e70d06
Partial-Bug: #1673715
2017-03-17 12:01:15 +01:00
Tim Rozet
900ddfb27f Enables increasing mariadb open files for noha deployments
There is currently an issue where the max open files limit is hit with
MariaDB in noha deployments, because it is defaulted to 1024 by system
limits.  In HA deployments the limit is bumped to 16384.  This patch
introduces a flag to be able to increase the limit to 16384 for noHA
deployments.

In the future we should change this to be an integer, and let the
operator decide the setting.  Since this setting is set in a different
path for HA, we would need to implement a change that allows setting
both (ha and nonha) via the same integer param.

Depends-On: Ia0907b2ab6062a93fb9363e39c86535a490fbaf6

Closes-Bug: #1648181
Related-Bug: #1524809

Change-Id: I95393fc798b833a8575afbff03ef74a839565c5e
Signed-off-by: Tim Rozet <trozet@redhat.com>
2017-03-08 15:33:16 -05:00
Juan Antonio Osorio Robles
3c3afe6b01 mysqlclient: Use actual parameter in puppet to set bind-address
It was using a hiera key, and fetching that from a hiera call in the
puppet manfiest. But we can remove that if we set it via hiera from
t-h-t.

Change-Id: I5af5ccb88e644f4dd25503d8e7a93796695d3039
2017-02-28 14:48:38 +02:00
Juan Antonio Osorio Robles
9a4b972737 Configure SSL connection for MySQL client via client config file
This uses the mysql client configuration file to configure if SSL should
be used for the connection if SSL in the internal network is enabled.

Change-Id: Ifd1a06e0749a05a65f6314255843f572d2209067
2017-02-28 07:48:52 +02:00
Michele Baldessari
90431683b5 Make the DB URIs host-independent for all services
When fixing LP#1643487 we added ?bind_address to all DB URIs.
Since this clashes with Cellsv2 due to the URIs becoming host
dependent, we need a new approach to pass bind_address to pymysql
that leaves the DB URIs host-independent.

In change Iff8bd2d9ee85f7bb1445aa2e1b3cfbff1f397b18 we first create a
/etc/my.cnf.d/tripleo.cnf file with a [tripleo] section with the correct
bind-address option.

In this change we make sure that the DB URIs will point to the added
file and to the specific section containing the necessary bind-address
option. We do introduce a new MySQLClient profile which will hold all
this more client-specific configuration so that this change can fit
better in the composable roles work. Also, in the future it might
contain the necessary configuration for SSL for example.

Note that in case the /etc/my.cnf.d/tripleo.cnf file does not exist
(because it is created via the mysqlclient profile), things keep on
working as usual and the bind-address option simply won't be set, which
has no impact on hosts where there are no VIPs.

Co-Authored-By: Damien Ciabrini <dciabrin@redhat.com>

Change-Id: Ieac33efe38f32e949fd89545eb1cd8e0fe114a12
Related-Bug: #1643487
Closes-Bug: #1663181
Closes-Bug: #1664524
Depends-On: Iff8bd2d9ee85f7bb1445aa2e1b3cfbff1f397b18
2017-02-17 17:22:42 +01:00
Steven Hardy
5353f1c7c9 Add nova service support for composable upgrades
Co-Authored-By: Mathieu Bultel <mbultel@redhat.com>
Co-Authored-By: Oliver Walsh <owalsh@redhat.com>

Change-Id: Iafad800a6819d7e75fdaab60d328999d3d3c037f
Partially-Implements: blueprint overcloud-upgrades-per-service
Related-Bug: #1662344
2017-02-14 23:23:33 +00:00
Steven Hardy
5750df8829 Add telemetry service support for composable upgrades
Change-Id: I62735676b45a881a7dac24171b26d88d6eb60d4a
Partially-Implements: blueprint overcloud-upgrades-per-service
2017-01-25 21:04:18 +00:00
Juan Antonio Osorio Robles
80086fd342 Add metadata settings for needed kerberos principals
These are only used for TLS-everywhere, and fills up the kerberos
principals that will need to be created for the certs used by the
overcloud. With this, the metadata hook will format these principals
correctly and will further pass them on to the nova metadata service.
Where they can be used if there's a plugin enabled.

bp tls-via-certmonger
bp novajoin

Change-Id: I873094bb69200052febda629fda698a7a782c031
2017-01-25 00:33:11 +02:00
marios
7ac5ef5f85 Adds a step0 for pre upgrade-init checks
Adds a step0 for any pre-upgrade checks. This migrates
some of the checks we have at the top of
extraconfig/tasks/major_upgrade_controller_pacemaker_1.sh

Checks for other services (and for the cluster) will follow
in separate commits.

Partially-Implements: blueprint overcloud-upgrades-per-service
Change-Id: I607f1fed68d7f11773484c3d7cb3e5af67465d57
2017-01-13 12:34:57 +00:00
Jenkins
0bfe7c9279 Merge "DB connection: prevent src address from binding to a VIP" 2017-01-04 16:43:34 +00:00
Damien Ciabrini
56ebc7e58d DB connection: prevent src address from binding to a VIP
When a service connects to the database VIP from the node hosting this
VIP, the resulting TCP socket has a src address which is by default
bound to the VIP as well. If the VIP is failed over to another node
while the socket's Send-Q is not empty, TCP keepalive won't engage and
the service will become unavailable for a very long time (by default
more than 10m).

To prevent failover issues, DB connections should have the src address
of their TCP socket bound to the IP of the network interface used for
MySQL traffic. This is achieved by passing a new option to the
database connection URIs. This option is available starting from
PyMySQL 0.7.9-2.

We use a new intermediate variable in hiera to hold the IP to be used
as a source address for all DB connections. All services adapt their
database URI accordingly.

Moreover, a new YAML validation check is added to guarantee that new
services will construct their database URI appropriately.

Change-Id: Ic69de63acbfb992314ea30a3a9b17c0b5341c035
Closes-Bug: #1643487
2017-01-03 10:56:02 +01:00
Steven Hardy
3c6ec654b4 Bump template version for all templates to "ocata"
Heat now supports release name aliases, so we can replace
the inconsistent mix of date related versions with one consistent
version that aligns with the supported version of heat for this
t-h-t branch.

This should also help new users who sometimes copy/paste old templates
and discover intrinsic functions in the t-h-t docs don't work because
their template version is too old.

Change-Id: Ib415e7290fea27447460baa280291492df197e54
2016-12-23 11:43:39 +00:00
Jenkins
5aa0c861a4 Merge "Use network-based fqdn entry from hiera instead of the custom fact" 2016-12-02 09:40:36 +00:00
Steven Hardy
dbece39f54 Initial support for composable upgrades with Heat+Ansible
This shows how we could wire in the upgrade steps using Ansible
as was previously proposed e.g in https://review.openstack.org/#/c/321416/
but it's more closely integrated with the new composable services
architecture.

It's also very similar to the approach taken by SpinalStack where
ansible snippets per-service were combined then run in a series of
steps using Ansible tags.

This patch just enables upgrade of keystone - we'll add support for
other patches in subsequent patches.

Partially-Implements: blueprint overcloud-upgrades-per-service
Change-Id: I39f5426cb9da0b40bec4a7a3a4a353f69319bdf9
2016-12-01 13:40:50 +00:00
Juan Antonio Osorio Robles
b4cd2ed1ee Use network-based fqdn entry from hiera instead of the custom fact
This changes how we get the network-based FQDNs for the specific
services, from using the custom fact, to the new hiera entries.

Change-Id: Iae668a5d89fb7bee091db4a761aa6c91d369b276
2016-12-01 11:18:23 +02:00
Dan Prince
7876851011 Hiera optimization: use a new hiera hook
This patch optimizes how we deploy hiera by using a new
heat hook specifically designed to help compose hiera
within heat templates. As part of this change:

 - we update all the 'hiera' software configurations to set the group to hiera
   instead of os-apply-config.

 - The new format uses JSON instead of YAML. The hook actually writes
   out the hiera JSON directly so no conversion takes place. Arrays,
   Strings, Booleans all stay in their native formats. As such we can avoid
   having to do many of the awkward string and list conversions in t-h-t to
   support the previous YAML formatting.

 - The new hook prefers JSON over YAML so upgrading users will have the
   new files prefered. (we will post a cleanup routine for the old files
   soon but this isn't a new behavior, JSON is now simply prefered.)

 - A lot of services required edits to account for default settings that
   worked in YAML that no longer work correctly in the native JSON
   format. In almost all these cases I think the resulting codes looks
   cleaner and is more explicit with regards to what is getting
   configured in hiera on the actual nodes.

Depends-On: I6a383b1ad4ec29458569763bd3f56fd3f2bd726b
Closes-bug: #1596373

Change-Id: Ibe7e2044e200e2c947223286fdf4fd5bcf98c2e1
2016-11-30 22:16:13 -05:00