Giter Site home page Giter Site logo

aws-rds-cookbook's Introduction

I build things for people that build things. Founder, Akash Network

aws-rds-cookbook's People

Contributors

cjs226 avatar dkinzer avatar ericachelis avatar kplimack avatar namtzigla avatar tim95030 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

aws-rds-cookbook's Issues

database from snapshot

would it be possible to add the ability to create a database from snapshot, very useful for CI testing?

NoMethodError: undefined method `db_parameter_group_name' for <AWS::RDS::DBInstance

I'm seeing the following error on reprovisioning:


==> website: [2014-09-03T20:46:45+00:00] INFO: service[apache2] restarted
==> website: [2014-09-03T20:46:45+00:00] ERROR: Running exception handlers
==> website: [2014-09-03T20:46:45+00:00] ERROR: Exception handlers complete
==> website: [2014-09-03T20:46:45+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> website: [2014-09-03T20:46:45+00:00] ERROR: aws-rds[aws-db-website-0] (website::rds line 12) had an error:
 NoMethodError: undefined method `db_parameter_group_name' for <AWS::RDS::DBInstance db_instance_identifier:aw
s-db-website-0>:AWS::RDS::DBInstance
==> website: [2014-09-03T20:46:45+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited 
unsuccessfully (exit code 1)

NameError: uninitialized constant Overclock::Aws::RDS::AWS

I'm getting the following error and I'm not able to find the root cause:

NameError

uninitialized constant Overclock::Aws::RDS::AWS

Cookbook Trace:

/var/chef/cache/cookbooks/aws-rds/libraries/rds.rb:84:in rds' /var/chef/cache/cookbooks/aws-rds/libraries/rds.rb:75:in instance'
/var/chef/cache/cookbooks/aws-rds/providers/default.rb:26:in `load_current_resource'

Resource Declaration:

In /var/chef/cache/cookbooks/AIPL_AAAP/recipes/aws_rds_postgresql.rb

Could you please help?

Create Release

It would be great if a new release can be created for this cookbook. Some of the pull-requests and fixes on master that are a year+ old branch were never released.

Thank you!

aws-sdk install fails

I'm using version 1.3 downloaded from community.opscode.com and ran into difficulties getting it to run on Ubuntu 12.04 because nokogiri compilation would fail during the aws-sdk install due to lack of build dependencies:

Recipe: aws-rds::default
  * chef_gem[aws-sdk] action installBuilding nokogiri using packaged libraries.

================================================================================
Error executing action `install` on resource 'chef_gem[aws-sdk]'
================================================================================


Gem::Installer::ExtensionBuildError
-----------------------------------
ERROR: Failed to build gem native extension.

        /opt/chef/embedded/bin/ruby extconf.rb
Building nokogiri using packaged libraries.
checking for iconv.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/opt/chef/embedded/bin/ruby
    --help
    --clean
    --use-system-libraries
    --enable-static
    --disable-static
    --with-zlib-dir
    --without-zlib-dir
    --with-zlib-include
    --without-zlib-include=${zlib-dir}/include
    --with-zlib-lib
    --without-zlib-lib=${zlib-dir}/lib
    --enable-cross-build
    --disable-cross-build
/opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:931:in `block in have_header'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:930:in `have_header'
    from extconf.rb:103:in `have_iconv?'
    from extconf.rb:148:in `block (2 levels) in iconv_prefix'
    from extconf.rb:90:in `preserving_globals'
    from extconf.rb:143:in `block in iconv_prefix'
    from extconf.rb:116:in `block in each_iconv_idir'
    from extconf.rb:113:in `each'
    from extconf.rb:113:in `each_iconv_idir'
    from extconf.rb:137:in `iconv_prefix'
    from extconf.rb:424:in `block in <main>'
    from extconf.rb:161:in `block in process_recipe'
    from extconf.rb:154:in `tap'
    from extconf.rb:154:in `process_recipe'
    from extconf.rb:419:in `<main>'


Gem files will remain installed in /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out



Cookbook Trace:
---------------
/var/chef/cache/cookbooks/aws-rds/recipes/default.rb:27:in `from_file'
/var/chef/cache/cookbooks/mycookbook/recipes/api-db.rb:34:in `from_file'
/var/chef/cache/cookbooks/mycookbook/recipes/api.rb:66:in `from_file'


Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/aws-rds/recipes/default.rb

 27: chef_gem "aws-sdk" do
 28:   version node[:aws_sdk_version]
 29:   action :install
 30: end



Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/aws-rds/recipes/default.rb:27:in `from_file'

chef_gem("aws-sdk") do
  provider Chef::Provider::Package::Rubygems
  action [:install]
  retries 0
  retry_delay 2
  package_name "aws-sdk"
  version "1.11.1"
  cookbook_name "aws-rds"
  recipe_name "default"
end

After a bunch of trial and error, I ended up fixing the problem by including the build-essential cookbook and forcing it to install at compile time:

node.set['build_essential']['compiletime'] = true
include_recipe 'build-essential'
include_recipe 'aws-rds'

aws_rds 'mydb' do
...

It might be a good idea to add a build-essential dependency or at least add this info to the readme.

Remove .DS_Store files from opscode site cookbook

I ran into a Berkshelf error ("NoMethodError: undefined method `cookbook' for nil:NilClass") with aws-rds when pulling form the community site. It works when I pull directly from github. It might be due to the opscode cookbook having .DS_Store files.

Whether or not that's the issue, you should remove those files anyways.

Thanks!

How can I choose the VPC

Hello, there is something that is not clear to me. How can I select what VPC to use? it's always creating it on the default VPC. Please help.

Thanks in advance,

Leo

getaddrinfo: nodename nor servname provided, or not known

Hi!

I was trying to use aws_rds but I kept getting this error:

[2015-06-04T09:06:55-03:00] DEBUG: providers for generic gem_package resource enabled on node include: [Chef::Provider::Package::Rubygems]
[2015-06-04T09:06:55-03:00] DEBUG: providers that refused resource gem_package[aws-sdk] were: []
[2015-06-04T09:06:55-03:00] DEBUG: providers that support resource gem_package[aws-sdk] include: [Chef::Provider::Package::Rubygems]
[2015-06-04T09:06:55-03:00] DEBUG: providers that survived replacement include: [Chef::Provider::Package::Rubygems]
[2015-06-04T09:06:55-03:00] DEBUG: gem_package[aws-sdk] using gem from running ruby environment
[2015-06-04T09:06:55-03:00] DEBUG: gem_package[aws-sdk] newest installed version of gem aws-sdk is 1.64.0
[2015-06-04T09:06:55-03:00] DEBUG:  found gem aws-sdk version 1.53.0 for platform ruby from #<Gem::Source:0x007fe4c2388868>
[2015-06-04T09:06:55-03:00] DEBUG: gem_package[aws-sdk] aws-sdk 1.64.0 needs updating to 1.53.0
Parsing documentation for aws-sdk-v1-1.53.0
Parsing documentation for aws-sdk-1.53.0
Done installing documentation for aws-sdk-v1, aws-sdk after 13 seconds
Parsing documentation for aws-sdk-1.53.0
Parsing documentation for aws-sdk-v1-1.53.0
Done installing documentation for aws-sdk, aws-sdk-v1 after 14 seconds
[2015-06-04T09:07:26-03:00] INFO: gem_package[aws-sdk] installed aws-sdk at 1.53.0

   - install version 1.53.0 of package aws-sdk
 * aws-rds[rds] action create[2015-06-04T09:07:26-03:00] INFO: Processing aws-rds[rds] action create (rds::default line 18)
[2015-06-04T09:07:26-03:00] DEBUG: providers for generic aws-rds resource enabled on node include: []
[2015-06-04T09:07:26-03:00] DEBUG: providers that refused resource aws-rds[rds] were: []
[2015-06-04T09:07:26-03:00] DEBUG: providers that support resource aws-rds[rds] include: []
[2015-06-04T09:07:26-03:00] DEBUG: no providers supported the resource, falling back to enabled handlers
[2015-06-04T09:07:26-03:00] DEBUG: providers that survived replacement include: []
[2015-06-04T09:07:26-03:00] DEBUG: dynamic provider resolver FAILED to resolve a provider
[2015-06-04T09:07:26-03:00] DEBUG: Platform mac_os_x not found, using all defaults. (Unsupported platform?)
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
 [-e pattern] [-f file] [--binary-files=value] [--color=when]
 [--context[=num]] [--directories=action] [--label] [--line-buffered]
 [--null] [pattern] [file ...]


   ================================================================================
   Error executing action `create` on resource 'aws-rds[rds]'
   ================================================================================

   SocketError
   -----------
   getaddrinfo: nodename nor servname provided, or not known

   Cookbook Trace:
   ---------------
   /var/chef/cache/cookbooks/aws-rds/providers/default.rb:26:in `load_current_resource'

   Resource Declaration:
   ---------------------
   # In /var/chef/cache/cookbooks/rds/recipes/default.rb

    18: aws_rds node[:rds][:id] do
    19:   aws_access_key        aws_keys['aws_access_key_id']
    20:   aws_secret_access_key aws_keys['aws_secret_access_key']
    21:   availability_zone     aws_keys['availability_zone']
    22:   # db_subnet_group_name  'cluster'
    23:   engine                'postgres'
    24:   engine_version        '9.4.1'
    25:   db_instance_class     node[:rds][:db_instance_class]
    26:   backup_retention_period node[:rds][:backup_retention_period].to_i
    27:   allocated_storage     node[:rds][:storage]
    28:   db_name               node[:rds][:name]
    29:   master_username       secrets['data']['postgresql']['sql_username']
    30:   master_user_password  secrets['data']['postgresql']['sql_password']
    31:   publicly_accessible   true
    32:   # iops                  node[:rds][:iops]
    33:   # multi_az              true
    34:   # vpc_security_group_ids ['sg-123123321']
    35:   # preferred_backup_window '05:30-06:00'
    36: end

   Compiled Resource:
   ------------------
   # Declared in /var/chef/cache/cookbooks/rds/recipes/default.rb:18:in `from_file'

   aws_rds("rds") do
     action :create
     retries 0
     retry_delay 2
     default_guard_interpreter :default
     declared_type :aws_rds
     cookbook_name "rds"
     recipe_name "default"
     aws_access_key "ASLKDFJLKSDFLKSJADFLSJLKDFJ"
     aws_secret_access_key "ADLKJFLAKSJDFLASDJFLKLKASDJFKLSALKDJF"
     availability_zone "us-west-2b"
     engine "postgres"
     engine_version "9.4.1"
     db_instance_class "db.t2.micro"
     backup_retention_period 7
     allocated_storage 1
     db_name "carbide-production"
     master_username "root"
     master_user_password "ALLYOURSECRETSBELONGTOUS"
     publicly_accessible true
     id "rds"
   end

[2015-06-04T09:08:44-03:00] INFO: Running queued delayed notifications before re-raising exception
[2015-06-04T09:08:44-03:00] DEBUG: Re-raising exception: SocketError - aws-rds[rds] (rds::default line 18) had an error: SocketError: getaddrinfo: nodename nor servname provided, or not known
/Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:879:in `initialize'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:879:in `open'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:879:in `block in connect'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:91:in `block in timeout'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:101:in `call'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:101:in `timeout'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:878:in `connect'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:863:in `do_start'
 /Users/etagwerker/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:858:in `start'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/http/connection_pool.rb:327:in `start_session'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/http/connection_pool.rb:127:in `session_for'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/http/net_http_handler.rb:56:in `handle'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:253:in `block in make_sync_request'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:289:in `retry_server_errors'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:249:in `make_sync_request'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:511:in `block (2 levels) in client_request'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:391:in `log_client_request'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:477:in `block in client_request'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:373:in `return_or_raise'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/core/client.rb:476:in `client_request'
 (eval):3:in `describe_db_instances'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/rds/db_instance.rb:210:in `get_resource'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/aws-sdk-v1-1.64.0/lib/aws/rds/db_instance.rb:197:in `exists?'
 /var/chef/cache/cookbooks/aws-rds/providers/default.rb:26:in `load_current_resource'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/provider.rb:113:in `run_action'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource.rb:562:in `run_action'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/runner.rb:49:in `run_action'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/runner.rb:81:in `block (2 levels) in converge'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/runner.rb:81:in `each'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/runner.rb:81:in `block in converge'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource_collection/resource_list.rb:83:in `block in execute_each_resource'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call_iterator_block'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource_collection/stepable_iterator.rb:85:in `step'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource_collection/stepable_iterator.rb:104:in `iterate'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/resource_collection/resource_list.rb:81:in `execute_each_resource'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/runner.rb:80:in `converge'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/client.rb:339:in `block in converge'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/client.rb:334:in `catch'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/client.rb:334:in `converge'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/client.rb:353:in `converge_and_save'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/client.rb:457:in `run'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application.rb:271:in `block in fork_chef_client'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application.rb:259:in `fork'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application.rb:259:in `fork_chef_client'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application.rb:225:in `block in run_chef_client'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/local_mode.rb:39:in `with_server_connectivity'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application.rb:213:in `run_chef_client'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application/client.rb:402:in `block in interval_run_chef_client'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application/client.rb:392:in `loop'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application/client.rb:392:in `interval_run_chef_client'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application/client.rb:382:in `run_application'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/lib/chef/application.rb:60:in `run'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/gems/chef-12.3.0/bin/chef-client:26:in `<top (required)>'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/bin/chef-client:23:in `load'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/bin/chef-client:23:in `<main>'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/bin/ruby_executable_hooks:15:in `eval'
 /Users/etagwerker/.rvm/gems/ruby-2.1.2@chef/bin/ruby_executable_hooks:15:in `<main>'

I think that the problem was that I wasn't specifying a region within the aws_rds block and this cookbook couldn't determine the region using this:

def determine_region

It started working when I changed my recipe to this:

aws_keys = data_bag_item('cluster', 'main')

aws_rds node[:rds][:id] do
  aws_access_key        aws_keys['aws_access_key_id']
  aws_secret_access_key aws_keys['aws_secret_access_key']
  availability_zone     aws_keys['availability_zone']
  region                aws_keys['region']
  # ... 
end

Maybe you could add information about the region parameter to https://github.com/gosuri/aws-rds-cookbook/blob/master/README.md

What do you think?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.