{"action":"created","issue":{"url":"https://api.github.com/repos/jeff1evesque/machine-learning/issues/1351","labels_url":"https://api.github.com/repos/jeff1evesque/machine-learning/issues/1351/labels{/name}","comments_url":"https://api.github.com/repos/jeff1evesque/machine-learning/issues/1351/comments","events_url":"https://api.github.com/repos/jeff1evesque/machine-learning/issues/1351/events","html_url":"https://github.com/jeff1evesque/machine-learning/issues/1351","id":57096160,"number":1351,"title":"Research configuration management systems","user":{"login":"jeff1evesque","id":2907085,"avatar_url":"https://avatars.githubusercontent.com/u/2907085?v=3","gravatar_id":"","url":"https://api.github.com/users/jeff1evesque","html_url":"https://github.com/jeff1evesque","followers_url":"https://api.github.com/users/jeff1evesque/followers","following_url":"https://api.github.com/users/jeff1evesque/following{/other_user}","gists_url":"https://api.github.com/users/jeff1evesque/gists{/gist_id}","starred_url":"https://api.github.com/users/jeff1evesque/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jeff1evesque/subscriptions","organizations_url":"https://api.github.com/users/jeff1evesque/orgs","repos_url":"https://api.github.com/users/jeff1evesque/repos","events_url":"https://api.github.com/users/jeff1evesque/events{/privacy}","received_events_url":"https://api.github.com/users/jeff1evesque/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-02-09T21:56:55Z","updated_at":"2015-02-23T23:47:22Z","closed_at":null,"body":"We will research the benefits of implementing a [configuration management systems](http://en.wikipedia.org/wiki/Configuration_management) such as:\r\n\r\n- [puppet](http://puppetlabs.com/) (ruby)\r\n- [chef](https://www.chef.io/) (ruby)\r\n- [juju](https://juju.ubuntu.com/) (python, go)\r\n- [ansible](http://www.ansible.com/home) (python)"},"comment":{"url":"https://api.github.com/repos/jeff1evesque/machine-learning/issues/comments/75663883","html_url":"https://github.com/jeff1evesque/machine-learning/issues/1351#issuecomment-75663883","issue_url":"https://api.github.com/repos/jeff1evesque/machine-learning/issues/1351","id":75663883,"user":{"login":"jeff1evesque","id":2907085,"avatar_url":"https://avatars.githubusercontent.com/u/2907085?v=3","gravatar_id":"","url":"https://api.github.com/users/jeff1evesque","html_url":"https://github.com/jeff1evesque","followers_url":"https://api.github.com/users/jeff1evesque/followers","following_url":"https://api.github.com/users/jeff1evesque/following{/other_user}","gists_url":"https://api.github.com/users/jeff1evesque/gists{/gist_id}","starred_url":"https://api.github.com/users/jeff1evesque/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jeff1evesque/subscriptions","organizations_url":"https://api.github.com/users/jeff1evesque/orgs","repos_url":"https://api.github.com/users/jeff1evesque/repos","events_url":"https://api.github.com/users/jeff1evesque/events{/privacy}","received_events_url":"https://api.github.com/users/jeff1evesque/received_events","type":"User","site_admin":false},"created_at":"2015-02-23T23:47:22Z","updated_at":"2015-02-23T23:47:22Z","body":"IRC #puppet (02/23/15 ~ 5:45pm EST):\r\n\r\n>jeffreylevesque: can we chat just on a high level about puppet?\r\njeffreylevesque: so, if i use puppet - I assume there is a corresponding puppet configuration file? If I use puppet to automate the configuration needed for my repository, do version the puppet configuration file within the repository itself?\r\n\r\n>scotje:  jeffreylevesque, are you looking for a way to automate setting up a development environment for that project?\r\n\r\n>jeffreylevesque: scotje, yes sir. I want a consistent way to setup configurations, like automating various `sudo apt-get install`, and `sudo pip install`, as well as database / table initialization\r\n\r\n>scotje: jeffreylevesque, you can certainly just include a simple manifest in your repo and then tell people to use “puppet apply” to run it\r\n\r\n>jeffreylevesque: scotje, if i have a bash script that does the various `sudo apt-get install`, `sudo pip install`, and then a python script that initializes the database, and corresponding tables - do these two scripts need to be in the same directory as the puppet manifest file?\r\n\r\n>scotje: jeffreylevesque, you’ll want to replace all the apt-get and pip stuff with puppet package resources in the manifest, by abstracting it you gain the ability to apply the same manifest to multiple platforms\r\n\r\n>jeffreylevesque: so, I'm assuming puppet package manager is probably more complete? What if there is a case where puppet doesn't have the package i need? I suppose I will need to write a bash script, and tell puppet to execute that bash script\r\njeffreylevesque: and, can i create database tables in puppet, or should i define a bash / python script, and run it from puppet somehow?\r\n\r\n>WhatsARanjit: jeffreylevesque, Puppet doesn't have a package manager. It simply translates your package resources into yum/apt/msi based on operating system.\r\n\r\n>scotje: jeffreylevesque, the normal way to use puppet is that the manifests are applied at a regular interval on the managed server, so it compares the existing state of the system to the desired state and only makes changes if necessary\r\nscotje: jeffreylevesque, but even if you only plan to run it once, it would be a best practice to write things in such a way that there is no harm in running it multiple times\r\n\r\n>jeffreylevesque: scotje, for database initialization, is there a 'puppet recommended' syntax, or can i define a python script anywhere in my repo, and have puppet manifest reference it?\r\n\r\n>scotje: jeffreylevesque, it can be anywhere in your repo if you are using “puppet apply” to run the manifest\r\n\r\n>jeffreylevesque: scotje, all my linux packages (https://github.com/jeff1evesque/machine-learning#linux-packages) can be written in puppet syntax?\r\njeffreylevesque: even build commands (https://github.com/jeff1evesque/machine-learning#scikit-learn)?\r\n\r\n>jidar: looks like puppet has a built in pip proivder?\r\njidar\ts/proivder/provider\r\n\r\n>jeffreylevesque: so, it seems that I need to write one python script to initialize the database, then a puppet manifest that installs all the packages, and calls the python script?\r\n\r\n>jidar: https://forge.puppetlabs.com/puppetlabs/nodejs\r\njidar: nodejs looks solved as well\r\njidar: provider => 'gem', seems solved too\r\njidar: so the answer is yes, you could just turn that into a puppet manifest fairly easily"}}