{"action":"created","comment":{"url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/comments/37363856","id":37363856,"diff_hunk":"@@ -0,0 +1,8 @@\n+---\n+  - name: load webpack-dev-server ubuntu upstart config\n+    copy: src=./../files/webpack-dev-server.conf dest=/etc/init/webpack-dev-server.conf state=link group=webadmins mode=0644 force=yes\n+    sudo: yes\n+\n+  - name: permit webpack-dev-server to access certs (set certs dirs to root:webadmins)\n+    file: path=/coins/keys/comodo_mrn_wildcard_ssl_cert/ owner=root group=webadmins state=\"directory\" mode=\"u=rwx,g=rx\" force=yes","path":"roles/phpserver/tasks/webpack-dev-server.yml","position":7,"original_position":7,"commit_id":"84bed752aabf4c414632b5da61aa3f23bfa93524","original_commit_id":"84bed752aabf4c414632b5da61aa3f23bfa93524","user":{"login":"dylancwood","id":5280961,"avatar_url":"https://avatars.githubusercontent.com/u/5280961?v=3","gravatar_id":"","url":"https://api.github.com/users/dylancwood","html_url":"https://github.com/dylancwood","followers_url":"https://api.github.com/users/dylancwood/followers","following_url":"https://api.github.com/users/dylancwood/following{/other_user}","gists_url":"https://api.github.com/users/dylancwood/gists{/gist_id}","starred_url":"https://api.github.com/users/dylancwood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dylancwood/subscriptions","organizations_url":"https://api.github.com/users/dylancwood/orgs","repos_url":"https://api.github.com/users/dylancwood/repos","events_url":"https://api.github.com/users/dylancwood/events{/privacy}","received_events_url":"https://api.github.com/users/dylancwood/received_events","type":"User","site_admin":false},"body":"Just had another thought: may want to make this recursive to set the privs on all files within that dir:\r\n\r\n```\r\nfile: \r\n  path: /coins/keys/comodo_mrn_wildcard_ssl_cert/\r\n  owner: root\r\n  group: webadmins\r\n  state: \"directory\"\r\n  directory_mode=\"u=rwx,g=rx\"\r\n  mode: \"u=rw,g=r\"\r\n  recurse: yes\r\n  force: yes\r\n```","created_at":"2015-08-18T22:57:15Z","updated_at":"2015-08-18T22:57:15Z","html_url":"https://github.com/MRN-Code/ansible-ops/pull/6#discussion_r37363856","pull_request_url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6","_links":{"self":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/comments/37363856"},"html":{"href":"https://github.com/MRN-Code/ansible-ops/pull/6#discussion_r37363856"},"pull_request":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6"}}},"pull_request":{"url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6","id":41821820,"html_url":"https://github.com/MRN-Code/ansible-ops/pull/6","diff_url":"https://github.com/MRN-Code/ansible-ops/pull/6.diff","patch_url":"https://github.com/MRN-Code/ansible-ops/pull/6.patch","issue_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/6","number":6,"state":"open","locked":false,"title":"Feature/webpack dev server","user":{"login":"cdaringe","id":1003261,"avatar_url":"https://avatars.githubusercontent.com/u/1003261?v=3","gravatar_id":"","url":"https://api.github.com/users/cdaringe","html_url":"https://github.com/cdaringe","followers_url":"https://api.github.com/users/cdaringe/followers","following_url":"https://api.github.com/users/cdaringe/following{/other_user}","gists_url":"https://api.github.com/users/cdaringe/gists{/gist_id}","starred_url":"https://api.github.com/users/cdaringe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cdaringe/subscriptions","organizations_url":"https://api.github.com/users/cdaringe/orgs","repos_url":"https://api.github.com/users/cdaringe/repos","events_url":"https://api.github.com/users/cdaringe/events{/privacy}","received_events_url":"https://api.github.com/users/cdaringe/received_events","type":"User","site_admin":false},"body":"#### asana\r\nhttps://app.asana.com/0/10663154302695/39577584961564\r\n\r\n# problem\r\nthe build process is slow.  the build process is often forgotten to be triggered when changing modes\r\n\r\n# solution\r\nin development, host a dedicated server to server built assets.  these assets are served directly from mem after first read.  changes done spawn a full rebuilt. rather, incremental builds occur, so, the assets are rebuilt quickly.  further, we activate live-reload, in which case, periodically, the developers browser receives the new content automatically.\r\n\r\n# test\r\n- merge all feature branches\r\n- ansible deploy the latest of the affected roles (phpserver, nodejssever) to a devcoin. NOTE, that the target devcoin better be running 14.04 so that apache config updates take successfully!\r\n- observe that COINS loads OK (assuming it did prior to deploy)\r\n- observe that some JS assets come from an express server on port `22222`\r\n- observe that logs are output to `/coins/www/logs/webpack-dev-server.log`\r\n- observe that the service behaves like a system service. `sudo service wepback-dev-server restart`\r\n- observe that changing the config file reboots the service\r\n    - edit `/cc/js/browserApp/webpack-dev-server.js` or `webpack.config.js`. this triggeres a server reboot, COOL!@.  check out the logs and observe that it shows in the log, `/coins/www/logs/webpack-dev-server.log`\r\n- change something that is built. `js/browser-app/global-utils.js` for instance. see if it live updates.  at the least, refresh and see that the change happens at minimum on refresh\r\n","created_at":"2015-08-06T18:53:48Z","updated_at":"2015-08-18T22:57:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1123150af3e4c837f1af30d1f9cccf538d20bfd9","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6/commits","review_comments_url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6/comments","review_comment_url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/comments{/number}","comments_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/6/comments","statuses_url":"https://api.github.com/repos/MRN-Code/ansible-ops/statuses/84bed752aabf4c414632b5da61aa3f23bfa93524","head":{"label":"MRN-Code:feature/webpack-dev-server","ref":"feature/webpack-dev-server","sha":"84bed752aabf4c414632b5da61aa3f23bfa93524","user":{"login":"MRN-Code","id":5330818,"avatar_url":"https://avatars.githubusercontent.com/u/5330818?v=3","gravatar_id":"","url":"https://api.github.com/users/MRN-Code","html_url":"https://github.com/MRN-Code","followers_url":"https://api.github.com/users/MRN-Code/followers","following_url":"https://api.github.com/users/MRN-Code/following{/other_user}","gists_url":"https://api.github.com/users/MRN-Code/gists{/gist_id}","starred_url":"https://api.github.com/users/MRN-Code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MRN-Code/subscriptions","organizations_url":"https://api.github.com/users/MRN-Code/orgs","repos_url":"https://api.github.com/users/MRN-Code/repos","events_url":"https://api.github.com/users/MRN-Code/events{/privacy}","received_events_url":"https://api.github.com/users/MRN-Code/received_events","type":"Organization","site_admin":false},"repo":{"id":30993087,"name":"ansible-ops","full_name":"MRN-Code/ansible-ops","owner":{"login":"MRN-Code","id":5330818,"avatar_url":"https://avatars.githubusercontent.com/u/5330818?v=3","gravatar_id":"","url":"https://api.github.com/users/MRN-Code","html_url":"https://github.com/MRN-Code","followers_url":"https://api.github.com/users/MRN-Code/followers","following_url":"https://api.github.com/users/MRN-Code/following{/other_user}","gists_url":"https://api.github.com/users/MRN-Code/gists{/gist_id}","starred_url":"https://api.github.com/users/MRN-Code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MRN-Code/subscriptions","organizations_url":"https://api.github.com/users/MRN-Code/orgs","repos_url":"https://api.github.com/users/MRN-Code/repos","events_url":"https://api.github.com/users/MRN-Code/events{/privacy}","received_events_url":"https://api.github.com/users/MRN-Code/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MRN-Code/ansible-ops","description":"Ansible playbooks","fork":false,"url":"https://api.github.com/repos/MRN-Code/ansible-ops","forks_url":"https://api.github.com/repos/MRN-Code/ansible-ops/forks","keys_url":"https://api.github.com/repos/MRN-Code/ansible-ops/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MRN-Code/ansible-ops/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MRN-Code/ansible-ops/teams","hooks_url":"https://api.github.com/repos/MRN-Code/ansible-ops/hooks","issue_events_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/events{/number}","events_url":"https://api.github.com/repos/MRN-Code/ansible-ops/events","assignees_url":"https://api.github.com/repos/MRN-Code/ansible-ops/assignees{/user}","branches_url":"https://api.github.com/repos/MRN-Code/ansible-ops/branches{/branch}","tags_url":"https://api.github.com/repos/MRN-Code/ansible-ops/tags","blobs_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/refs{/sha}","trees_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MRN-Code/ansible-ops/statuses/{sha}","languages_url":"https://api.github.com/repos/MRN-Code/ansible-ops/languages","stargazers_url":"https://api.github.com/repos/MRN-Code/ansible-ops/stargazers","contributors_url":"https://api.github.com/repos/MRN-Code/ansible-ops/contributors","subscribers_url":"https://api.github.com/repos/MRN-Code/ansible-ops/subscribers","subscription_url":"https://api.github.com/repos/MRN-Code/ansible-ops/subscription","commits_url":"https://api.github.com/repos/MRN-Code/ansible-ops/commits{/sha}","git_commits_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/commits{/sha}","comments_url":"https://api.github.com/repos/MRN-Code/ansible-ops/comments{/number}","issue_comment_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/comments{/number}","contents_url":"https://api.github.com/repos/MRN-Code/ansible-ops/contents/{+path}","compare_url":"https://api.github.com/repos/MRN-Code/ansible-ops/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MRN-Code/ansible-ops/merges","archive_url":"https://api.github.com/repos/MRN-Code/ansible-ops/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MRN-Code/ansible-ops/downloads","issues_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues{/number}","pulls_url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls{/number}","milestones_url":"https://api.github.com/repos/MRN-Code/ansible-ops/milestones{/number}","notifications_url":"https://api.github.com/repos/MRN-Code/ansible-ops/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MRN-Code/ansible-ops/labels{/name}","releases_url":"https://api.github.com/repos/MRN-Code/ansible-ops/releases{/id}","created_at":"2015-02-18T23:41:31Z","updated_at":"2015-08-18T01:40:53Z","pushed_at":"2015-08-18T17:47:40Z","git_url":"git://github.com/MRN-Code/ansible-ops.git","ssh_url":"git@github.com:MRN-Code/ansible-ops.git","clone_url":"https://github.com/MRN-Code/ansible-ops.git","svn_url":"https://github.com/MRN-Code/ansible-ops","homepage":null,"size":1196,"stargazers_count":1,"watchers_count":1,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"MRN-Code:master","ref":"master","sha":"22a149c694c35963e35a69f767dfca6b6cc0902d","user":{"login":"MRN-Code","id":5330818,"avatar_url":"https://avatars.githubusercontent.com/u/5330818?v=3","gravatar_id":"","url":"https://api.github.com/users/MRN-Code","html_url":"https://github.com/MRN-Code","followers_url":"https://api.github.com/users/MRN-Code/followers","following_url":"https://api.github.com/users/MRN-Code/following{/other_user}","gists_url":"https://api.github.com/users/MRN-Code/gists{/gist_id}","starred_url":"https://api.github.com/users/MRN-Code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MRN-Code/subscriptions","organizations_url":"https://api.github.com/users/MRN-Code/orgs","repos_url":"https://api.github.com/users/MRN-Code/repos","events_url":"https://api.github.com/users/MRN-Code/events{/privacy}","received_events_url":"https://api.github.com/users/MRN-Code/received_events","type":"Organization","site_admin":false},"repo":{"id":30993087,"name":"ansible-ops","full_name":"MRN-Code/ansible-ops","owner":{"login":"MRN-Code","id":5330818,"avatar_url":"https://avatars.githubusercontent.com/u/5330818?v=3","gravatar_id":"","url":"https://api.github.com/users/MRN-Code","html_url":"https://github.com/MRN-Code","followers_url":"https://api.github.com/users/MRN-Code/followers","following_url":"https://api.github.com/users/MRN-Code/following{/other_user}","gists_url":"https://api.github.com/users/MRN-Code/gists{/gist_id}","starred_url":"https://api.github.com/users/MRN-Code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MRN-Code/subscriptions","organizations_url":"https://api.github.com/users/MRN-Code/orgs","repos_url":"https://api.github.com/users/MRN-Code/repos","events_url":"https://api.github.com/users/MRN-Code/events{/privacy}","received_events_url":"https://api.github.com/users/MRN-Code/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MRN-Code/ansible-ops","description":"Ansible playbooks","fork":false,"url":"https://api.github.com/repos/MRN-Code/ansible-ops","forks_url":"https://api.github.com/repos/MRN-Code/ansible-ops/forks","keys_url":"https://api.github.com/repos/MRN-Code/ansible-ops/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MRN-Code/ansible-ops/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MRN-Code/ansible-ops/teams","hooks_url":"https://api.github.com/repos/MRN-Code/ansible-ops/hooks","issue_events_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/events{/number}","events_url":"https://api.github.com/repos/MRN-Code/ansible-ops/events","assignees_url":"https://api.github.com/repos/MRN-Code/ansible-ops/assignees{/user}","branches_url":"https://api.github.com/repos/MRN-Code/ansible-ops/branches{/branch}","tags_url":"https://api.github.com/repos/MRN-Code/ansible-ops/tags","blobs_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/refs{/sha}","trees_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MRN-Code/ansible-ops/statuses/{sha}","languages_url":"https://api.github.com/repos/MRN-Code/ansible-ops/languages","stargazers_url":"https://api.github.com/repos/MRN-Code/ansible-ops/stargazers","contributors_url":"https://api.github.com/repos/MRN-Code/ansible-ops/contributors","subscribers_url":"https://api.github.com/repos/MRN-Code/ansible-ops/subscribers","subscription_url":"https://api.github.com/repos/MRN-Code/ansible-ops/subscription","commits_url":"https://api.github.com/repos/MRN-Code/ansible-ops/commits{/sha}","git_commits_url":"https://api.github.com/repos/MRN-Code/ansible-ops/git/commits{/sha}","comments_url":"https://api.github.com/repos/MRN-Code/ansible-ops/comments{/number}","issue_comment_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/comments{/number}","contents_url":"https://api.github.com/repos/MRN-Code/ansible-ops/contents/{+path}","compare_url":"https://api.github.com/repos/MRN-Code/ansible-ops/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MRN-Code/ansible-ops/merges","archive_url":"https://api.github.com/repos/MRN-Code/ansible-ops/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MRN-Code/ansible-ops/downloads","issues_url":"https://api.github.com/repos/MRN-Code/ansible-ops/issues{/number}","pulls_url":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls{/number}","milestones_url":"https://api.github.com/repos/MRN-Code/ansible-ops/milestones{/number}","notifications_url":"https://api.github.com/repos/MRN-Code/ansible-ops/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MRN-Code/ansible-ops/labels{/name}","releases_url":"https://api.github.com/repos/MRN-Code/ansible-ops/releases{/id}","created_at":"2015-02-18T23:41:31Z","updated_at":"2015-08-18T01:40:53Z","pushed_at":"2015-08-18T17:47:40Z","git_url":"git://github.com/MRN-Code/ansible-ops.git","ssh_url":"git@github.com:MRN-Code/ansible-ops.git","clone_url":"https://github.com/MRN-Code/ansible-ops.git","svn_url":"https://github.com/MRN-Code/ansible-ops","homepage":null,"size":1196,"stargazers_count":1,"watchers_count":1,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6"},"html":{"href":"https://github.com/MRN-Code/ansible-ops/pull/6"},"issue":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/6"},"comments":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/issues/6/comments"},"review_comments":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6/comments"},"review_comment":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/pulls/6/commits"},"statuses":{"href":"https://api.github.com/repos/MRN-Code/ansible-ops/statuses/84bed752aabf4c414632b5da61aa3f23bfa93524"}}}}