Regarding the credentials file behavior, it seems to be a bug. I've filed: https://issues.apache.org/jira/browse/MESOS-3560
On Tue, Sep 29, 2015 at 8:28 PM Michael Park <[email protected]> wrote: > Oops, that should've been: > > * {* > * "credentials": [* > * {* > * "principal": "mesos-mach5-beta",* > * "secret": " cGFzc3dvcmQ="* > * }* > * ]* > * }* > > On Tue, Sep 29, 2015 at 8:20 PM Michael Park <[email protected]> wrote: > >> I'll look into what's happening with the framework registration, but >> meanwhile I've also taken a look at what's going on with the master >> endpoints. >> >> It looks like the issue is around authentication rather than the dynamic >> reservation endpoints. >> >> When using *JSON-based* credentials file, the password should be given >> in *base64 encoded* format. >> So your credentials file should be: >> >> * {* >> * "credentials": [* >> * {* >> * "principal": "mesos-mach5-beta",* >> * "secret": " cGFzc3dvcmQ"* >> * }* >> * ]* >> * }* >> >> It looks like this behavior is not documented well on the master. I'll be >> fixing that shortly. >> >> Thanks, >> >> MPark. >> >> >> On Tue, Sep 29, 2015 at 4:27 PM DiGiorgio, Mr. Rinaldo S. < >> [email protected]> wrote: >> >>> MPark, >>> >>> Thanks for your identification of something that was not configured. I >>> am using the mesos-plugin in Jenkins. I had not specified a principal. I >>> added the principal and it appears to register with that principal if I >>> don’t provide a password from the meson-plugin. When I try to perform a >>> reservation I get the authentication issue. So I thought perhaps the >>> framework must register with a password. I added the password and restarted >>> both jenkins and the meson-master. I get the following in the logs. >>> >>> >>> W0929 13:17:56.672214 346357760 master.cpp:5165] Failed to authenticate >>> [email protected]:49817: >>> Refused authentication >>> *** Aborted at 1443557876 (unix time) try "date -d @1443557876" if you >>> are using GNU date *** >>> PC: @ 0x7fff8ad419a4 _pthread_mutex_check_init >>> *** SIGSEGV (@0x1) received by PID 62883 (TID 0x114ad3000) stack trace: >>> *** >>> @ 0x7fff8d09f5aa _sigtramp >>> >>> I am sure ntp is the same since I have set the time with ntp and both >>> the mesos master and jenkins are on the same machine. The authentication >>> process requires accurate clocks — since it is just the framework >>> registering I have not looked at the slaves. >>> >>> >>> >>> Rinaldo >>> >>> >>> On Sep 29, 2015, at 3:03 PM, Michael Park <[email protected]> wrote: >>> >>> Hi Rinaldo, >>> >>> Sorry that you're having trouble using dynamic reservations. >>> >>> I see that you're specifying the *mesos-mach5-beta* principal on the >>> resources, but I'm not sure if your framework is registered with the >>> *mesos-mach5-beta* principal? The framework must set the * >>> FrameworkInfo::principal* to be registered under that *principal*. >>> >>> Please let me know whether that is the case or not, and I'll follow up >>> with you to resolve the issue. >>> >>> Thanks, >>> >>> MPark. >>> >>> On Tue, Sep 29, 2015 at 1:53 PM DiGiorgio, Mr. Rinaldo S. < >>> [email protected]> wrote: >>> >>>> Joseph, >>>> >>>> I thought I tried that. So I must still not following the >>>> directions. Here is what I have? >>>> >>>> mesos master running on OS X 10.10.5 mesos 0.26 >>>> >>>> I perform the following curl operation below. >>>> >>>> server reads credentials file >>>> >>>> I0929 10:48:42.062871 291536896 credentials.hpp:37] Loading credentials >>>> for authentication from '/etc/mesos-master/attributes/credentials' >>>> I0929 10:48:42.065512 291536896 master.cpp:467] Using default 'crammd5' >>>> authenticator >>>> >>>> >>>> The result of trying to reserve is: *Could not authenticate >>>> 'mesos-mach5-beta'* >>>> >>>> ======= the credentials file is ======= >>>> >>>> { >>>> "credentials": [ >>>> { >>>> "principal": "*mesos-mach5-beta*", >>>> "secret": "*password*" >>>> } >>>> ] >>>> } >>>> =============================== >>>> >>>> ========================User curl post to reserve a slave not a >>>> framework ============= >>>> SLAVE_ID="efb748eb-e1ce-423d-a795-7589c92b2a32-S1" >>>> OPERATOR_PRINCIPAL="mach5" >>>> CPUS="3" >>>> MESOS_HOST="scaaa979.us.oracle.com:5050" >>>> curl -u "*mesos-mach5-beta*:password" -d slaveId="$SLAVE_ID" -d @- -X >>>> POST http://$MESOS_HOST/master/reserve <<HERE >>>> resources=[ >>>> { >>>> "name": "cpus", >>>> "type": "SCALAR", >>>> "scalar": { "value": 8 }, >>>> "role": "mach5", >>>> "reservation": { >>>> "principal": "*mesos-mach5-beta*" >>>> } >>>> }, >>>> { >>>> "name": "mem", >>>> "type": "SCALAR", >>>> "scalar": { "value": 4096 }, >>>> "role": "mach5", >>>> "reservation": { >>>> "principal": * "mesos-mach5-beta*" >>>> } >>>> } >>>> ] >>>> ================================================================= >>>> >>>> On Sep 29, 2015, at 12:34 PM, Joseph Wu <[email protected]> wrote: >>>> >>>> Rinaldo, >>>> >>>> The principle is taken from authentication, rather than from the body >>>> of the resources. In this case, you'll be using Basic Authentication: >>>> https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side >>>> >>>> With curl, you'd add something like: -H "Authorization: Basic >>>> bWVzb3MtbWFjaDUtYmV0YTpwYXNzd29yZA==" >>>> That base64 blurb is the encoded version of "mesos-mach5-beta:password >>>> ". >>>> >>>> ~Joseph >>>> >>>> On Mon, Sep 28, 2015 at 8:25 PM, DiGiorgio, Mr. Rinaldo S. < >>>> [email protected]> wrote: >>>> >>>>> >>>>> On Sep 28, 2015, at 8:03 PM, Joseph Wu <[email protected]> wrote: >>>>> >>>>> Hi Rinaldo, >>>>> >>>>> I'd like to point out a small error in your ACLs. >>>>> >>>>> If you want to specify "ANY", you should set the "type" field. i.e. >>>>> For the RegisterFramework ACL: >>>>> "register_frameworks": [ >>>>> { >>>>> "principals": { "values": "mesos-mach5-beta" }, >>>>> "roles": { "type": 1 } >>>>> } >>>>> ] >>>>> >>>>> >>>>> Thanks — can’t keep my eyes open any more. This is the response I get >>>>> to the following request. >>>>> >>>>> *Invalid RESERVE operation: Cannot reserve resources without a >>>>> principal. * >>>>> >>>>> The example shows -u principal:password in curl which is >>>>> an auentycation string for the browser so I am totally confused on how to >>>>> provide a principal. The documentation for the framework reserve >>>>> >>>>> >>>>> >>>>> curl -i -d slaveId="$SLAVE_ID" -d @- -X POST >>>>> http://$MESOS_HOST/master/reserve <<HERE >>>>> resources=[ >>>>> { >>>>> "name": "cpus", >>>>> "type": "SCALAR", >>>>> "scalar": { "value": 8 }, >>>>> "role": "mach5", >>>>> "reservation": { >>>>> "principal": "mach5" >>>>> } >>>>> }, >>>>> { >>>>> "name": "mem", >>>>> "type": "SCALAR", >>>>> "scalar": { "value": 4096 }, >>>>> "role": "mach5", >>>>> "reservation": { >>>>> "principal": "mach5" >>>>> } >>>>> } >>>>> ] >>>>> <<HERE >>>>> >>>>> >>>>> The ANY "type" is part of an enumeration, defined here: >>>>> >>>>> https://github.com/apache/mesos/blob/master/include/mesos/authorizer/authorizer.proto#L33-L45 >>>>> >>>>> Hope that helps, >>>>> ~Joseph >>>>> >>>>> On Mon, Sep 28, 2015 at 2:51 PM, DiGiorgio, Mr. Rinaldo S. < >>>>> [email protected]> wrote: >>>>> >>>>>> >>>>>> On Sep 28, 2015, at 5:27 PM, Marco Massenzio <[email protected]> >>>>>> wrote: >>>>>> >>>>>> Hi Rinaldo, >>>>>> >>>>>> sorry about the trouble you're having in getting this to work! >>>>>> If I got this one right, the original requirement was... >>>>>> >>>>>> I have some tasks that need to run on different types of agents. >>>>>> >>>>>> >>>>>> for that, I think you can use either (or both) of `roles` and >>>>>> `attributes` (see the Configuration doc [0] for more info). >>>>>> >>>>>> If you would like to run a 0.24 Mesos on your Mac for testing, you >>>>>> could use the Mesosphere published packages[1] or, if Vagrant is more >>>>>> your >>>>>> thing, feel free to "take inspiration" form [2]. >>>>>> >>>>>> Marco, >>>>>> >>>>>> Thanks — We are running 0.23, 0.24 and the current branch as of >>>>>> this morning in three mesos environments with linux and mac nodes and >>>>>> working on porting Solaris. We have had various issues with building but >>>>>> are past most of them. We are making progess on the Solaris build and >>>>>> there is an issue with libsvn-1 as you mentioned with OL7. >>>>>> >>>>>> >>>>>> *Why do we need Dynamic Reservations?* >>>>>> >>>>>> We are also working with the mesos-plugin 0.8 and 0.9 and would like >>>>>> to change some of the behaviors of the plugin. One of the changes we want >>>>>> to make and we may move this out of the meson-plugin into workflow plugin >>>>>> in jenkins is to be able to reserve all the resources we need before we >>>>>> start a series of tasks. That is what we want to use dynamic reservations >>>>>> for. There may be issues with the jenkins workflow architecture in that >>>>>> “slaves” have to be requested via plugins. Mesos is new and I am sure it >>>>>> will provide a framework to innovate on all the following currently >>>>>> supported scheduling options in LSF. >>>>>> >>>>>> Fair share, preemptive, backfill and SLA scheduling >>>>>> High throughput scheduling >>>>>> Multicluster scheduling >>>>>> Topology-, resource-, and energy-aware scheduling >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> I am trying to ask for a reservation and maybe I just don’t >>>>>> understand the definitions. I seem to be unsure about what a principal >>>>>> is. >>>>>> Maybe that is the root of my current issue. Unfortunately I am also a >>>>>> teacher so I notice things like I still can’t find a definition of >>>>>> *principal* on all those web pages. >>>>>> >>>>>> Thanks for all the links below but Docker is not a good technology >>>>>> for us because it has the usual linuxism’s runs best and mostly on Linux. >>>>>> Vagrant has the same issues so we will have to put more ports on our >>>>>> list. >>>>>> Docker don’t have separation that is equal to the task so we need to >>>>>> match >>>>>> the resources of the machine to the size of the task and not share in >>>>>> some >>>>>> circumstances. Our apps tend to open lots of ports and use advanced >>>>>> features of the operating system that may not be supported in Docker >>>>>> native, but may actually work in Docker on a VM. Containers have >>>>>> different >>>>>> definitions of separation. >>>>>> >>>>>> Rinaldo >>>>>> >>>>>> >>>>>> Finally, to build on OSX, you'll need to install libsvn-1 as >>>>>> described in [3]. >>>>>> >>>>>> I'm afraid I don't know enough about Dynamic Reservation to really be >>>>>> able to help here; but I suspect that, if you run *without* >>>>>> authentication enabled, it will accept *any* principal (did you try >>>>>> that already? what error did you get?) >>>>>> >>>>>> Feel free to drop me a line if you're still having trouble. >>>>>> >>>>>> >>>>>> [0] http://mesos.apache.org/documentation/latest/configuration/ >>>>>> [1] http://mesosphere.com/downloads >>>>>> [2] https://github.com/massenz/zk-mesos/tree/develop/vagrant >>>>>> [3] http://mesos.apache.org/gettingstarted/ (see the OSX section; in >>>>>> particular: >>>>>> `$ brew install autoconf automake libtool subversion maven`) >>>>>> >>>>>> *Marco Massenzio* >>>>>> >>>>>> *Distributed Systems Engineer http://codetrips.com >>>>>> <http://codetrips.com/>* >>>>>> >>>>>> On Mon, Sep 28, 2015 at 1:59 PM, DiGiorgio, Mr. Rinaldo S. < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> >>>>>>> On Sep 21, 2015, at 7:33 PM, Guangya Liu <[email protected]> wrote: >>>>>>> >>>>>>> HI Rinaldo, >>>>>>> >>>>>>> I think that you can use dynamic reservation feature to achieve >>>>>>> this: You can launch your tasks after reservation succeeds. Actually, >>>>>>> all >>>>>>> of the dynamic reservation feature with endpoint has been finished >>>>>>> except >>>>>>> ACL part, so you can use this feature now if you do not care ACL part. >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> >>>>>>> Hi Guangya, >>>>>>> >>>>>>> I have bene trying to get dynamic reservations to work. I downloaded >>>>>>> the latest from git and created a small environment on OS X 10.10. I am >>>>>>> trying to use reservations and I am not making much progress. I tried >>>>>>> to >>>>>>> get it to work without authentication and was unable to. I used the ANY >>>>>>> option and it still required a principal. I am unable to configure the >>>>>>> master to work without authentication. Do you have some simple configs >>>>>>> for >>>>>>> starting a master with no authentication required so that it can be >>>>>>> used to >>>>>>> set dynamic reservations. >>>>>>> >>>>>>> The output below is for authentication. I tried to authenticate from >>>>>>> a slave and it failed with a coredump. >>>>>>> >>>>>>> >>>>>>> >>>>>>> I start mesos like this: >>>>>>> >>>>>>> mesos-master.sh —ip=nnn,nnn,nnn,nnn --work_dir=/var/lib/mesos >>>>>>> --acls=$BASE/acls --credentials=$BASE/credentials >>>>>>> >>>>>>> bash-3.2# cat attributes/acls >>>>>>> { >>>>>>> "register_frameworks": [ >>>>>>> { >>>>>>> "principals": { "type": "mesos-mach5-beta" }, >>>>>>> "roles": { "values": "ANY" } >>>>>>> } >>>>>>> ], >>>>>>> "run_tasks": [ >>>>>>> { >>>>>>> "principals": { "values": "ANY" }, >>>>>>> "users": { "values": "ANY" } >>>>>>> } >>>>>>> ], >>>>>>> "shutdown_frameworks": [ >>>>>>> { >>>>>>> "principals": { "values": "mesos-mach5-beta" }, >>>>>>> "framework_principals": { "values": "ANY" } >>>>>>> } >>>>>>> ] >>>>>>> } >>>>>>> >>>>>>> bash-3.2# cat attributes/credentials >>>>>>> { >>>>>>> "credentials": [ >>>>>>> { >>>>>>> "principal": "mesos-mach5-beta", >>>>>>> "secret": "password" >>>>>>> } >>>>>>> ] >>>>>>> } >>>>>>> >>>>>>> >>>>>>> >>>>>>> When I try the following I am told I am not authorized. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Guangya >>>>>>> >>>>>>> On Tue, Sep 22, 2015 at 6:32 AM, DiGiorgio, Mr. Rinaldo S. < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> I have some tasks that need to run on different types of agents. >>>>>>>> I don’t want the tasks to run unless I am going to have all the >>>>>>>> resources. >>>>>>>> Can someone suggest how I could accomplish that with mesos. I read >>>>>>>> about >>>>>>>> reservations here: >>>>>>>> http://mesos.apache.org/documentation/latest/reservation/ >>>>>>>> >>>>>>>> I could iterate over all the resources I need and if I get them >>>>>>>> proceed. >>>>>>>> >>>>>>>> Is that the only way to do it? >>>>>>>> >>>>>>>> Any idea when coming soon will be available? >>>>>>>> >>>>>>>> /reserve (*Coming Soon*) >>>>>>>> >>>>>>>> Suppose we want to reserve 8 CPUs and 4096 MB of RAM for the ads role >>>>>>>> on a slave with id=<slave_id>. We send an HTTP POST request to the >>>>>>>> /reserve HTTP endpoint like so: >>>>>>>> >>>>>>>> >>>>>>>> Rinaldo >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>>

