> On 22 Mar 2017, at 00:53, Alex Schultz <aschu...@redhat.com> wrote: > > On Tue, Mar 21, 2017 at 5:35 PM, John Dickinson <m...@not.mn> wrote: >> >> >> On 21 Mar 2017, at 15:34, Alex Schultz wrote: >> >>> On Tue, Mar 21, 2017 at 3:45 PM, John Dickinson <m...@not.mn> wrote: >>>> I've been following this thread, but I must admit I seem to have missed >>>> something. >>>> >>>> What problem is being solved by storing per-server service configuration >>>> options in an external distributed CP system that is currently not >>>> possible with the existing pattern of using local text files? >>>> >>> >>> This effort is partially to help the path to containerization where we >>> are delivering the service code via container but don't want to >>> necessarily deliver the configuration in the same fashion. It's about >>> ease of configuration where moving service -> config files (on many >>> hosts/containers) to service -> config via etcd (single source >>> cluster). It's also about an alternative to configuration management >>> where today we have many tools handling the files in various ways >>> (templates, from repo, via code providers) and trying to come to a >>> more unified way of representing the configuration such that the end >>> result is the same for every deployment tool. All tools load configs >>> into $place and services can be configured to talk to $place. It >>> should be noted that configuration files won't go away because many of >>> the companion services still rely on them (rabbit/mysql/apache/etc) so >>> we're really talking about services that currently use oslo. >> >> Thanks for the explanation! >> >> So in the future, you expect a node in a clustered OpenStack service to be >> deployed and run as a container, and then that node queries a centralized >> etcd (or other) k/v store to load config options. And other services running >> in the (container? cluster?) will load config from local text files managed >> in some other way. > > No the goal is in the etcd mode, that it may not be necessary to load > the config files locally at all. That being said there would still be > support for having some configuration from a file and optionally > provide a kv store as another config point. 'service --config-file > /etc/service/service.conf --config-etcd proto://ip:port/slug' > >> >> No wait. It's not the *services* that will load the config from a kv >> store--it's the config management system? So in the process of deploying a >> new container instance of a particular service, the deployment tool will >> pull the right values out of the kv system and inject those into the >> container, I'm guessing as a local text file that the service loads as >> normal? >> > > No the thought is to have the services pull their configs from the kv > store via oslo.config. The point is hopefully to not require > configuration files at all for containers. The container would get > where to pull it's configs from (ie. http://11.1.1.1:2730/magic/ or > /etc/myconfigs/). At that point it just becomes another place to load > configurations from via oslo.config. Configuration management comes > in as a way to load the configs either as a file or into etcd. Many > operators (and deployment tools) are already using some form of > configuration management so if we can integrate in a kv store output > option, adoption becomes much easier than making everyone start from > scratch. > >> This means you could have some (OpenStack?) service for inventory management >> (like Karbor) that is seeding the kv store, the cloud infrastructure >> software itself is "cloud aware" and queries the central distributed kv >> system for the correct-right-now config options, and the cloud service >> itself gets all the benefits of dynamic scaling of available hardware >> resources. That's pretty cool. Add hardware to the inventory, the cloud >> infra itself expands to make it available. Hardware fails, and the cloud >> infra resizes to adjust. Apps running on the infra keep doing their thing >> consuming the resources. It's clouds all the way down :-) >> >> Despite sounding pretty interesting, it also sounds like a lot of extra >> complexity. Maybe it's worth it. I don't know. >> > > Yea there's extra complexity at least in the > deployment/management/monitoring of the new service or maybe not. > Keeping configuration files synced across 1000s of nodes (or > containers) can be just as hard however. >
Would there be a mechanism to stage configuration changes (such as a QA/production environment) or have different configurations for different hypervisors? We have some of our hypervisors set for high performance which needs a slightly different nova.conf (such as CPU passthrough). Tim >> Thanks again for the explanation. >> >> >> --John >> >> >> >> >>> >>> Thanks, >>> -Alex >>> >>>> >>>> --John >>>> >>>> >>>> >>>> >>>> On 21 Mar 2017, at 14:26, Davanum Srinivas wrote: >>>> >>>>> Jay, >>>>> >>>>> the /v3alpha HTTP API (grpc-gateway) supports watch >>>>> https://coreos.com/etcd/docs/latest/dev-guide/apispec/swagger/rpc.swagger.json >>>>> >>>>> -- Dims >>>>> >>>>> On Tue, Mar 21, 2017 at 5:22 PM, Jay Pipes <jaypi...@gmail.com> wrote: >>>>>> On 03/21/2017 04:29 PM, Clint Byrum wrote: >>>>>>> >>>>>>> Excerpts from Doug Hellmann's message of 2017-03-15 15:35:13 -0400: >>>>>>>> >>>>>>>> Excerpts from Thomas Herve's message of 2017-03-15 09:41:16 +0100: >>>>>>>>> >>>>>>>>> On Wed, Mar 15, 2017 at 12:05 AM, Joshua Harlow >>>>>>>>> <harlo...@fastmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> * How does reloading work (does it)? >>>>>>>>> >>>>>>>>> >>>>>>>>> No. There is nothing that we can do in oslo that will make services >>>>>>>>> magically reload configuration. It's also unclear to me if that's >>>>>>>>> something to do. In a containerized environment, wouldn't it be >>>>>>>>> simpler to deploy new services? Otherwise, supporting signal based >>>>>>>>> reload as we do today should be trivial. >>>>>>>> >>>>>>>> >>>>>>>> Reloading works today with files, that's why the question is important >>>>>>>> to think through. There is a special flag to set on options that are >>>>>>>> "mutable" and then there are functions within oslo.config to reload. >>>>>>>> Those are usually triggered when a service gets a SIGHUP or something >>>>>>>> similar. >>>>>>>> >>>>>>>> We need to decide what happens to a service's config when that API >>>>>>>> is used and the backend is etcd. Maybe nothing, because every time >>>>>>>> any config option is accessed the read goes all the way through to >>>>>>>> etcd? Maybe a warning is logged because we don't support reloads? >>>>>>>> Maybe an error is logged? Or maybe we flush the local cache and start >>>>>>>> reading from etcd on future accesses? >>>>>>>> >>>>>>> >>>>>>> etcd provides the ability to "watch" keys. So one would start a thread >>>>>>> that just watches the keys you want to reload on, and when they change >>>>>>> that thread will see a response and can reload appropriately. >>>>>>> >>>>>>> https://coreos.com/etcd/docs/latest/dev-guide/api_reference_v3.html >>>>>> >>>>>> >>>>>> Yep. Unfortunately, you won't be able to start an eventlet greenthread to >>>>>> watch an etcd3/gRPC key. The python grpc library is incompatible with >>>>>> eventlet/gevent's monkeypatching technique and causes a complete program >>>>>> hang if you try to communicate with the etcd3 server from a greenlet. >>>>>> Fun! >>>>>> >>>>>> So, either use etcd2 (the no-longer-being-worked-on HTTP API) or don't >>>>>> use >>>>>> eventlet in your client service. >>>>>> >>>>>> Best, >>>>>> -jay >>>>>> >>>>>> >>>>>> __________________________________________________________________________ >>>>>> OpenStack Development Mailing List (not for usage questions) >>>>>> Unsubscribe: >>>>>> openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>> >>>>> >>>>> >>>>> -- >>>>> Davanum Srinivas :: https://twitter.com/dims >>>>> >>>>> __________________________________________________________________________ >>>>> OpenStack Development Mailing List (not for usage questions) >>>>> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> >>>> __________________________________________________________________________ >>>> OpenStack Development Mailing List (not for usage questions) >>>> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> >>> >>> __________________________________________________________________________ >>> OpenStack Development Mailing List (not for usage questions) >>> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev