{"action":"created","comment":{"url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/comments/45574096","id":45574096,"diff_hunk":"@@ -0,0 +1,185 @@\n+Title: Creating virtual machines easily with Vagrant\n+Category: DevOps\n+Tags: vagrant\n+Summary: Getting started with Vagrant\n+Status: draft\n+\n+\n+## What is Vagrant?\n+Vagrant is basically a wrapper around virtual machine providers like VirtualBox, VMware or AWS.\n+You simply create a config file (called `Vagrantfile`) in a folder, use `vagrant up` and you got a VM up and running in less than 30 seconds!\n+The only required entry in the config file is the base image to use, but you can configure multiple properties like port forwarding, IP address, shared folders, amount of memory, script to run on first startup of the machine, etc.\n+This is very useful for sharing, as you only need to share a config file instead of a huge VM folder. And it can be [version controlled](https://en.wikipedia.org/wiki/Version_control)!\n+\n+\n+## Required software\n+For this post, I will use VirtualBox, as it's free, well supported and is the only available provider out of the box (you need to install plugins for the others).\n+Make sure you have [VirtualBox](https://www.virtualbox.org/) and [Vagrant](https://docs.vagrantup.com/v2/installation) installed before continuing.\n+\n+\n+## Getting started\n+Here is the most basic Vagrantfile you can do:\n+```ruby\n+# -*- mode: ruby -*-\n+# vi: set ft=ruby :\n+\n+VAGRANTFILE_API_VERSION = \"2\"\n+\n+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|\n+  config.vm.box = \"ubuntu/trusty64\"\n+end\n+```\n+\n+As you can see, this is plain ruby, so you can use variables, loops, conditions, etc.\n+\n+The base image (called \"box\") I used is Ubuntu 14.04 64 bits.\n+\n+Put this file in a new folder and use `vagrant up` to create the virtual machine.\n+\n+If this is the first time you use this box, you will notice that it didn't take 30 seconds.\n+[I lied](https://www.youtube.com/watch?v=Q2h9L4EVIdI&t=30s)... The box first needs to be downloaded, but it will be 30 seconds for future machines using this box, promise!\n+\n+You should see the VM in the VirtualBox GUI, but **do not edit the configuration there** since Vagrant will probably override your settings. Edit the `Vagrantfile` instead.\n+\n+When the VM is ready, use `vagrant ssh` to SSH in it.\n+Most boxes in Vagrant run in [headless mode](https://en.wikipedia.org/wiki/Headless_software), but if you need a desktop environment, [boxcutter's Ubuntu desktop box](https://atlas.hashicorp.com/boxcutter/boxes/ubuntu1404-desktop) seems to work well.\n+\n+To shutdown the VM, use `vagrant halt`. To destroy it, use `vagrant destroy`. To reboot it, use `vagrant reload`.\n+\n+\n+## Configuration\n+You can also use `vagrant init` to create a `Vagrantfile` with a bunch of options commented out. Let's review the most interesting ones.\n+\n+### Box\n+```ruby\n+# Every Vagrant development environment requires a box. You can search for\n+# boxes at https://atlas.hashicorp.com/search.\n+config.vm.box = \"base\"\n+```\n+In the previous section, I used the official Ubuntu 14.04 box, but you can find more at [https://atlas.hashicorp.com/search](https://atlas.hashicorp.com/search).\n+The value should be the name of the box (`ubuntu/trusty64` for example).\n+\n+You can also use `config.vm.box_url` if the box is not in Hashicorp's Atlas. In this case you need a full URL.\n+\n+### Port forwarding\n+```ruby\n+# Create a forwarded port mapping which allows access to a specific port\n+# within the machine from a port on the host machine. In the example below,\n+# accessing \"localhost:8080\" will access port 80 on the guest machine.\n+config.vm.network \"forwarded_port\", guest: 80, host: 8080\n+```\n+\n+Port forwarding can be useful if you need to access a service in the VM from a machine on the network but don't want to expose the whole VM.\n+\n+### Private network\n+```ruby\n+# Create a private network, which allows host-only access to the machine\n+# using a specific IP.\n+config.vm.network \"private_network\", ip: \"192.168.56.10\"\n+```\n+\n+This will create a \"host-only network\", which allows other VMs and the host to communicate together.\n+If the interface doesn't exist on the host, it will create it.\n+\n+### Public network\n+```ruby\n+# Create a public network, which generally matched to bridged network.\n+# Bridged networks make the machine appear as another physical device on\n+# your network.\n+config.vm.network \"public_network\"\n+```\n+\n+The word `public` here is confusing. This will add an interface on the same network than the host.\n+Let's say your host has IP `192.168.0.100`, your VM could get `192.168.0.167` for example.\n+This means you will be able to ping the VM from another computer in the same network.\n+**Since Vagrant is [insecure by default](https://docs.vagrantup.com/v2/networking/public_network.html), this is probably a bad idea.**\n+\n+### Shared folders\n+```ruby\n+# Share an additional folder to the guest VM. The first argument is\n+# the path on the host to the actual folder. The second argument is\n+# the path on the guest to mount the folder. And the optional third\n+# argument is a set of non-required options.\n+config.vm.synced_folder \"../data\", \"/vagrant_data\"\n+```\n+\n+Share a folder with the host. By default, Vagrant shares the folder containing the `Vagrantfile` to the `/vagrant` folder in the VM.\n+\n+### Provider-specific configuration\n+```ruby\n+# Provider-specific configuration so you can fine-tune various\n+# backing providers for Vagrant. These expose provider-specific options.\n+# Example for VirtualBox:\n+#\n+config.vm.provider \"virtualbox\" do |vb|\n+  # Display the VirtualBox GUI when booting the machine\n+  vb.gui = true\n+\n+  # Customize the amount of memory on the VM:\n+  vb.memory = \"1024\"\n+end\n+#\n+# View the documentation for the provider you are using for more\n+# information on available options.\n+```\n+\n+Note that customizing the amount of memory is done on a per-provider basis.\n+\n+### Provisionning\n+```ruby\n+# Enable provisioning with a shell script. Additional provisioners such as\n+# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the\n+# documentation for more information about their specific syntax and use.\n+config.vm.provision \"shell\", inline: <<-SHELL\n+  sudo apt-get update\n+  sudo apt-get install -y apache2\n+SHELL\n+```\n+\n+Provisionning is used to setup the VM once it is booted.\n+Of course, you can simply SSH in the machine and install what you want in it, but adding it in the `Vagrantfile` will automate the process if you need multiple VMs or want to share it.\n+\n+You can add your script inline (like the example), but you can also use a script file or configuration managements systems like Chef, Puppet, Ansible or Salt.\n+If you use scripts, make sure they are non-interactive! (Add the `-y` flag to `apt-get install` for example).\n+\n+Provisionning happens is these situations:\n+\n+* On the **first** `vagrant up`\n+* On a running VM, `vagrant provision`\n+* `vagrant up --provision`\n+* `vagrant reload --provision`\n+\n+\n+## Defining multiple machines in a Vagrantfile\n+To do so, use `config.vm.define` in the `Vagrantfile`.\n+\n+```ruby\n+# -*- mode: ruby -*-\n+# vi: set ft=ruby :\n+\n+VAGRANTFILE_API_VERSION = \"2\"\n+\n+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|\n+  config.vm.box = \"ubuntu/trusty64\"\n+\n+  config.vm.define \"alice\" do |alice|\n+    alice.vm.network :private_network, ip: \"192.168.56.210\"\n+  end\n+\n+  config.vm.define \"bob\" do |bob|\n+    bob.vm.network :private_network, ip: \"192.168.56.211\"\n+  end\n+end\n+```\n+\n+Here, the sub-configs inherits from `config`, so alice and bob will both have the box `ubuntu/trusty64`.\n+You can define it per-machine, just make sure you use the per-machine variables (`bob` and `alice`).\n+\n+The vagrant command lines differs when there is multiple machines defined.","path":"content/2015-11-20-creating-virtual-machines-easily-with-vagrant.md","position":178,"original_position":178,"commit_id":"9a03672e7b535ecc28f48262c93116b7574bbbb6","original_commit_id":"9a03672e7b535ecc28f48262c93116b7574bbbb6","user":{"login":"jclariviere","id":6819051,"avatar_url":"https://avatars.githubusercontent.com/u/6819051?v=3","gravatar_id":"","url":"https://api.github.com/users/jclariviere","html_url":"https://github.com/jclariviere","followers_url":"https://api.github.com/users/jclariviere/followers","following_url":"https://api.github.com/users/jclariviere/following{/other_user}","gists_url":"https://api.github.com/users/jclariviere/gists{/gist_id}","starred_url":"https://api.github.com/users/jclariviere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jclariviere/subscriptions","organizations_url":"https://api.github.com/users/jclariviere/orgs","repos_url":"https://api.github.com/users/jclariviere/repos","events_url":"https://api.github.com/users/jclariviere/events{/privacy}","received_events_url":"https://api.github.com/users/jclariviere/received_events","type":"User","site_admin":false},"body":"En fait ça devait être \"command line\" et non \"command lines\"","created_at":"2015-11-23T05:56:02Z","updated_at":"2015-11-23T05:56:02Z","html_url":"https://github.com/jclariviere/jclariviere.github.io/pull/1#discussion_r45574096","pull_request_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/comments/45574096"},"html":{"href":"https://github.com/jclariviere/jclariviere.github.io/pull/1#discussion_r45574096"},"pull_request":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1","id":51454686,"html_url":"https://github.com/jclariviere/jclariviere.github.io/pull/1","diff_url":"https://github.com/jclariviere/jclariviere.github.io/pull/1.diff","patch_url":"https://github.com/jclariviere/jclariviere.github.io/pull/1.patch","issue_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/1","number":1,"state":"open","locked":false,"title":"Post on Vagrant","user":{"login":"jclariviere","id":6819051,"avatar_url":"https://avatars.githubusercontent.com/u/6819051?v=3","gravatar_id":"","url":"https://api.github.com/users/jclariviere","html_url":"https://github.com/jclariviere","followers_url":"https://api.github.com/users/jclariviere/followers","following_url":"https://api.github.com/users/jclariviere/following{/other_user}","gists_url":"https://api.github.com/users/jclariviere/gists{/gist_id}","starred_url":"https://api.github.com/users/jclariviere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jclariviere/subscriptions","organizations_url":"https://api.github.com/users/jclariviere/orgs","repos_url":"https://api.github.com/users/jclariviere/repos","events_url":"https://api.github.com/users/jclariviere/events{/privacy}","received_events_url":"https://api.github.com/users/jclariviere/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-11-22T01:06:39Z","updated_at":"2015-11-23T05:56:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e87e47727f20f8ad66bc1545b99b55a1317a14d6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1/commits","review_comments_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1/comments","review_comment_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/1/comments","statuses_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/statuses/9a03672e7b535ecc28f48262c93116b7574bbbb6","head":{"label":"jclariviere:post_vagrant-getting-started","ref":"post_vagrant-getting-started","sha":"9a03672e7b535ecc28f48262c93116b7574bbbb6","user":{"login":"jclariviere","id":6819051,"avatar_url":"https://avatars.githubusercontent.com/u/6819051?v=3","gravatar_id":"","url":"https://api.github.com/users/jclariviere","html_url":"https://github.com/jclariviere","followers_url":"https://api.github.com/users/jclariviere/followers","following_url":"https://api.github.com/users/jclariviere/following{/other_user}","gists_url":"https://api.github.com/users/jclariviere/gists{/gist_id}","starred_url":"https://api.github.com/users/jclariviere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jclariviere/subscriptions","organizations_url":"https://api.github.com/users/jclariviere/orgs","repos_url":"https://api.github.com/users/jclariviere/repos","events_url":"https://api.github.com/users/jclariviere/events{/privacy}","received_events_url":"https://api.github.com/users/jclariviere/received_events","type":"User","site_admin":false},"repo":{"id":19164199,"name":"jclariviere.github.io","full_name":"jclariviere/jclariviere.github.io","owner":{"login":"jclariviere","id":6819051,"avatar_url":"https://avatars.githubusercontent.com/u/6819051?v=3","gravatar_id":"","url":"https://api.github.com/users/jclariviere","html_url":"https://github.com/jclariviere","followers_url":"https://api.github.com/users/jclariviere/followers","following_url":"https://api.github.com/users/jclariviere/following{/other_user}","gists_url":"https://api.github.com/users/jclariviere/gists{/gist_id}","starred_url":"https://api.github.com/users/jclariviere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jclariviere/subscriptions","organizations_url":"https://api.github.com/users/jclariviere/orgs","repos_url":"https://api.github.com/users/jclariviere/repos","events_url":"https://api.github.com/users/jclariviere/events{/privacy}","received_events_url":"https://api.github.com/users/jclariviere/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jclariviere/jclariviere.github.io","description":"","fork":false,"url":"https://api.github.com/repos/jclariviere/jclariviere.github.io","forks_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/forks","keys_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/teams","hooks_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/hooks","issue_events_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/events","assignees_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/tags","blobs_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/languages","stargazers_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/stargazers","contributors_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/contributors","subscribers_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/subscribers","subscription_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/subscription","commits_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/merges","archive_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/downloads","issues_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/labels{/name}","releases_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/releases{/id}","created_at":"2014-04-25T23:53:03Z","updated_at":"2015-11-18T05:49:21Z","pushed_at":"2015-11-22T05:52:40Z","git_url":"git://github.com/jclariviere/jclariviere.github.io.git","ssh_url":"git@github.com:jclariviere/jclariviere.github.io.git","clone_url":"https://github.com/jclariviere/jclariviere.github.io.git","svn_url":"https://github.com/jclariviere/jclariviere.github.io","homepage":null,"size":716,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"pelican-source"}},"base":{"label":"jclariviere:pelican-source","ref":"pelican-source","sha":"39b2cc33275788e824529462505b3096a24d7d28","user":{"login":"jclariviere","id":6819051,"avatar_url":"https://avatars.githubusercontent.com/u/6819051?v=3","gravatar_id":"","url":"https://api.github.com/users/jclariviere","html_url":"https://github.com/jclariviere","followers_url":"https://api.github.com/users/jclariviere/followers","following_url":"https://api.github.com/users/jclariviere/following{/other_user}","gists_url":"https://api.github.com/users/jclariviere/gists{/gist_id}","starred_url":"https://api.github.com/users/jclariviere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jclariviere/subscriptions","organizations_url":"https://api.github.com/users/jclariviere/orgs","repos_url":"https://api.github.com/users/jclariviere/repos","events_url":"https://api.github.com/users/jclariviere/events{/privacy}","received_events_url":"https://api.github.com/users/jclariviere/received_events","type":"User","site_admin":false},"repo":{"id":19164199,"name":"jclariviere.github.io","full_name":"jclariviere/jclariviere.github.io","owner":{"login":"jclariviere","id":6819051,"avatar_url":"https://avatars.githubusercontent.com/u/6819051?v=3","gravatar_id":"","url":"https://api.github.com/users/jclariviere","html_url":"https://github.com/jclariviere","followers_url":"https://api.github.com/users/jclariviere/followers","following_url":"https://api.github.com/users/jclariviere/following{/other_user}","gists_url":"https://api.github.com/users/jclariviere/gists{/gist_id}","starred_url":"https://api.github.com/users/jclariviere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jclariviere/subscriptions","organizations_url":"https://api.github.com/users/jclariviere/orgs","repos_url":"https://api.github.com/users/jclariviere/repos","events_url":"https://api.github.com/users/jclariviere/events{/privacy}","received_events_url":"https://api.github.com/users/jclariviere/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jclariviere/jclariviere.github.io","description":"","fork":false,"url":"https://api.github.com/repos/jclariviere/jclariviere.github.io","forks_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/forks","keys_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/teams","hooks_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/hooks","issue_events_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/events","assignees_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/tags","blobs_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/languages","stargazers_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/stargazers","contributors_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/contributors","subscribers_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/subscribers","subscription_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/subscription","commits_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/merges","archive_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/downloads","issues_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/labels{/name}","releases_url":"https://api.github.com/repos/jclariviere/jclariviere.github.io/releases{/id}","created_at":"2014-04-25T23:53:03Z","updated_at":"2015-11-18T05:49:21Z","pushed_at":"2015-11-22T05:52:40Z","git_url":"git://github.com/jclariviere/jclariviere.github.io.git","ssh_url":"git@github.com:jclariviere/jclariviere.github.io.git","clone_url":"https://github.com/jclariviere/jclariviere.github.io.git","svn_url":"https://github.com/jclariviere/jclariviere.github.io","homepage":null,"size":716,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"pelican-source"}},"_links":{"self":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1"},"html":{"href":"https://github.com/jclariviere/jclariviere.github.io/pull/1"},"issue":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/1"},"comments":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/jclariviere/jclariviere.github.io/statuses/9a03672e7b535ecc28f48262c93116b7574bbbb6"}}}}