{"action":"created","comment":{"url":"https://api.github.com/repos/openwhisk/openwhisk/pulls/comments/63253041","id":63253041,"diff_hunk":"@@ -0,0 +1,121 @@\n+Deploying Openwhisk using Ansible\n+=========\n+\n+\n+### Getting started\n+\n+If you want to deploy Openwhisk locally using Ansible, you first need to install Ansible on your development environment:\n+\n+#### Ubuntu users\n+```\n+sudo apt-get install python-pip\n+sudo pip install ansible==2.0.2.0\n+```\n+\n+#### Vagrant users\n+Nothing to be done, Ansible is already installed during vagrant provisioning.\n+\n+#### Mac users\n+It is assumed that a VM has been provisioned using **docker-machine**.\n+\n+```\n+brew install python\n+pip install ansible==2.0.2.0\n+\n+cd ansible\n+ansible-playbook setup.yml\n+```\n+\n+After this there should be a `hosts` file in the `ansible/environments/mac` directory.\n+\n+To verify the hosts file you can do a quick ping to the docker machine:\n+\n+```\n+cd ansible\n+ansible all -i environments/mac -m ping\n+```\n+\n+Should result in something like:\n+\n+```\n+ansible | SUCCESS => {\n+    \"changed\": false,\n+    \"ping\": \"pong\"\n+}\n+192.168.99.100 | SUCCESS => {\n+    \"changed\": false,\n+    \"ping\": \"pong\"\n+}\n+```\n+\n+### Using Ansible\n+**Caveat:** All ansible commands are meant to be executed from the `ansible` directory.\n+This is important because that's where `ansible.cfg` is located which contains generic settings that are needed for the remaining steps.\n+\n+In all instructions, replace `<environment>` with your target environment. e.g. `mac`if you want to deploy using a local mac setup.\n+\n+In all instructions, replace `<openwhisk_home>` with the base directory of your Openwhisk source tree. e.g. `openwhisk`\n+\n+\n+#### Install Prerequisites\n+This needs to be done only once per environment. It will install necessary prerequisites on all target hosts in the environment.\n+\n+```\n+ansible-playbook -i environments/<environment> prereq.yml","path":"ansible/README.md","position":64,"original_position":64,"commit_id":"ea2e3e8bc60f12bae4fbd1acdec4587ee93da640","original_commit_id":"ea2e3e8bc60f12bae4fbd1acdec4587ee93da640","user":{"login":"lehoanganh","id":1235825,"avatar_url":"https://avatars.githubusercontent.com/u/1235825?v=3","gravatar_id":"","url":"https://api.github.com/users/lehoanganh","html_url":"https://github.com/lehoanganh","followers_url":"https://api.github.com/users/lehoanganh/followers","following_url":"https://api.github.com/users/lehoanganh/following{/other_user}","gists_url":"https://api.github.com/users/lehoanganh/gists{/gist_id}","starred_url":"https://api.github.com/users/lehoanganh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lehoanganh/subscriptions","organizations_url":"https://api.github.com/users/lehoanganh/orgs","repos_url":"https://api.github.com/users/lehoanganh/repos","events_url":"https://api.github.com/users/lehoanganh/events{/privacy}","received_events_url":"https://api.github.com/users/lehoanganh/received_events","type":"User","site_admin":false},"body":"actually, it works as designed. It has to check if `pip` is installed in the target at first by invoking the `pip` command (valuate return code), if it's not, it will install pip.\r\n\r\nHowever, ansible treats every **non zero** return code as a failure and stops the process. so, we have to ignore it.\r\n\r\nAnother idea, we can install `pip` in the target machine by forcing, but IMHO it's not good to overwrite pip of user installation.","created_at":"2016-05-13T21:22:54Z","updated_at":"2016-05-13T21:22:54Z","html_url":"https://github.com/openwhisk/openwhisk/pull/383#discussion_r63253041","pull_request_url":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383","_links":{"self":{"href":"https://api.github.com/repos/openwhisk/openwhisk/pulls/comments/63253041"},"html":{"href":"https://github.com/openwhisk/openwhisk/pull/383#discussion_r63253041"},"pull_request":{"href":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383"}}},"pull_request":{"url":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383","id":69707390,"html_url":"https://github.com/openwhisk/openwhisk/pull/383","diff_url":"https://github.com/openwhisk/openwhisk/pull/383.diff","patch_url":"https://github.com/openwhisk/openwhisk/pull/383.patch","issue_url":"https://api.github.com/repos/openwhisk/openwhisk/issues/383","number":383,"state":"open","locked":false,"title":"update README for mac users. also fix mac setup.","user":{"login":"domdom82","id":1755853,"avatar_url":"https://avatars.githubusercontent.com/u/1755853?v=3","gravatar_id":"","url":"https://api.github.com/users/domdom82","html_url":"https://github.com/domdom82","followers_url":"https://api.github.com/users/domdom82/followers","following_url":"https://api.github.com/users/domdom82/following{/other_user}","gists_url":"https://api.github.com/users/domdom82/gists{/gist_id}","starred_url":"https://api.github.com/users/domdom82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/domdom82/subscriptions","organizations_url":"https://api.github.com/users/domdom82/orgs","repos_url":"https://api.github.com/users/domdom82/repos","events_url":"https://api.github.com/users/domdom82/events{/privacy}","received_events_url":"https://api.github.com/users/domdom82/received_events","type":"User","site_admin":false},"body":"removed apt dependency in prereq role because docker-machine uses boot2docker image which is based on tinylinux which does not have apt.\r\n\r\nSigned-off-by: Hoang Anh Le <hoang@de.ibm.com>\r\n\r\nissue #208 update with instructions for mac users","created_at":"2016-05-11T17:02:51Z","updated_at":"2016-05-13T21:22:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b02f70a380c0ba187a1e13d911917c4887e61c30","assignee":{"login":"markusthoemmes","id":1289147,"avatar_url":"https://avatars.githubusercontent.com/u/1289147?v=3","gravatar_id":"","url":"https://api.github.com/users/markusthoemmes","html_url":"https://github.com/markusthoemmes","followers_url":"https://api.github.com/users/markusthoemmes/followers","following_url":"https://api.github.com/users/markusthoemmes/following{/other_user}","gists_url":"https://api.github.com/users/markusthoemmes/gists{/gist_id}","starred_url":"https://api.github.com/users/markusthoemmes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markusthoemmes/subscriptions","organizations_url":"https://api.github.com/users/markusthoemmes/orgs","repos_url":"https://api.github.com/users/markusthoemmes/repos","events_url":"https://api.github.com/users/markusthoemmes/events{/privacy}","received_events_url":"https://api.github.com/users/markusthoemmes/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383/commits","review_comments_url":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383/comments","review_comment_url":"https://api.github.com/repos/openwhisk/openwhisk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openwhisk/openwhisk/issues/383/comments","statuses_url":"https://api.github.com/repos/openwhisk/openwhisk/statuses/ea2e3e8bc60f12bae4fbd1acdec4587ee93da640","head":{"label":"domdom82:ansible_doc","ref":"ansible_doc","sha":"ea2e3e8bc60f12bae4fbd1acdec4587ee93da640","user":{"login":"domdom82","id":1755853,"avatar_url":"https://avatars.githubusercontent.com/u/1755853?v=3","gravatar_id":"","url":"https://api.github.com/users/domdom82","html_url":"https://github.com/domdom82","followers_url":"https://api.github.com/users/domdom82/followers","following_url":"https://api.github.com/users/domdom82/following{/other_user}","gists_url":"https://api.github.com/users/domdom82/gists{/gist_id}","starred_url":"https://api.github.com/users/domdom82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/domdom82/subscriptions","organizations_url":"https://api.github.com/users/domdom82/orgs","repos_url":"https://api.github.com/users/domdom82/repos","events_url":"https://api.github.com/users/domdom82/events{/privacy}","received_events_url":"https://api.github.com/users/domdom82/received_events","type":"User","site_admin":false},"repo":{"id":53428780,"name":"openwhisk","full_name":"domdom82/openwhisk","owner":{"login":"domdom82","id":1755853,"avatar_url":"https://avatars.githubusercontent.com/u/1755853?v=3","gravatar_id":"","url":"https://api.github.com/users/domdom82","html_url":"https://github.com/domdom82","followers_url":"https://api.github.com/users/domdom82/followers","following_url":"https://api.github.com/users/domdom82/following{/other_user}","gists_url":"https://api.github.com/users/domdom82/gists{/gist_id}","starred_url":"https://api.github.com/users/domdom82/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/domdom82/subscriptions","organizations_url":"https://api.github.com/users/domdom82/orgs","repos_url":"https://api.github.com/users/domdom82/repos","events_url":"https://api.github.com/users/domdom82/events{/privacy}","received_events_url":"https://api.github.com/users/domdom82/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/domdom82/openwhisk","description":"OpenWhisk is a cloud-first distributed event-based programming service.","fork":true,"url":"https://api.github.com/repos/domdom82/openwhisk","forks_url":"https://api.github.com/repos/domdom82/openwhisk/forks","keys_url":"https://api.github.com/repos/domdom82/openwhisk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/domdom82/openwhisk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/domdom82/openwhisk/teams","hooks_url":"https://api.github.com/repos/domdom82/openwhisk/hooks","issue_events_url":"https://api.github.com/repos/domdom82/openwhisk/issues/events{/number}","events_url":"https://api.github.com/repos/domdom82/openwhisk/events","assignees_url":"https://api.github.com/repos/domdom82/openwhisk/assignees{/user}","branches_url":"https://api.github.com/repos/domdom82/openwhisk/branches{/branch}","tags_url":"https://api.github.com/repos/domdom82/openwhisk/tags","blobs_url":"https://api.github.com/repos/domdom82/openwhisk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/domdom82/openwhisk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/domdom82/openwhisk/git/refs{/sha}","trees_url":"https://api.github.com/repos/domdom82/openwhisk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/domdom82/openwhisk/statuses/{sha}","languages_url":"https://api.github.com/repos/domdom82/openwhisk/languages","stargazers_url":"https://api.github.com/repos/domdom82/openwhisk/stargazers","contributors_url":"https://api.github.com/repos/domdom82/openwhisk/contributors","subscribers_url":"https://api.github.com/repos/domdom82/openwhisk/subscribers","subscription_url":"https://api.github.com/repos/domdom82/openwhisk/subscription","commits_url":"https://api.github.com/repos/domdom82/openwhisk/commits{/sha}","git_commits_url":"https://api.github.com/repos/domdom82/openwhisk/git/commits{/sha}","comments_url":"https://api.github.com/repos/domdom82/openwhisk/comments{/number}","issue_comment_url":"https://api.github.com/repos/domdom82/openwhisk/issues/comments{/number}","contents_url":"https://api.github.com/repos/domdom82/openwhisk/contents/{+path}","compare_url":"https://api.github.com/repos/domdom82/openwhisk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/domdom82/openwhisk/merges","archive_url":"https://api.github.com/repos/domdom82/openwhisk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/domdom82/openwhisk/downloads","issues_url":"https://api.github.com/repos/domdom82/openwhisk/issues{/number}","pulls_url":"https://api.github.com/repos/domdom82/openwhisk/pulls{/number}","milestones_url":"https://api.github.com/repos/domdom82/openwhisk/milestones{/number}","notifications_url":"https://api.github.com/repos/domdom82/openwhisk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/domdom82/openwhisk/labels{/name}","releases_url":"https://api.github.com/repos/domdom82/openwhisk/releases{/id}","deployments_url":"https://api.github.com/repos/domdom82/openwhisk/deployments","created_at":"2016-03-08T16:48:03Z","updated_at":"2016-03-08T16:48:05Z","pushed_at":"2016-05-13T14:48:23Z","git_url":"git://github.com/domdom82/openwhisk.git","ssh_url":"git@github.com:domdom82/openwhisk.git","clone_url":"https://github.com/domdom82/openwhisk.git","svn_url":"https://github.com/domdom82/openwhisk","homepage":"","size":40808,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openwhisk:master","ref":"master","sha":"a1b7859c18b053d1dd29c1bebb91646fcfe4ea01","user":{"login":"openwhisk","id":16900235,"avatar_url":"https://avatars.githubusercontent.com/u/16900235?v=3","gravatar_id":"","url":"https://api.github.com/users/openwhisk","html_url":"https://github.com/openwhisk","followers_url":"https://api.github.com/users/openwhisk/followers","following_url":"https://api.github.com/users/openwhisk/following{/other_user}","gists_url":"https://api.github.com/users/openwhisk/gists{/gist_id}","starred_url":"https://api.github.com/users/openwhisk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openwhisk/subscriptions","organizations_url":"https://api.github.com/users/openwhisk/orgs","repos_url":"https://api.github.com/users/openwhisk/repos","events_url":"https://api.github.com/users/openwhisk/events{/privacy}","received_events_url":"https://api.github.com/users/openwhisk/received_events","type":"Organization","site_admin":false},"repo":{"id":52039373,"name":"openwhisk","full_name":"openwhisk/openwhisk","owner":{"login":"openwhisk","id":16900235,"avatar_url":"https://avatars.githubusercontent.com/u/16900235?v=3","gravatar_id":"","url":"https://api.github.com/users/openwhisk","html_url":"https://github.com/openwhisk","followers_url":"https://api.github.com/users/openwhisk/followers","following_url":"https://api.github.com/users/openwhisk/following{/other_user}","gists_url":"https://api.github.com/users/openwhisk/gists{/gist_id}","starred_url":"https://api.github.com/users/openwhisk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openwhisk/subscriptions","organizations_url":"https://api.github.com/users/openwhisk/orgs","repos_url":"https://api.github.com/users/openwhisk/repos","events_url":"https://api.github.com/users/openwhisk/events{/privacy}","received_events_url":"https://api.github.com/users/openwhisk/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openwhisk/openwhisk","description":"OpenWhisk is a cloud-first distributed event-based programming service.","fork":false,"url":"https://api.github.com/repos/openwhisk/openwhisk","forks_url":"https://api.github.com/repos/openwhisk/openwhisk/forks","keys_url":"https://api.github.com/repos/openwhisk/openwhisk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openwhisk/openwhisk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openwhisk/openwhisk/teams","hooks_url":"https://api.github.com/repos/openwhisk/openwhisk/hooks","issue_events_url":"https://api.github.com/repos/openwhisk/openwhisk/issues/events{/number}","events_url":"https://api.github.com/repos/openwhisk/openwhisk/events","assignees_url":"https://api.github.com/repos/openwhisk/openwhisk/assignees{/user}","branches_url":"https://api.github.com/repos/openwhisk/openwhisk/branches{/branch}","tags_url":"https://api.github.com/repos/openwhisk/openwhisk/tags","blobs_url":"https://api.github.com/repos/openwhisk/openwhisk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openwhisk/openwhisk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openwhisk/openwhisk/git/refs{/sha}","trees_url":"https://api.github.com/repos/openwhisk/openwhisk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openwhisk/openwhisk/statuses/{sha}","languages_url":"https://api.github.com/repos/openwhisk/openwhisk/languages","stargazers_url":"https://api.github.com/repos/openwhisk/openwhisk/stargazers","contributors_url":"https://api.github.com/repos/openwhisk/openwhisk/contributors","subscribers_url":"https://api.github.com/repos/openwhisk/openwhisk/subscribers","subscription_url":"https://api.github.com/repos/openwhisk/openwhisk/subscription","commits_url":"https://api.github.com/repos/openwhisk/openwhisk/commits{/sha}","git_commits_url":"https://api.github.com/repos/openwhisk/openwhisk/git/commits{/sha}","comments_url":"https://api.github.com/repos/openwhisk/openwhisk/comments{/number}","issue_comment_url":"https://api.github.com/repos/openwhisk/openwhisk/issues/comments{/number}","contents_url":"https://api.github.com/repos/openwhisk/openwhisk/contents/{+path}","compare_url":"https://api.github.com/repos/openwhisk/openwhisk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openwhisk/openwhisk/merges","archive_url":"https://api.github.com/repos/openwhisk/openwhisk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openwhisk/openwhisk/downloads","issues_url":"https://api.github.com/repos/openwhisk/openwhisk/issues{/number}","pulls_url":"https://api.github.com/repos/openwhisk/openwhisk/pulls{/number}","milestones_url":"https://api.github.com/repos/openwhisk/openwhisk/milestones{/number}","notifications_url":"https://api.github.com/repos/openwhisk/openwhisk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openwhisk/openwhisk/labels{/name}","releases_url":"https://api.github.com/repos/openwhisk/openwhisk/releases{/id}","deployments_url":"https://api.github.com/repos/openwhisk/openwhisk/deployments","created_at":"2016-02-18T21:16:19Z","updated_at":"2016-05-12T11:55:00Z","pushed_at":"2016-05-13T20:28:50Z","git_url":"git://github.com/openwhisk/openwhisk.git","ssh_url":"git@github.com:openwhisk/openwhisk.git","clone_url":"https://github.com/openwhisk/openwhisk.git","svn_url":"https://github.com/openwhisk/openwhisk","homepage":"","size":41669,"stargazers_count":248,"watchers_count":248,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":75,"mirror_url":null,"open_issues_count":159,"forks":75,"open_issues":159,"watchers":248,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383"},"html":{"href":"https://github.com/openwhisk/openwhisk/pull/383"},"issue":{"href":"https://api.github.com/repos/openwhisk/openwhisk/issues/383"},"comments":{"href":"https://api.github.com/repos/openwhisk/openwhisk/issues/383/comments"},"review_comments":{"href":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383/comments"},"review_comment":{"href":"https://api.github.com/repos/openwhisk/openwhisk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openwhisk/openwhisk/pulls/383/commits"},"statuses":{"href":"https://api.github.com/repos/openwhisk/openwhisk/statuses/ea2e3e8bc60f12bae4fbd1acdec4587ee93da640"}}}}