Files
2012-02-21 01:15:00 -05:00

1 line
10 KiB
JSON

[{"user_id": 23061, "stars": [], "topic_id": 42321, "date_created": 1311119011.590342, "message": "I'm trying to automate the process of provisioning new ec2 servers mainly to deploy and automatically scale a django app. Although I would like to use something like fabric, it seems like the wrong tool to be installing mainly ubuntu packages, configuring the web server and db (seems great to deploy the actual app, install packages through pip, etc). I saw that @jacobian was using chef, and took a look at the new kid in the block, but the ruby syntax immediately caused severe itching all over my body. Is puppet overkill? Can it be done easily with fabric? What are folks out there using?", "group_id": 81, "id": 1676563}, {"user_id": 12716, "stars": [], "topic_id": 42321, "date_created": 1311118449.048718, "message": "I've wondered this myself. I've been considering learning one for a personal project.", "group_id": 81, "id": 1676490}, {"user_id": 12716, "stars": [{"date_created": 1311563062.276561, "user_id": 15343}], "topic_id": 42321, "date_created": 1311119539.5419641, "message": "I think you can compare puppet and chef but fabric isn't a configuration management tool.", "group_id": 81, "id": 1676644}, {"user_id": 12716, "stars": [], "topic_id": 42321, "date_created": 1311120082.0923481, "message": "I spent a little bit of time get Chef setup and believe I'll also perform a quick setup just to get exposure to puppet also.", "group_id": 81, "id": 1676692}, {"user_id": 34360, "stars": [], "topic_id": 42321, "date_created": 1311120712.630332, "message": "Color me completely lazy, but you can make Fabric do configuration management. I use it for setting up new WebFaction sites: https://bitbucket.org/tclancy/deployment/src/bcc740b70c98/DjangoDefaults/webfaction-setup-fabfile.py -- love to know if I should be using Puppet or something else instead.", "group_id": 81, "id": 1676779}, {"user_id": 1736, "stars": [{"date_created": 1311137993.290833, "user_id": 34431}, {"date_created": 1311145615.0895491, "user_id": 2482}, {"date_created": 1311175486.771441, "user_id": 28384}, {"date_created": 1311206524.5953679, "user_id": 3580}, {"date_created": 1311218548.827668, "user_id": 23244}, {"date_created": 1312147333.408169, "user_id": 5778}], "topic_id": 42321, "date_created": 1311135795.170923, "message": "Full disclosure: I work for Opscode (the company the stewards Chef).\n\nIf you check out http://help.opscode.com/kb/otherhelp/build-a-django-stack we have a screencast and full guide on using Chef to setup a Django/gunicorn deployment. I'll also be extending this code my Djangocon talk to encompass stuff like Celery and Supervisor and all the other Djangoy goodness. In general if you have questions on Python+Chef stuff I'm happy to help out any way I can (https://coderanger.net/contact.html shows all the various ways to get in contact with me). Hope that helps!", "group_id": 81, "id": 1678646}, {"user_id": 1736, "stars": [{"date_created": 1311519115.403631, "user_id": 1243}, {"date_created": 1311563125.3045211, "user_id": 15343}], "topic_id": 42321, "date_created": 1311135919.192066, "message": "Also re: Chef/Puppet vs. Fabric, while it is possible to shove some level of idempotent config management into Fabric (or Capistrano if you swing that way) it will almost certainly come back to bite you later as your configs get more complex.", "group_id": 81, "id": 1678648}, {"user_id": 2482, "stars": [{"date_created": 1311175483.396466, "user_id": 28384}, {"date_created": 1311190340.040653, "user_id": 1736}], "topic_id": 42321, "date_created": 1311145875.493752, "message": "I use a combination of Chef and Fabric for my current project. Fabric is used for the one-time configuration (setting up repositories and installing chef) and chef in solo mode for the actual setup.", "group_id": 81, "id": 1679203}, {"user_id": 281, "stars": [{"date_created": 1311190341.055927, "user_id": 1736}], "topic_id": 42321, "date_created": 1311168876.879113, "message": "I've been using chef + the ops code platform for the last couple of months to deploy django apps and have been very happy. If you're managing just one or two servers it's probably overkill but anything beyond that the upfront setup cost pays off pretty quickly", "group_id": 81, "id": 1680645}, {"user_id": 2482, "stars": [], "topic_id": 42321, "date_created": 1311169991.3435149, "message": "For simple one-time deployments I agree that it is overkill, for complex applications (application server, reverse proxy, mail server, celery + rabbitmq, redis, postgres, ...) it can even save time for just a handful of installations.", "group_id": 81, "id": 1680852}, {"user_id": 13325, "stars": [], "topic_id": 42321, "date_created": 1311170383.8062651, "message": "@coderanger I'd been Googling \"django chef\" in it's many incarnations for a couple days now and that site never came up. I'm excited to sit and and give it a go.", "group_id": 81, "id": 1680928}, {"user_id": 16699, "stars": [], "topic_id": 42321, "date_created": 1311178254.196769, "message": "I've actually been using fabric + puppet...not a whole puppetmaster/slave setup, but simply using fabric to boot strap the base puppet packages, then fabric pushes puppet manifest files, and executes puppet on said manifests. The puppet manifest language was much easier on my eyes than the ruby from chef...", "group_id": 81, "id": 1682184}, {"user_id": 1736, "stars": [], "topic_id": 42321, "date_created": 1311190380.5243809, "message": "Using Chef even for a singleton machine is often a good idea if there is any chance that machine will have to be replaced (hardware failure, ec2pocalypse, etc).", "group_id": 81, "id": 1684137}, {"user_id": 1736, "stars": [], "topic_id": 42321, "date_created": 1311190390.785382, "message": "(or Puppet, same idea applies)", "group_id": 81, "id": 1684139}, {"user_id": 1126, "stars": [], "topic_id": 42321, "date_created": 1311255158.5100901, "message": "in total agreement with @coderanger here, the small amount of extra effort you put in up-front to learn chef/puppet and make configs (even if your project only ever runs on one server total) will make you much more flexible in the future (for both future projects and if you ever need to scale to additional servers)", "group_id": 81, "id": 1689131}, {"user_id": 11827, "stars": [], "topic_id": 42321, "date_created": 1311492799.0588939, "message": "I was also discouraged by the Ruby base and decided to go with Fabric, in conjunction with Boto for working with EC2. I'm very happy with my scripts now. I can spawn new servers, update my existing servers from GitHub, stop and start environments, inspect logs, and much more. It is not configuration management, but I think it was just what I needed for starting a new webapp.", "group_id": 81, "id": 1709174}, {"user_id": 15343, "stars": [], "topic_id": 42321, "date_created": 1311563372.799135, "message": "@coderanger I don't like Fabric based on my professional experience with it. The scripts I'm using have me crossing my fingers and *hoping* nothing breaks. Don't get me wrong: its a really cool tool, but configuration management can become quite tedious and complex to maintain as the stack grows and the application evolves. I'm leaning towards Chef these days--plus, they Chef dudes gave me a bunch of beer at PyCon. Thanks Chef dudes!", "group_id": 81, "id": 1713057}, {"user_id": 1126, "stars": [], "topic_id": 42321, "date_created": 1311601779.8641989, "message": "@mkelley33 coderanger was advocating against using Fabric for pure configuration management, precisely because it is so brittle. Use Chef/Puppet for that, and Fabric for all the other tasks, such as deploying or rolling back new site versions.", "group_id": 81, "id": 1715255}, {"user_id": 15343, "stars": [], "topic_id": 42321, "date_created": 1311606263.808084, "message": "@pewpewarrows yeah, I'm picking up what you're laying down :) I was just dropping in my 2 cents to support @coderanger's position. I agree with both of you, which is why I'm going to learn chef for my configuration management. Thanks!", "group_id": 81, "id": 1715824}, {"user_id": 960, "stars": [], "topic_id": 42321, "date_created": 1311733773.0466571, "message": "I'm actually a bit curious on this. The automatic provisioning if you setup a chef/puppet server is pretty slick, but I've yet to see where a fabric task executing real code that you wrote (and tested) is so brittle it requires crossing your fingers and hoping it works... Anyone care to share some code examples?", "group_id": 81, "id": 1728232}, {"user_id": 1736, "stars": [], "topic_id": 42321, "date_created": 1311746983.0851331, "message": "@tswicegood An example is how are you controlling package versions? If you just `apt-get install $PACKAGE` then you get what is current at the time and nothing else, which isn't reproducible. Translating from an idempotent definition of package X at version Y to an actual command for the current system to make that happen represents a decent amount of code.", "group_id": 81, "id": 1729146}, {"user_id": 34360, "stars": [], "topic_id": 42321, "date_created": 1311772563.7800419, "message": "By installing with pip from a requirements file, e.g., django==1.3", "group_id": 81, "id": 1730899}, {"user_id": 16699, "stars": [], "topic_id": 42321, "date_created": 1311777337.965477, "message": "I think they mean like installing nginx at specific version, not so much a python package.", "group_id": 81, "id": 1731570}, {"user_id": 1736, "stars": [], "topic_id": 42321, "date_created": 1311786068.083132, "message": "Yes, I mean things that aren't Python. Apache, Nginx, your database, Python itself, take your pick.", "group_id": 81, "id": 1732554}, {"user_id": 960, "stars": [], "topic_id": 42321, "date_created": 1311791989.651752, "message": "@coderanger apt-get allows me to specify version #s. That said, my deployment needs are simple because I don't need to support multiple OSes.", "group_id": 81, "id": 1733314}, {"user_id": 37454, "stars": [], "topic_id": 42321, "date_created": 1311798353.241894, "message": "It depends on your setup. For mine, both tools are too complex and incur too much overhead (< 2 servers) so I use either babushka or littlechef (chef without a chef server).", "group_id": 81, "id": 1734015}, {"user_id": 1736, "stars": [], "topic_id": 42321, "date_created": 1311828828.892066, "message": "@tswicegood Just doing an install foo==1.0 doesn't pin anything IIRC, so accidental upgrades are still possible. There is always a gotcha :-)", "group_id": 81, "id": 1736675}]