diff --git a/sample/.bundle/config b/sample/.bundle/config deleted file mode 100644 index 0fe0ab90..00000000 --- a/sample/.bundle/config +++ /dev/null @@ -1,3 +0,0 @@ ---- -BUNDLE_PATH: gems -BUNDLE_DISABLE_SHARED_GEMS: '1' diff --git a/sample/Gemfile b/sample/Gemfile deleted file mode 100644 index c8e8217f..00000000 --- a/sample/Gemfile +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -source 'https://rubygems.org' - -gem 'moonshot', '~> 0.7.0' diff --git a/sample/Gemfile.lock b/sample/Gemfile.lock deleted file mode 100644 index cffd5a20..00000000 --- a/sample/Gemfile.lock +++ /dev/null @@ -1,61 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (4.2.6) - i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - aws-sdk (2.2.36) - aws-sdk-resources (= 2.2.36) - aws-sdk-core (2.2.36) - jmespath (~> 1.0) - aws-sdk-resources (2.2.36) - aws-sdk-core (= 2.2.36) - colorize (0.7.7) - github-markup (1.4.0) - highline (1.7.8) - i18n (0.7.0) - interactive-logger (0.1.1) - colorize (~> 0.7.7) - ruby-duration (~> 3.2, >= 3.2.1) - iso8601 (0.9.0) - jmespath (1.2.4) - json_pure (>= 1.8.1) - json (1.8.3) - json_pure (1.8.3) - minitest (5.8.4) - moonshot (0.7.0) - aws-sdk (~> 2.2.0) - colorize - highline (~> 1.7.2) - interactive-logger (~> 0.1.1) - rotp (~> 2.1.1) - ruby-duration (~> 3.2.3) - semantic - thor (~> 0.19.1) - vandamme - redcarpet (3.3.4) - rotp (2.1.2) - ruby-duration (3.2.3) - activesupport (>= 3.0.0) - i18n - iso8601 - semantic (1.4.1) - thor (0.19.1) - thread_safe (0.3.5) - tzinfo (1.2.2) - thread_safe (~> 0.1) - vandamme (0.0.11) - github-markup (~> 1.3) - redcarpet (~> 3.3.2) - -PLATFORMS - ruby - -DEPENDENCIES - moonshot (~> 0.7.0) - -BUNDLED WITH - 1.11.2 diff --git a/sample/Moonfile b/sample/Moonfile deleted file mode 100644 index 9522a4d0..00000000 --- a/sample/Moonfile +++ /dev/null @@ -1,7 +0,0 @@ -Moonshot.config do |m| - m.app_name = 'moonshot-sample-app' - m.artifact_repository = S3Bucket.new('moonshot-sample-bucket2') - m.build_mechanism = Script.new('bin/build.sh') - m.deployment_mechanism = CodeDeploy.new(asg: 'AutoScalingGroup') -end - diff --git a/sample/appspec.yml b/sample/appspec.yml deleted file mode 100644 index 83087e44..00000000 --- a/sample/appspec.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: 0.0 -os: linux -files: - - source: docroot/ - destination: /var/www/html -hooks: - ApplicationStop: - - location: bin/aws-codedeploy-samples/load-balancing/elb/deregister_from_elb.sh - - location: bin/stop.sh - BeforeInstall: - - location: bin/clean.sh - ApplicationStart: - - location: bin/start.sh - - location: bin/aws-codedeploy-samples/load-balancing/elb/register_with_elb.sh diff --git a/sample/bin/aws-codedeploy-samples/LICENSE b/sample/bin/aws-codedeploy-samples/LICENSE deleted file mode 100644 index f433b1a5..00000000 --- a/sample/bin/aws-codedeploy-samples/LICENSE +++ /dev/null @@ -1,177 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/sample/bin/aws-codedeploy-samples/README.md b/sample/bin/aws-codedeploy-samples/README.md deleted file mode 100644 index f1c7ef3f..00000000 --- a/sample/bin/aws-codedeploy-samples/README.md +++ /dev/null @@ -1,16 +0,0 @@ -AWS CodeDeploy Samples -====================== - -The samples in the repository each demonstrate one of a few different scenarios. -These fall into one of a few different categories, including: - -- Sample Applications -- Integrations and templates for configuration management systems -- Integrations with load-balancers like Elastic Load Balancing -- Sample hooks for version control systems like Git. - -License -======= - -These samples and templates are all licensed under Apache 2.0. - diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/LICENSE.txt b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/LICENSE.txt deleted file mode 100755 index 1eac78a6..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/LICENSE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/appspec.yml b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/appspec.yml deleted file mode 100755 index 7f0cdf94..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/appspec.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: 0.0 -os: linux -files: - - source: /index.html - destination: /var/www/html/ -hooks: - BeforeInstall: - - location: scripts/install_dependencies - timeout: 300 - runas: root - - location: scripts/start_server - timeout: 300 - runas: root - ApplicationStop: - - location: scripts/stop_server - timeout: 300 - runas: root - diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/index.html b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/index.html deleted file mode 100755 index 34b7341d..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Sample Deployment - - - -
-

Congratulations

-

This application was deployed using AWS CodeDeploy.

-

For next steps, read the AWS CodeDeploy Documentation.

-
- - - diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/install_dependencies b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/install_dependencies deleted file mode 100755 index 3d372993..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/install_dependencies +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -yum install -y httpd - diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/start_server b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/start_server deleted file mode 100755 index 203194f2..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/start_server +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -service httpd start - diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/stop_server b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/stop_server deleted file mode 100755 index aef258ba..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Linux/scripts/stop_server +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -isExistApp=`pgrep httpd` -if [[ -n $isExistApp ]]; then - service httpd stop -fi - diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/LICENSE.txt b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/LICENSE.txt deleted file mode 100755 index 7b080346..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/LICENSE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/appspec.yml b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/appspec.yml deleted file mode 100755 index 9df98df6..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/appspec.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: 0.0 -os: windows -files: - - source: \index.html - destination: C:\inetpub\wwwroot -hooks: - BeforeInstall: - - location: \before-install.bat - timeout: 900 diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/before-install.bat b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/before-install.bat deleted file mode 100755 index fb2600e6..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/before-install.bat +++ /dev/null @@ -1,3 +0,0 @@ -REM Install Internet Information Server (IIS). -c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Import-Module -Name ServerManager -c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Install-WindowsFeature Web-Server \ No newline at end of file diff --git a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/index.html b/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/index.html deleted file mode 100755 index ca5a6e90..00000000 --- a/sample/bin/aws-codedeploy-samples/applications/SampleApp_Windows/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - Sample Deployment - - - -
-

Congratulations

-

This application was deployed using AWS CodeDeploy.

-

For next steps, read the AWS CodeDeploy Documentation.

-
- - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/README.md deleted file mode 100644 index bc83520f..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Ansible and AWS CodeDeploy --------------------------- - -[Ansible](http://www.ansible.com) is a radically simple IT automation platform that makes your -applications and systems easier to deploy. If you already have a set of Ansible playbooks, but just -need somewhere to run them, our first template for Ansible and AWS CodeDeploy will demonstrate how a -couple of simple deployment hooks will ensure Ansible is available on the local deployment instance -and run the given playbooks. Alternatively, if you already have a process for building and -maintaining your inventory, we've also built an Ansible module that you can use to install and run -the AWS CodeDeploy host agent. - -[Learn more >](https://github.com/awslabs/aws-codedeploy-samples) diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/application_start.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/application_start.sh deleted file mode 100755 index c4bcd0d5..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/application_start.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Deploy hooks are run via absolute path, so taking dirname of this script will give us the path to -# our deploy_hooks directory. -. $(dirname $0)/common_variables.sh - -ansible-playbook $DESTINATION_PATH/lamp_simple/site.yml -i $DESTINATION_PATH/lamp_simple/hosts --connection=local diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/appspec.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/appspec.yml deleted file mode 100644 index fdf28303..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/appspec.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: 0.0 -os: linux -files: - - source: / - destination: /etc/ansible/codedeploy -hooks: - BeforeInstall: - - location: before_install.sh - timeout: 300 - runas: root - ApplicationStart: - - location: application_start.sh - timeout: 300 - runas: root - ValidateService: - - location: verify_service.sh - timeout: 300 - runas: root diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/before_install.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/before_install.sh deleted file mode 100755 index 9bafb3bc..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/before_install.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Check for ansible tools, and attempt to install if not - -yum list installed python-pip &> /dev/null -if [ $? != 0 ]; then - yum install -y python-pip -fi - -pip list | grep -q ansible -if [ $? != 0 ]; then - pip install ansible -fi diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/common_variables.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/common_variables.sh deleted file mode 100644 index ea921f5f..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/common_variables.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/true -# -# This is not an executable script, just a set of names and variable declarations. -# -# Use it with: -# source common_variables.sh -# Or: -# . common_variables.sh - -APPLICATION_NAME="AnsibleApp" -DEPLOY_GROUP="ansible" -BUCKET="" -BUNDLE_PATH="ansible-playbooks.zip" - -DESTINATION_PATH="/etc/ansible/codedeploy" diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/LICENSE.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/LICENSE.md deleted file mode 100644 index 2b437ec8..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/LICENSE.md +++ /dev/null @@ -1,4 +0,0 @@ -Copyright (C) 2013 AnsibleWorks, Inc. - -This work is licensed under the Creative Commons Attribution 3.0 Unported License. -To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/deed.en_US. diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/README.md deleted file mode 100644 index d800ff8d..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/README.md +++ /dev/null @@ -1,27 +0,0 @@ -Building a simple LAMP stack and deploying Application using Ansible Playbooks. -------------------------------------------- - -These playbooks require Ansible 1.2. - -These playbooks are meant to be a reference and starter's guide to building -Ansible Playbooks. These playbooks were tested on CentOS 6.x so we recommend -that you use CentOS or RHEL to test these modules. - -This LAMP stack can be on a single node or multiple nodes. The inventory file -'hosts' defines the nodes in which the stacks should be configured. - - [webservers] - localhost - - [dbservers] - bensible - -Here the webserver would be configured on the local host and the dbserver on a -server called "bensible". The stack can be deployed using the following -command: - - ansible-playbook -i hosts site.yml - -Once done, you can check the results by browsing to http://localhost/index.php. -You should see a simple test page and a list of databases retrieved from the -database server. diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/group_vars/all b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/group_vars/all deleted file mode 100644 index 698c2e43..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/group_vars/all +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Variables listed here are applicable to all host groups - -httpd_port: 80 -ntpserver: localhost -repository: https://github.com/bennojoy/mywebapp.git diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/group_vars/dbservers b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/group_vars/dbservers deleted file mode 100644 index bb60d44b..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/group_vars/dbservers +++ /dev/null @@ -1,9 +0,0 @@ ---- -# The variables file used by the playbooks in the dbservers group. -# These don't have to be explicitly imported by vars_files: they are autopopulated. - -mysqlservice: mysqld -mysql_port: 3306 -dbuser: root -dbname: foodb -upassword: abc diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/hosts b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/hosts deleted file mode 100644 index bd573cc0..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/hosts +++ /dev/null @@ -1,5 +0,0 @@ -[webservers] -localhost - -[dbservers] -localhost diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/handlers/main.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/handlers/main.yml deleted file mode 100644 index 2235e75d..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/handlers/main.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -# Handler to handle common notifications. Handlers are called by other plays. -# See http://ansible.cc/docs/playbooks.html for more information about handlers. - -- name: restart ntp - service: name=ntpd state=restarted - -- name: restart iptables - service: name=iptables state=restarted diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/tasks/main.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/tasks/main.yml deleted file mode 100644 index 317d954c..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/tasks/main.yml +++ /dev/null @@ -1,24 +0,0 @@ ---- -# This playbook contains common plays that will be run on all nodes. - -- name: Install ntp - yum: name=ntp state=present - tags: ntp - -- name: Configure ntp file - template: src=ntp.conf.j2 dest=/etc/ntp.conf - tags: ntp - notify: restart ntp - -- name: Start the ntp service - service: name=ntpd state=started enabled=true - tags: ntp - -- name: Check if /etc/sysconfig/iptables exists - stat: path=/etc/sysconfig/iptables - register: ipt - -- name: Place basic iptables rules - template: src=iptables.j2 dest=/etc/sysconfig/iptables - notify: restart iptables - when: ipt is defined and ipt.stat.exists == false diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/templates/iptables.j2 b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/templates/iptables.j2 deleted file mode 100644 index 074a9ba7..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/templates/iptables.j2 +++ /dev/null @@ -1,36 +0,0 @@ -# {{ ansible_managed }} -*filter -:INPUT ACCEPT [0:0] -:FORWARD ACCEPT [0:0] -:OUTPUT ACCEPT [0:0] - -#Syn-flood protection --A INPUT -p tcp ! --syn -m state --state NEW -j DROP - -#Force SYN packets check --A INPUT -f -j DROP - -#Force Fragments packets check --A INPUT -p tcp --tcp-flags ALL ALL -j DROP - -#XMAS packets --A INPUT -p tcp --tcp-flags ALL NONE -j DROP - -# Accept packets belonging to established and related connections --A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT - -# Allow pings --A INPUT -p icmp --icmp-type any -j ACCEPT - -# Set access for localhost --A INPUT -i lo -j ACCEPT - -# Allow SSH connections on tcp port 22 --A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT - -# Set default policies for INPUT, FORWARD and OUTPUT chains --P INPUT DROP --P FORWARD DROP --P OUTPUT ACCEPT - -COMMIT diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/templates/ntp.conf.j2 b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/templates/ntp.conf.j2 deleted file mode 100644 index 6336c2ea..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/common/templates/ntp.conf.j2 +++ /dev/null @@ -1,12 +0,0 @@ - -driftfile /var/lib/ntp/drift - -restrict 127.0.0.1 -restrict -6 ::1 - -server {{ ntpserver }} - -includefile /etc/ntp/crypto/pw - -keys /etc/ntp/keys - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/handlers/main.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/handlers/main.yml deleted file mode 100644 index fffc0d57..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/handlers/main.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -# Handler to handle DB tier notifications - -- name: restart mysql - service: name=mysqld state=restarted - -- name: restart iptables - service: name=iptables state=restarted diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/tasks/main.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/tasks/main.yml deleted file mode 100644 index 4e09e55d..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/tasks/main.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- -# This playbook will install mysql and create db user and give permissions. - -- name: Install Mysql package - yum: name={{ item }} state=installed - with_items: - - mysql-server - - MySQL-python - -- name: Create Mysql configuration file - template: src=my.cnf.j2 dest=/etc/my.cnf - notify: - - restart mysql - -- name: Start Mysql Service - service: name=mysqld state=started enabled=true - -- name: insert iptables rule - lineinfile: dest=/etc/sysconfig/iptables state=present regexp="{{ mysql_port }}" - insertafter="^:OUTPUT " line="-A INPUT -p tcp --dport {{ mysql_port }} -j ACCEPT" - notify: restart iptables - -- name: Create Application Database - mysql_db: name={{ dbname }} state=present - -- name: Create Application DB User - mysql_user: name={{ dbuser }} password={{ upassword }} priv=*.*:ALL host='%' state=present diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/templates/my.cnf.j2 b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/templates/my.cnf.j2 deleted file mode 100644 index 3944d063..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/db/templates/my.cnf.j2 +++ /dev/null @@ -1,11 +0,0 @@ -[mysqld] -datadir=/var/lib/mysql -socket=/var/lib/mysql/mysql.sock -user=mysql -# Disabling symbolic-links is recommended to prevent assorted security risks -symbolic-links=0 -port={{ mysql_port }} - -[mysqld_safe] -log-error=/var/log/mysqld.log -pid-file=/var/run/mysqld/mysqld.pid diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/handlers/main.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/handlers/main.yml deleted file mode 100644 index 79f13f91..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/handlers/main.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -# Handler for the webtier: handlers are called by other plays. -# See http://ansible.cc/docs/playbooks.html for more information about handlers. - -- name: restart iptables - service: name=iptables state=restarted diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/copy_code.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/copy_code.yml deleted file mode 100644 index d1834e8d..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/copy_code.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -# These tasks are responsible for copying the latest dev/production code from -# the version control system. - -- name: Copy the code from repository - git: repo={{ repository }} dest=/var/www/html/ansible - -- name: Creates the index.php file - template: src=index.php.j2 dest=/var/www/html/ansible/index.php diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/install_httpd.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/install_httpd.yml deleted file mode 100644 index a5d718e1..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/install_httpd.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -# These tasks install http and the php modules. - -- name: Install http and php etc - yum: name={{ item }} state=present - with_items: - - httpd - - php - - php-mysql - - git - -- name: insert iptables rule for httpd - lineinfile: dest=/etc/sysconfig/iptables create=yes state=present regexp="{{ httpd_port }}" insertafter="^:OUTPUT " - line="-A INPUT -p tcp --dport {{ httpd_port }} -j ACCEPT" - notify: restart iptables - -- name: http service state - service: name=httpd state=started enabled=yes diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/main.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/main.yml deleted file mode 100644 index 796842ed..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/tasks/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- include: install_httpd.yml -- include: copy_code.yml diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/templates/index.php.j2 b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/templates/index.php.j2 deleted file mode 100644 index 61fdb5d3..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/roles/web/templates/index.php.j2 +++ /dev/null @@ -1,24 +0,0 @@ - - - Ansible Application - - -
- Homepage -
-"; - echo "List of Databases:
"; - {% for host in groups['dbservers'] %} - $link = mysql_connect('{{ hostvars[host].ansible_eth0.ipv4.address }}', '{{ hostvars[host].dbuser }}', '{{ hostvars[host].upassword }}') or die(mysql_error()); - {% endfor %} - $res = mysql_query("SHOW DATABASES"); - while ($row = mysql_fetch_assoc($res)) { - echo $row['Database'] . "\n"; - } -?> - - - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/site.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/site.yml deleted file mode 100644 index f395725b..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/lamp_simple/site.yml +++ /dev/null @@ -1,23 +0,0 @@ ---- -# This playbook deploys the whole application stack in this site. - -- name: apply common configuration to all nodes - hosts: all - remote_user: root - - roles: - - common - -- name: configure and deploy the webservers and application code - hosts: webservers - remote_user: root - - roles: - - web - -- name: deploy MySQL and configure the databases - hosts: dbservers - remote_user: root - - roles: - - db diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/verify_service.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/verify_service.sh deleted file mode 100755 index 081b55b4..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/local-only/verify_service.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Deploy hooks are run via absolute path, so taking dirname of this script will give us the path to -# our deploy_hooks directory. -. $(dirname $0)/common_variables.sh - -curl -s http://localhost:80/ansible/index.php diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/module/library/aws_codedeploy b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/module/library/aws_codedeploy deleted file mode 100755 index edbff32b..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/module/library/aws_codedeploy +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/python - -import sys -import os -import urlparse -import shutil -from subprocess import Popen -from subprocess import PIPE - -DOCUMENTATION = ''' ---- -module: aws_codedeploy -short_description: Installs and starts the AWS CodeDeploy Agent -description: - - Installs and starts the AWS CodeDeploy Agent -version_added: 0.0 -author: Andrew Fitz Gibbon -options: - enabled: - description: - - Enable the agent - choices: [ "yes", "no" ] - required: true -''' - -try: - import boto - from boto.s3.connection import Location - from boto.utils import get_instance_metadata -except ImportError: - print "failed=True msg='boto required for this module'" - sys.exit(1) - -# Determine if we're running on an EC2 instance -def on_ec2(): - try: - instance_metadata = boto.utils.get_instance_metadata(timeout=2, num_retries=2) - if 'instance-id' in instance_metadata.keys() and len(instance_metadata['instance-id']) > 0: - return True - else: - return False - except: - return False - -# Determine what kind of instance -def os_type(): - os = 'na' - release = '' - - try: - release = str(Popen(['lsb_release', '-a'], stdout=PIPE).communicate()) - except: - release = str(Popen(['cat', '/etc/system-release'], stdout=PIPE).communicate()) - - if 'AmazonAMI' in release or 'Amazon Linux AMI' in release: - return 'amzn' - elif 'Debian' in release or 'Ubuntu' in release: - return 'deb' - else: - return os - -def get_package(module, pkg_type): - dest = '/tmp/codedeploy_package.' + pkg_type - - pkg_url = 'https://s3.amazonaws.com/aws-codedeploy-us-east-1/latest/codedeploy-agent' - if pkg_type == 'deb': - pkg_url += '_all.deb' - elif pkg_type == 'rpm': - pkg_url += '.noarch.rpm' - else: - raise ValueError('unknown package type') - - body, info = fetch_url(module, pkg_url) - - if info['status'] != 200: - module.fail_json(msg="Failed to download agent", - status_code=info['status'], - respose=info['msg'], - url=pkg_url) - - try: - f = open(dest, 'wb') - shutil.copyfileobj(body, f) - except Exception, e: - module.fail_json(msg="failed to write agent package to disk: %s" % str(e)) - - return dest - -def install_pacakge(source, pkg_type): - cmd = '' - if pkg_type == 'deb': - cmd = 'dpkg -i ' + source + '; apt-get -q -y -f install' - elif pkg_type == 'rpm': - cmd = 'yum install -q -y ' + source - else: - raise ValueError('unknown package type') - - os.system(cmd) # TODO catch return - -def main(): - module = AnsibleModule( - argument_spec = dict( - enabled = dict(required=True, choices=BOOLEANS) # TODO actually use this - ) - ) - - if not on_ec2(): - module.fail_json(msg="must install the AWS CodeDeploy on an EC2 instance") - - try: - os = os_type() - pkg_type = '' - if os == 'deb': - pkg_type = 'deb' - elif os == 'amzn': - pkg_type = 'rpm' - else: - module.fail_json(msg="must install the AWS CodeDeploy on a supported OS type") - - pkg = get_package(module, pkg_type) - install_pacakge(pkg, pkg_type) - except Exception, e: - module.fail_json(msg=str(e)) - - module.exit_json(installed=True) - -from ansible.module_utils.basic import * -from ansible.module_utils.urls import * -main() diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/module/site.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/module/site.yml deleted file mode 100644 index 9d6115d6..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/ansible/module/site.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- hosts: all - tasks: - - name: install codedeploy agent - sudo: yes - action: aws_codedeploy enabled=true diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/README.md deleted file mode 100644 index c9987dc8..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Chef and AWS CodeDeploy ------------------------ - -[Chef](https://www.getchef.com) is a configuration management tool that enables users to write -recipes that describe how the instances in their fleet are configured. AWS provides two template -samples for integrating Chef and AWS CodeDeploy. The first is a Chef cookbook that will install and -start the AWS CodeDeploy host agent, giving you the ability to continue managing your host -infrastructure via Chef while also being able to take advantage of the power of AWS CodeDeploy. The -second sample template demonstrates how to use CodeDeploy to orchestrate running cookbooks and -recipes via chef-solo on each node. - -[Learn more >](https://github.com/awslabs/aws-codedeploy-samples) diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/README.md deleted file mode 100644 index 66702891..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/README.md +++ /dev/null @@ -1,31 +0,0 @@ -Installing the AWS CodeDeploy Agent with Chef -============================================= - -In the previous post, we learned how to use the power of AWS CodeDeploy to orchestrate chef-solo. It took -the perspective of having half of your dependencies already installed – namely, the CodeDeploy agent. For -this post, we'll look at it from a different angle: the CodeDeploy host agent isn't installed yet, but you -have a pre-existing Chef environment running on Amazon EC2 instances. - -Setup and Preconditions ------------------------ - -The post below makes a few assumptions about your environment that may or may not be true. First and -foremost is that you have a working Chef environment. We'll assume that you've worked through your -own workflow for managing that environment and your chef-repo. If you are still new to Chef, their -documentation has a lot of very helpful information: [http://docs.getchef.com](http://docs.getchef.com) - -AWS CodeDeploy Host Agent Cookbook ----------------------------------- - -We've built a custom Chef cookbook to help ease the process of installing the CodeDeploy agent. You -can download that cookbook -[here](https://github.com/awslabs/aws-codedeploy-samples/tree/master/conf-mgmt/chef/aws-codedeploy-agent/cookbooks/codedeploy-agent/recipes). -To install the CodeDeploy agent, simply download the linked archive, copy the codedeploy-agent -directory into your chef-repo, and add `recipe[codedeploy-agent]` to your run list. If you just want -to test this out with a chef-solo instance, we've included a sample configuration for you. - -The cookbook has three simple steps: - -1. Download the package for the CodeDeploy host agent. -1. Install the agent. -1. Start the agent. diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/cookbooks/codedeploy-agent/metadata.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/cookbooks/codedeploy-agent/metadata.rb deleted file mode 100644 index 0132dcae..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/cookbooks/codedeploy-agent/metadata.rb +++ /dev/null @@ -1,2 +0,0 @@ -name 'codedeploy-agent' -recipe 'codedeploy-agent::default', 'Fetches, installs, and starts the AWS CodeDeploy host agent' diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/cookbooks/codedeploy-agent/recipes/default.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/cookbooks/codedeploy-agent/recipes/default.rb deleted file mode 100644 index ba4604ff..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/cookbooks/codedeploy-agent/recipes/default.rb +++ /dev/null @@ -1,14 +0,0 @@ -remote_file "#{Chef::Config[:file_cache_path]}/codedeploy-agent-install" do - source "https://s3.amazonaws.com/aws-codedeploy-us-east-1/latest/install" - mode 0755 -end - -bash "install-codedeploy-agent" do - code <<-EOH - #{Chef::Config[:file_cache_path]}/codedeploy-agent-install auto - EOH -end - -service "codedeploy-agent" do - action [:enable, :start] -end diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/node.json b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/node.json deleted file mode 100644 index 6cfdecfb..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/node.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "run_list": [ "recipe[codedeploy-agent]" ] -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/solo.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/solo.rb deleted file mode 100644 index 2669c908..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/aws-codedeploy-agent/solo.rb +++ /dev/null @@ -1,4 +0,0 @@ -# These are here just for testing only. -file_cache_path "/etc/chef" -cookbook_path "/etc/chef/cookbooks" -json_attribs "/etc/chef/node.json" diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/README.md deleted file mode 100644 index 87ff5738..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/README.md +++ /dev/null @@ -1,218 +0,0 @@ -Using AWS CodeDeploy to Orchestrate chef-solo -============================================= - -[Chef](http://www.getchef.com/chef/) is a great tool for automating infrastructure management, but -sometimes running and maintaining a central Chef server – and ensuring that it's highly available – -can be cost-prohibitive. So you turn to chef-solo, where you are fully responsible for orchestrating -the distribution of cookbooks and running chef-solo. Up until now, you've used a set of custom -scripts (perhaps built on top of tools like Capistrano) to do that orchestration. Here, we'll show -you how AWS CodeDeploy can do all of the heavy lifting for you with almost no custom scripting. - -For this post, we'll start with an instance that already has the CodeDeploy agent installed. If you -haven't already – or cleaned up afterwards – please complete *Step 1: Set Up a New Amazon EC2 Instance* -in the [AWS CodeDeploy Getting Started Guide](http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-set-up-new-instance.html). - -*Note: The CloudFormation example is a lot easier to use: http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-use-cloud-formation-template.html* - -Prepare the bundle ------------------- - -Next, we prepare the bundle, or source content, that will contain our Chef cookbooks and -configuration. Here, we use a simple "hello world" cookbook, but you're free to substitute your own. -The full source for this example bundle is also available -[here](https://github.com/awslabs/aws-codedeploy-samples/tree/master/conf-mgmt/chef/solo). - -Note: You will have to use the Apache Maven command, "mvn package" to create the target/hello.war file. - -First, create directories for our application and deploy hooks. The base of these will be the root -of our CodeDeploy revision: - -```bash -mkdir -p chef-solo-example/deploy_hooks -cd chef-solo-example -``` - -Then create a simple AppSpec as `./appspec.yml`: - -```yml -version: 0.0 -os: linux -files: - - source: chef/ - destination: /etc/chef/codedeploy - - source: target/hello.war - destination: /var/lib/tomcat6/webapps -hooks: - BeforeInstall: - - location: deploy_hooks/install-chef.sh - timeout: 1800 - runas: root - ApplicationStart: - - location: deploy_hooks/chef-solo.sh - runas: root - ValidateService: - - location: deploy_hooks/verify_service.sh - runas: root -``` - -This AppSpec tells AWS CodeDeploy that we want all of our chef configurations to be installed into -`/etc/chef/codedeploy`, the war file for our app should be installed into the default tomcat6 -webapps directory, and that it should run the scripts in `deploy_hooks/` on the appropriate -deployment events. Specifically: one to ensure that Chef is properly installed and one to initiate -the chef-solo run. - -Before we run anything, our `BeforeInstall` checks that Chef and RubyGems are installed and attempts -to install them. It also runs `knife install` to fetch the tomcat cookbook (in a normal application, -it's more likely that you'd already have done this; we're doing it as part of the deployment to keep -the sample bundle small): - -```bash -#!/bin/bash - -yum list installed rubygems &> /dev/null -if [ $? != 0 ]; then - yum -y install gcc-c++ ruby-devel make autoconf automake rubygems -fi - -gem list | grep -q chef -if [ $? != 0 ]; then - gem install chef ohai -fi - -# Install the tomcat cookbook -yum list installed git &> /dev/null -if [ $? != 0 ]; then - yum install -y git -fi - -cd /etc/chef/codedeploy/ -if ! test -r .git; then - git init .; git add -A .; git commit -m "Init commit" -fi -if ! test -r ./cookbooks/tomcat; then - /usr/local/bin/knife cookbook site install tomcat -o ./cookbooks -fi -``` - -Then, once our files are installed into the correct locations, our `ApplicationStart` lifecycle hook -actually initiates the chef-solo run:: - -```bash -#!/bin/bash -/usr/local/bin/chef-solo -c /etc/chef/codedeploy/chef/solo.rb -``` - -Finally, the `ValidateService` hook checks to see whether or not our app is responding as expected: - -```bash -#!/bin/bash - -result=$(curl -s http://localhost/hello/) - -if [[ "$result" =~ "Hello World" ]]; then - exit 0 -else - exit 1 -fi -``` - -Our chef configuration in this case is simply to set a couple of default tomcat options: - -```ruby -node.default["tomcat"]["user"] = "root" -node.default["tomcat"]["port"] = 80 -``` - -And the node.json and solo.rb configurations are similarly straightforward, just running the tomcat -default recipe and our own configuration (which we've titled `homesite`): - -node.json: - -```javascript -{ - "run_list": [ "recipe[homesite]", "recipe[tomcat]" ] -} -``` - -solo.rb: - -```ruby -file_cache_path "/etc/chef/codedeploy/" -cookbook_path "/etc/chef/codedeploy/cookbooks" -json_attribs "/etc/chef/codedeploy/node.json" -``` - -The java app does nothing more than respond with 'Hello World' at the root of the app. You can take -a closer look by downloading the source at the link above. - -Now that we've set up our bundle, we're ready to get things set up in AWS CodeDeploy. - -Set Up the AWS CodeDeploy Application ------------------------------- - -Even though we might have an application and deployment group set up already set up on this -instance, it's a good practice to create new ones. First, we create the new application: - -```sh -aws deploy create-application --application-name chef-solo-example -``` - -Then, using the ***CodeDeployTrustRoleArn*** that was assigned to our AWS CloudFormation stack, we create a -new deployment group for the chef-solo-example application: - -```sh -aws deploy create-deployment-group \ - --application-name chef-solo-example \ - --deployment-group-name ChefSolo_DeploymentGroup \ - --deployment-config-name CodeDeployDefault.AllAtOnce \ - --ec2-tag-filters Key=Name,Value=CodeDeployDeployment,Type=KEY_AND_VALUE \ - --service-role-arn CodeDeployTrustRoleArn -``` - -In this deployment group, we've set the default deployment configuration to -`CodeDeployDefault.AllAtOnce`. This will deploy to all of our instances at the same time. In a real -production app, you'd probably want to set it to something more conservative like -`CodeDeployDefault.OneAtATime` or a custom configuration. - -Push and Deploy the Application -------------------------------- - -At this point, we have a running Amazon EC2 instance that has the AWS CodeDeploy agent installed, an -application bundle containing our Chef cookbooks, and an AWS CodeDeploy application ready to accept -deployments. - -We next need to upload our bundle and register it as a new revision in AWS CodeDeploy. The `aws deploy push` command in -the AWS CLI will take care of that for us (make sure you replace ***bucket-name*** with the name of -an Amazon S3 bucket you have set up for AWS CodeDeploy): - -```sh -aws deploy push \ - --application-name chef-solo-example \ - --s3-location s3://bucket-name/chef-solo.zip \ - --ignore-hidden-files -``` - -And now we're ready for a deployment: - -```sh -aws deploy create-deployment \ - --application-name chef-solo-example \ - --deployment-config-name CodeDeployDefault.AllAtOnce \ - --deployment-group-name ChefSolo_DeploymentGroup \ - --s3-location bucket=bucket-name,key=chef-solo.zip,bundleType=zip -``` - -Note here that we specify the deployment configuration again. This is so that we can override any -default that we might have set on the deployment group. - -Once the deployment finishes (which you can check with either the AWS CodeDeploy console, or the `aws deploy -get-deployment` CLI command), you should be able to log into the instance and verify that your -cookbooks were applied. - -Wrapping up ------------ - -Now you're ready to use the power of AWS CodeDeploy to orchestrate your fleet of chef-solo nodes. In our -next post, we'll demonstrate how you can use a Chef recipe to install the AWS CodeDeploy agent, thus -allowing your infrastructure to continue to be managed by Chef while your application deployments -are managed via AWS CodeDeploy. diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/appspec.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/appspec.yml deleted file mode 100644 index 8a2f97ce..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/appspec.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: 0.0 -os: linux -files: - - source: chef/ - destination: /etc/chef/codedeploy - - source: target/hello.war - destination: /var/lib/tomcat6/webapps -hooks: - BeforeInstall: - - location: deploy_hooks/install-chef.sh - timeout: 1800 - runas: root - ApplicationStart: - - location: deploy_hooks/chef-solo.sh - runas: root - ValidateService: - - location: deploy_hooks/verify_service.sh - runas: root diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/Cheffile b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/Cheffile deleted file mode 100644 index cb87cd2b..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/Cheffile +++ /dev/null @@ -1,3 +0,0 @@ -site "https://supermarket.getchef.com/api/v1" - -cookbook "tomcat" diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/node.json b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/node.json deleted file mode 100644 index aa686923..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/node.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "run_list": [ "recipe[homesite]", "recipe[tomcat]" ] -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/site-cookbooks/homesite/recipes/default.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/site-cookbooks/homesite/recipes/default.rb deleted file mode 100644 index f3fa2ff6..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/site-cookbooks/homesite/recipes/default.rb +++ /dev/null @@ -1,2 +0,0 @@ -node.default["tomcat"]["user"] = "root" -node.default["tomcat"]["port"] = 8888 diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/solo.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/solo.rb deleted file mode 100644 index 6ad67bc4..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/chef/solo.rb +++ /dev/null @@ -1,6 +0,0 @@ -file_cache_path "/etc/chef/codedeploy/" -cookbook_path [ - "/etc/chef/codedeploy/cookbooks", - "/etc/chef/codedeploy/site-cookbooks" - ] -json_attribs "/etc/chef/codedeploy/node.json" diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/chef-solo.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/chef-solo.sh deleted file mode 100755 index c34ada90..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/chef-solo.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# First, make sure the tomcat cookbook is installed -cd /etc/chef/codedeploy/ -/usr/local/bin/librarian-chef install - -/usr/local/bin/chef-solo -c /etc/chef/codedeploy/solo.rb diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/install-chef.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/install-chef.sh deleted file mode 100755 index ac4e1f5a..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/install-chef.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -if [ ! -z "`which yum`" ]; then - - # On rpm-based system, use yum to install rubygems and related packages for building native - # extensions - - for pkg in rubygems20 gcc-c++ ruby20-devel make autoconf automake; do - yum list installed $pkg &> /dev/null - if [ $? != 0 ]; then - yum -y install $pkg - fi - done - -elif [ ! -z "`which apt-get`" ]; then - # On debian-like system, use apt-get to install - - for pkg in ruby2.0-dev ruby2.0 make autoconf g++; do - aptitude show $pkg | grep -q 'State: installed' - if [ $? != 0 ]; then - apt-get -y install $pkg - fi - done -fi - -# Now, we can install the required gems -for gem in chef ohai librarian-chef io-console; do - gem2.0 list | grep -q $gem - if [ $? != 0 ]; then - gem2.0 install $gem - - if [ $? != 0 ]; then - echo "Failed to install required gems. Cannot continue with deployment" - exit 1 - fi - fi -done diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/verify_service.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/verify_service.sh deleted file mode 100755 index c4100989..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/deploy_hooks/verify_service.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -result=$(curl -s http://localhost:8888/hello/) - -if [[ "$result" =~ "Hello World" ]]; then - exit 0 -else - exit 1 -fi diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/pom.xml b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/pom.xml deleted file mode 100644 index e65844c2..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - 4.0.0 - com.amazonaws.sample - hello - war - 1.0-SNAPSHOT - hello Maven Webapp - http://maven.apache.org - - - - junit - junit - 3.8.1 - test - - - javax.servlet - javax.servlet-api - 3.0.1 - provided - - - - - hello - - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/src/main/java/com/amazonaws/sample/HelloServlet.java b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/src/main/java/com/amazonaws/sample/HelloServlet.java deleted file mode 100644 index ba2a298a..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/src/main/java/com/amazonaws/sample/HelloServlet.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.amazonaws.sample; - -import javax.servlet.http.HttpServlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import java.io.IOException; -import java.io.PrintWriter; - -public class HelloServlet extends HttpServlet { - - protected void doGet(HttpServletRequest request, - HttpServletResponse response) - throws ServletException, IOException - { - PrintWriter writer = response.getWriter(); - writer.print("

Hello World

"); - } -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/src/main/webapp/WEB-INF/web.xml b/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index d105e7aa..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/chef/solo/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - Hello World Web Application - - - HelloServlet - com.amazonaws.sample.HelloServlet - - - - HelloServlet - / - - - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/README.md deleted file mode 100644 index 702d7a0f..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Puppet and AWS CodeDeploy ------------------------ - -[Puppet](http://puppetlabs.com/) is a configuration management system that allows you to define the -state of your IT infrastructure, then automatically enforces the correct state. AWS provides a -couple of sample templates to get you working with Puppet and AWS CodeDeploy faster. The first is a -Puppet module that will install and start the AWS CodeDeploy host agent, giving you the ability to -continue managing your host infrastructure via Puppet while also being able to take advantage of the -power of AWS CodeDeploy. The second sample template demonstrates how to use CodeDeploy to -orchestrate running modules and manifests via masterless puppet on each node. - -[Learn more >](https://github.com/awslabs/aws-codedeploy-samples) diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.fixtures.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.fixtures.yml deleted file mode 100644 index e7227119..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.fixtures.yml +++ /dev/null @@ -1,5 +0,0 @@ -fixtures: - repositories: - stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib.git" - symlinks: - codedeploy: "#{source_dir}" diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.gitignore b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.gitignore deleted file mode 100644 index 641e153a..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.*.sw? -pkg -spec/fixtures -.rspec_system -.vagrant -.bundle -vendor diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.rspec b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.rspec deleted file mode 100644 index 8c18f1ab..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/.rspec +++ /dev/null @@ -1,2 +0,0 @@ ---format documentation ---color diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Guardfile b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Guardfile deleted file mode 100644 index fd50602a..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Guardfile +++ /dev/null @@ -1,5 +0,0 @@ -notification :off - -guard 'rake', :task => 'test' do - watch(%r{^manifests\/(.+)\.pp$}) -end diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/LICENSE b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/LICENSE deleted file mode 100644 index 9f710553..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Modulefile b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Modulefile deleted file mode 100644 index 47b968fc..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Modulefile +++ /dev/null @@ -1,10 +0,0 @@ -name 'aws-codedeploy' -version '0.1.0' -source '' -author 'Amazon Web Services' -license 'Apache 2.0' -summary '' -description '' -project_page '' - -dependency 'puppetlabs/stdlib' diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/README.md deleted file mode 100644 index 1fa108cd..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/README.md +++ /dev/null @@ -1,50 +0,0 @@ -AWS CodeDeploy Puppet Module -============================ - -#### Table of Contents - -1. [Overview](#overview) -2. [Module Description - What the module does and why it is useful](#module-description) -3. [Usage - Configuration options and additional functionality](#usage) -4. [Reference - An under-the-hood peek at what the module is doing and how](#reference) -5. [Limitations - OS compatibility, etc.](#limitations) -6. [Development - Guide for contributing to the module](#development) - -## Overview - -This module installs the AWS CodeDeploy Agent. - -## Module Description - -The AWS CodeDeploy agent will copy packages to an EC2 instance from a configured S3 bucket. This -module should be used on an EC2 instance that already has Puppet installed. At this time, the only -supported operating systems are RedHat variants and Amazon Linux, through the installation of an RPM -package. - -## Usage - -Put the classes, types, and resources for customizing, configuring, and doing the fancy stuff with -your module here. - - -```puppet - codedeploy {} -``` - -##Reference - -###Class: codedeploy - -####Parameters - -* **package_source** - The url to install the CodeDeploy package from. Defaults to -`https://s3.amazonaws.com/aws-codedeploy-us-east-1/latest/codedeploy-agent.noarch.rpm` - -##Limitations - - * This module requires a RedHat or Amazon Linux based operating system that is capable of - installing RPM packages. - -##Development - -Please see our [GitHub repositories](https://github.com/awslabs) diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Rakefile b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Rakefile deleted file mode 100644 index d913e842..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/Rakefile +++ /dev/null @@ -1,36 +0,0 @@ -require 'puppetlabs_spec_helper/rake_tasks' -require 'puppet-lint/tasks/puppet-lint' -require 'puppet-syntax/tasks/puppet-syntax' - -# These gems aren't always present, for instance -# if run with --without development -begin - require 'puppet_blacksmith/rake_tasks' -rescue LoadError -end - -PuppetLint.configuration.relative = true -PuppetLint.configuration.send("disable_80chars") -PuppetLint.configuration.log_format = "%{path}:%{linenumber}:%{check}:%{KIND}:%{message}" -PuppetLint.configuration.fail_on_warnings = true - -# Forsake support for Puppet 2.6.2 for the benefit of cleaner code. -# http://puppet-lint.com/checks/class_parameter_defaults/ -PuppetLint.configuration.send('disable_class_parameter_defaults') -# http://puppet-lint.com/checks/class_inherits_from_params_class/ -PuppetLint.configuration.send('disable_class_inherits_from_params_class') - -exclude_paths = [ - "pkg/**/*", - "vendor/**/*", - "spec/**/*", -] -PuppetLint.configuration.ignore_paths = exclude_paths -PuppetSyntax.exclude_paths = exclude_paths - -desc "Run syntax, lint, and spec tests." -task :test => [ - :syntax, - :lint, - :spec, -] diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/init.pp b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/init.pp deleted file mode 100644 index 274c6439..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/init.pp +++ /dev/null @@ -1,19 +0,0 @@ -# == Class: codedeploy -# -# Install and manage the AWS CodeDeploy agent -# -# === Parameters -# -# [*package_source*] -# URL or filepath passed to package provider to install agent -# -class codedeploy ( - $package_source = $codedeploy::params::package_source, -) inherits codedeploy::params { - - validate_string($package_source) - - class { 'codedeploy::install': } ~> - class { 'codedeploy::service': } -> - Class['codedeploy'] -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/install.pp b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/install.pp deleted file mode 100644 index 6c87c571..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/install.pp +++ /dev/null @@ -1,10 +0,0 @@ -# == Class codedeploy::install -# -class codedeploy::install { - - package { 'codedeploy-agent': - ensure => present, - source => $codedeploy::package_source, - provider => rpm, - } -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/params.pp b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/params.pp deleted file mode 100644 index e805bb17..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/params.pp +++ /dev/null @@ -1,15 +0,0 @@ -# == Class codedeploy::params -# -# This class is meant to be called from codedeploy -# It sets variables according to platform -# -class codedeploy::params { - case $::osfamily { - 'RedHat', 'Linux': { - $package_source = 'https://s3.amazonaws.com/aws-codedeploy-us-east-1/latest/codedeploy-agent.noarch.rpm' - } - default: { - fail("${::operatingsystem} not supported") - } - } -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/service.pp b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/service.pp deleted file mode 100644 index db9fb755..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/manifests/service.pp +++ /dev/null @@ -1,12 +0,0 @@ -# == Class codedeploy::service -# -# This class is meant to be called from codedeploy -# It ensure the service is running -# -class codedeploy::service { - - service { 'codedeploy-agent': - ensure => running, - enable => true, - } -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/metadata.json b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/metadata.json deleted file mode 100644 index d11c250c..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/metadata.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "aws-codedeploy", - "version": "0.1.0", - "author": "Amazon Web Services", - "summary": "", - "license": "Apache 2.0", - "source": "", - "project_page": "", - "issues_url": "", - "dependencies": [ - { - "name": "puppetlabs-stdlib", - "version_requirement": ">= 1.0.0" - } - ] -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/classes/coverage_spec.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/classes/coverage_spec.rb deleted file mode 100644 index 12513b83..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/classes/coverage_spec.rb +++ /dev/null @@ -1 +0,0 @@ -at_exit { RSpec::Puppet::Coverage.report! } diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/classes/example_spec.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/classes/example_spec.rb deleted file mode 100644 index c707ba98..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/classes/example_spec.rb +++ /dev/null @@ -1,37 +0,0 @@ -require 'spec_helper' - -describe 'codedeploy' do - let(:facts) {{ - :osfamily => 'RedHat', - }} - describe "codedeploy class without any parameters" do - - it { should compile.with_all_deps } - - it { should contain_class('codedeploy::params') } - it { should contain_class('codedeploy::install') } - it { should contain_class('codedeploy::service').that_subscribes_to('codedeploy::install') } - - it { should contain_service('codedeploy-agent') } - it { should contain_package('codedeploy-agent') - .with_ensure('present') - .with_source('https://s3.amazonaws.com/aws-codedeploy-us-east-1/latest/codedeploy-agent.noarch.rpm') - } - end - - describe "codedeploy class with custom package source" do - let(:params) {{ :package_source => 'https://example.com/package.rpm' }} - it { should contain_package('codedeploy-agent').with_source('https://example.com/package.rpm') } - end - - context 'unsupported operating system' do - describe 'codedeploy class without any parameters on Solaris/Nexenta' do - let(:facts) {{ - :osfamily => 'Solaris', - :operatingsystem => 'Nexenta', - }} - - it { expect { should contain_package('codedeploy') }.to raise_error(Puppet::Error, /Nexenta not supported/) } - end - end -end diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/spec_helper.rb b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/spec_helper.rb deleted file mode 100644 index 2c6f5664..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/spec/spec_helper.rb +++ /dev/null @@ -1 +0,0 @@ -require 'puppetlabs_spec_helper/module_spec_helper' diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/tests/init.pp b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/tests/init.pp deleted file mode 100644 index bdcaade2..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/aws-codedeploy/tests/init.pp +++ /dev/null @@ -1,12 +0,0 @@ -# The baseline for module testing used by Puppet Labs is that each manifest -# should have a corresponding test manifest that declares that class or defined -# type. -# -# Tests are then run by using puppet apply --noop (to check for compilation -# errors and view a log of events) or by fully applying the test in a virtual -# environment (to compare the resulting system state to the desired state). -# -# Learn more about module testing here: -# http://docs.puppetlabs.com/guides/tests_smoke.html -# -include codedeploy diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/README.md deleted file mode 100644 index b5d3b36d..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/README.md +++ /dev/null @@ -1,202 +0,0 @@ -Using AWS CodeDeploy to Orchestrate Masterless Puppet -===================================================== - -[Puppet](http://puppetlabs.com/) is a great tool for automating infrastructure management. You may -be familiar with using custom scripts (perhaps built on top of tools like Capistrano) to orchestrate -application deployments. Here, we'll show you how AWS CodeDeploy can do all of the heavy lifting for -you with almost no custom scripting. - -For this post, we'll start with an instance that already has the CodeDeploy agent installed. If you -haven't already – or cleaned up afterwards – please complete *Step 1: Set Up an Amazon EC2 Instance* -in the [AWS CodeDeploy Getting Started Guide](http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-set-up-new-instance.html). - -Prepare the bundle ------------------- - -To start, we prepare the bundle, or source content, that will contain our Puppet modules and -configuration. The sample app we use here is a simple Java web app, but you're free to substitute -your own. The full source for this example bundle is also available [here](https://github.com/awslabs/aws-codedeploy-samples/tree/master/conf-mgmt/puppet/masterless). - -First, create directories for our application and deploy hooks. The base of these will be the root -of our CodeDeploy revision: - -```bash -mkdir -p puppet-example/deploy_hooks -cd puppet-example -``` - -Then create a simple AppSpec as `./appspec.yml`: - -```yml -version: 0.0 -os: linux -files: - - source: puppet/ - destination: /etc/puppet/codedeploy - - source: target/hello.war - destination: /var/lib/tomcat6/webapps -hooks: - BeforeInstall: - - location: deploy_hooks/install-puppet.sh - timeout: 1800 - runas: root - ApplicationStart: - - location: deploy_hooks/puppet-apply.sh - runas: root - ValidateService: - - location: deploy_hooks/verify_service.sh - runas: root -``` - -This AppSpec tells AWS CodeDeploy that we want all of our Puppet manifests to be installed into -`/etc/puppet/codedeploy`, the war file for our app should be installed into the default tomcat6 -webapps directory, and that it should run the scripts in `deploy_hooks/` on the appropriate -deployment events. Specifically: one to ensure that Puppet is properly installed and one to run -`puppet apply`. - -Before we run anything though, our `BeforeInstall` checks that Puppet is installed and attempts to -install it. It also runs `puppet module install` for the tomcat module and its dependencies. - -```bash -#!/bin/bash - -# Check to see that Puppet itself is installed -yum list installed puppet &> /dev/null -if [ $? != 0 ]; then - yum -y install puppet -fi - -# Create the base directory for the system-wide Puppet modules -mkdir -p /etc/puppet/modules - -puppet="/usr/bin/puppet" - -# Check for each of the modules we need. If they're not installed, install them. -for module in puppetlabs/stdlib puppetlabs/java puppetlabs/tomcat stahnma/epel; do - $puppet module list | grep -q $(basename $module) - if [ $? != 0 ]; then - $puppet module install $module - fi -done - -exit 0 -``` - -Then, once our files are installed into the correct locations, our `ApplicationStart` lifecycle hook -actually runs `puppet apply`: - -```bash -#!/bin/bash - -BASE_DIR="/etc/puppet/" - -/usr/bin/puppet apply --modulepath=${BASE_DIR}/modules ${BASE_DIR}/codedeploy/manifests/hello_world.pp -``` - -Finally, the `ValidateService` hook checks to see whether or not our app is responding as expected: - -```bash -#!/bin/bash - -result=$(curl -s http://localhost:8080/hello/) - -if [[ "$result" =~ "Hello World" ]]; then - exit 0 -else - exit 1 -fi -``` - -Our Puppet manifest in this case is simply to set a couple of default tomcat options and start a -tomcat instance: - -``` -class { 'tomcat': } - -class { 'epel': }-> -tomcat::instance{ 'default': - install_from_source => false, - package_name => 'tomcat6', - package_ensure => 'present', -}-> -tomcat::service { 'default': - use_jsvc => false, - use_init => true, - service_name => 'tomcat6', -} -``` - -The java app does nothing more than respond with 'Hello World' at the root of the app. You can take -a closer look by downloading the source at the link above. - -Now that we've set up our bundle, we're ready to get things set up in AWS CodeDeploy. - -Set Up the AWS CodeDeploy Application -------------------------------------- - -Even though we might have an application and deployment group already set up on this -instance, it's a good practice to create new ones. First, we create the new application: - -```sh -aws deploy create-application --application-name puppet-example -``` - -Then, using the ***CodeDeployTrustRoleArn*** that was assigned to our AWS CloudFormation stack, we create a -new deployment group for the puppet-example application: - -```sh -aws deploy create-deployment-group \ - --application-name puppet-example \ - --deployment-group-name puppet_DeploymentGroup \ - --deployment-config-name CodeDeployDefault.AllAtOnce \ - --ec2-tag-filters Key=Name,Value=CodeDeployDeployment,Type=KEY_AND_VALUE \ - --service-role-arn CodeDeployTrustRoleArn -``` - -In this deployment group, we've set the default deployment configuration to -`CodeDeployDefault.AllAtOnce`. This will deploy to all of our instances at the same time. In a real -production app, you'd probably want to set it to something more conservative like -`CodeDeployDefault.OneAtATime` or a custom configuration. - -Push and Deploy the Application -------------------------------- - -At this point, we have a running Amazon EC2 instance that has the AWS CodeDeploy agent installed, an -application bundle containing our Puppet manifests, and an AWS CodeDeploy application ready to accept -deployments. - -We next need to upload our bundle and register it as a new revision in AWS CodeDeploy. The `aws deploy push` command in -the AWS CLI will take care of that for us (make sure you replace ***bucket-name*** with the name of -an Amazon S3 bucket you have set up for AWS CodeDeploy): - -```sh -aws deploy push \ - --application-name puppet-example \ - --s3-location s3://bucket-name/puppet-example.zip \ - --ignore-hidden-files true -``` - -And now we're ready for a deployment: - -```sh -aws deploy create-deployment \ - --application-name puppet-example \ - --deployment-config-name CodeDeployDefault.AllAtOnce \ - --deployment-group-name puppet_DeploymentGroup \ - --revision bucket=bucket-name,key=puppet-example.zip,bundleType=zip -``` - -Note here that we specify the deployment configuration again. This is so that we can override any -default that we might have set on the deployment group. - -Once the deployment finishes (which you can check with either the AWS CodeDeploy console, or the `aws deploy -get-deployment` CLI command), you should be able to log into the instance and verify that the app is -up and running. - -Wrapping up ------------ - -Now you're ready to use the power of AWS CodeDeploy to orchestrate your fleet of Puppet nodes. In our -next post, we'll demonstrate how you can use a Puppet module to install the AWS CodeDeploy agent, thus -allowing your infrastructure to continue to be managed by Puppet while your application deployments -are managed via AWS CodeDeploy. diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/application_vars.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/application_vars.sh deleted file mode 100644 index ba84062a..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/application_vars.sh +++ /dev/null @@ -1,6 +0,0 @@ -APPLICATION_NAME="PuppetMasterless" -DEPLOY_GROUP="PuppetMasterless" -BUCKET="" -BUNDLE_PATH="puppet-masterless.tar" -EC2_TAG_KEY='Puppet' -EC2_TAG_VALUE='Masterless' diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/appspec.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/appspec.yml deleted file mode 100644 index 7d25ba01..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/appspec.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: 0.0 -os: linux -files: - - source: puppet/ - destination: /etc/puppet/codedeploy - - source: target/hello.war - destination: /var/lib/tomcat6/webapps -hooks: - BeforeInstall: - - location: deploy_hooks/install-puppet.sh - runas: root - ApplicationStart: - - location: deploy_hooks/puppet-apply.sh - runas: root - ValidateService: - - location: deploy_hooks/verify_service.sh - runas: root diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/install-puppet.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/install-puppet.sh deleted file mode 100755 index 5b5132ff..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/install-puppet.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Check to see that puppet itself is installed -yum list installed puppet &> /dev/null -if [ $? != 0 ]; then - yum -y install puppet -fi - -# Create the base directory for the system-wide puppet modules -mkdir -p /etc/puppet/modules - -puppet="/usr/bin/puppet" - -# Check for each of the modules we need. If they're not installed, install them. -for module in puppetlabs/stdlib puppetlabs/java puppetlabs/tomcat stahnma/epel; do - $puppet module list | grep -q $(basename $module) - if [ $? != 0 ]; then - $puppet module install $module - fi -done - -exit 0 diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/puppet-apply.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/puppet-apply.sh deleted file mode 100755 index fb2115b1..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/puppet-apply.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -BASE_DIR="/etc/puppet/" - -/usr/bin/puppet apply --modulepath=${BASE_DIR}/modules ${BASE_DIR}/codedeploy/manifests/hello_world.pp diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/verify_service.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/verify_service.sh deleted file mode 100755 index 138138cf..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/deploy_hooks/verify_service.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -result=$(curl -s http://localhost:8080/hello/) - -if [[ "$result" =~ "Hello World" ]]; then - exit 0 -else - exit 1 -fi diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/pom.xml b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/pom.xml deleted file mode 100644 index e65844c2..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - 4.0.0 - com.amazonaws.sample - hello - war - 1.0-SNAPSHOT - hello Maven Webapp - http://maven.apache.org - - - - junit - junit - 3.8.1 - test - - - javax.servlet - javax.servlet-api - 3.0.1 - provided - - - - - hello - - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/puppet/manifests/hello_world.pp b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/puppet/manifests/hello_world.pp deleted file mode 100644 index b8770e45..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/puppet/manifests/hello_world.pp +++ /dev/null @@ -1,13 +0,0 @@ -class { 'tomcat': } - -class { 'epel': }-> -tomcat::instance{ 'default': - install_from_source => false, - package_name => 'tomcat6', - package_ensure => 'present', -}-> -tomcat::service { 'default': - use_jsvc => false, - use_init => true, - service_name => 'tomcat6', -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/src/main/java/com/amazonaws/sample/HelloServlet.java b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/src/main/java/com/amazonaws/sample/HelloServlet.java deleted file mode 100644 index ba2a298a..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/src/main/java/com/amazonaws/sample/HelloServlet.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.amazonaws.sample; - -import javax.servlet.http.HttpServlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import java.io.IOException; -import java.io.PrintWriter; - -public class HelloServlet extends HttpServlet { - - protected void doGet(HttpServletRequest request, - HttpServletResponse response) - throws ServletException, IOException - { - PrintWriter writer = response.getWriter(); - writer.print("

Hello World

"); - } -} diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/src/main/webapp/WEB-INF/web.xml b/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index d105e7aa..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/puppet/masterless/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - Hello World Web Application - - - HelloServlet - com.amazonaws.sample.HelloServlet - - - - HelloServlet - / - - - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/README.md b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/README.md deleted file mode 100644 index 676cc8cd..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/README.md +++ /dev/null @@ -1,12 +0,0 @@ -SaltStack and AWS CodeDeploy ----------------------------- - -[Salt](http://www.saltstack.com) is a fast, scalable and flexible systems management software for -data center automation, cloud orchestration, server provisioning, configuration management and more. -The two sample templates AWS provides offer examples for how you can integrate existing Salt -infrastructure with AWS CodeDeploy. On the one hand, you can use the AWS CodeDeploy module to -install and run the CodeDeploy host agent on your minions. On the other hand, you can use AWS -CodeDeploy via a couple of simple deployment hooks to orchestrate running your Salt States. Either -way, you get to take advantage of the power of both Salt and AWS CodeDeploy. - -[Learn more >](https://github.com/awslabs/aws-codedeploy-samples) diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/TODO.txt b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/TODO.txt deleted file mode 100644 index 2f141c18..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/TODO.txt +++ /dev/null @@ -1 +0,0 @@ -* write scripts for running salt modules in masterless mode via CodeDeploy diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/application_vars.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/application_vars.sh deleted file mode 100644 index 07354dad..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/application_vars.sh +++ /dev/null @@ -1,8 +0,0 @@ -APPLICATION_NAME="SaltMasterless" -DEPLOY_GROUP="Salt" -BUCKET="" -BUNDLE_PATH="salt-masterless.tar" -EC2_TAG_KEY='Salt' -EC2_TAG_VALUE='Masterless' - -DESTINATION_PATH="/etc/salt/codedeploy" diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/appspec.yml b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/appspec.yml deleted file mode 100644 index 7dc99d68..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/appspec.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: 0.0 -os: linux -files: - - source: salt/ - destination: /etc/salt/codedeploy/ - - source: index.html - destination: /var/www/html/salt/ -hooks: - BeforeInstall: - - location: deploy_hooks/before_install.sh - runas: root - ApplicationStart: - - location: deploy_hooks/application_start.sh - runas: root - ValidateService: - - location: deploy_hooks/verify_service.sh - runas: root diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/application_start.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/application_start.sh deleted file mode 100755 index 17394ce5..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/application_start.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -# Deploy hooks are run via absolute path, so taking dirname of this script will give us the path to -# our deploy_hooks directory. -. $(dirname $0)/../application_vars.sh - -salt-call --local --file-root=$DESTINATION_PATH state.highstate diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/before_install.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/before_install.sh deleted file mode 100755 index e1c11f76..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/before_install.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# Check for salt, and attempt to install if not - -yum list installed | grep salt-minion &> /dev/null -if [ $? != 0 ]; then - yum install -y --enablerepo=epel salt-minion -fi diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/verify_service.sh b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/verify_service.sh deleted file mode 100755 index 8282c010..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/deploy_hooks/verify_service.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# Deploy hooks are run via absolute path, so taking dirname of this script will give us the path to -# our deploy_hooks directory. -. $(dirname $0)/../application_vars.sh - -result=$(curl -s http://localhost/salt/index.html) - -if [[ "$result" =~ "Hello World" ]]; then - exit 0 -else - exit 1 -fi diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/index.html b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/index.html deleted file mode 100644 index 04a5e97f..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - AWS CodeDeploy with Salt Masterless - - -

Hello World

- - - diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/salt/top.sls b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/salt/top.sls deleted file mode 100644 index 53f2952d..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/salt/top.sls +++ /dev/null @@ -1,3 +0,0 @@ -base: - '*': - - webserver diff --git a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/salt/webserver.sls b/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/salt/webserver.sls deleted file mode 100644 index 3585a425..00000000 --- a/sample/bin/aws-codedeploy-samples/conf-mgmt/salt/local-only/salt/webserver.sls +++ /dev/null @@ -1,3 +0,0 @@ -httpd: - pkg: - - installed diff --git a/sample/bin/aws-codedeploy-samples/load-balancing/elb/README.md b/sample/bin/aws-codedeploy-samples/load-balancing/elb/README.md deleted file mode 100644 index 69938c4e..00000000 --- a/sample/bin/aws-codedeploy-samples/load-balancing/elb/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# ELB and ASG lifecycle event scripts - -Often when running a web service, you'll have your instances behind a load balancer. But when -deploying new code to these instances, you don't want the load balancer to continue sending customer -traffic to an instance while the deployment is in progress. Lifecycle event scripts give you the -ability to integrate your AWS CodeDeploy deployments with instances that are behind an Elastic Load -Balancer or in an Auto Scaling group. Simply set the name (or names) of the Elastic Load Balancer -your instances are a part of, set the scripts in the appropriate lifecycle events, and the scripts -will take care of deregistering the instance, waiting for connection draining, and re-registering -after the deployment finishes. - -## Requirements - -The register and deregister scripts have a couple of dependencies in order to properly interact with -Elastic Load Balancing and AutoScaling: - -1. The [AWS CLI](http://aws.amazon.com/cli/). In order to take advantage of -AutoScaling's Standby feature, the CLI must be at least version 1.3.25. If you -have Python and PIP already installed, the CLI can simply be installed with `pip -install awscli`. Otherwise, follow the [installation instructions](http://docs.aws.amazon.com/cli/latest/userguide/installing.html) -in the CLI's user guide. -1. An instance profile with a policy that allows, at minimum, the following actions: - -``` - elasticloadbalancing:Describe* - elasticloadbalancing:DeregisterInstancesFromLoadBalancer - elasticloadbalancing:RegisterInstancesWithLoadBalancer - autoscaling:Describe* - autoscaling:EnterStandby - autoscaling:ExitStandby - autoscaling:UpdateAutoScalingGroup -``` - -Note: the AWS CodeDeploy Agent requires that an instance profile be attached to all instances that -are to participate in AWS CodeDeploy deployments. For more information on creating an instance -profile for AWS CodeDeploy, see the [Create an IAM Instance Profile for Your Amazon EC2 Instances]() -topic in the documentation. -1. All instances are assumed to already have the AWS CodeDeploy Agent installed. - -## Installing the Scripts - -To use these scripts in your own application: - -1. Install the AWS CLI on all your instances. -1. Update the policies on the EC2 instance profile to allow the above actions. -1. Copy the `.sh` files in this directory into your application source. -1. Edit your application's `appspec.yml` to run `deregister_from_elb.sh` on the ApplicationStop event, -and `register_with_elb.sh` on the ApplicationStart event. -1. Edit `common_functions.sh` to set `ELB_LIST` to contain the name(s) of the Elastic Load -Balancer(s) your deployment group is a part of. Make sure the entries in ELB_LIST are separated by space. -1. Deploy! - diff --git a/sample/bin/aws-codedeploy-samples/load-balancing/elb/appspec.yml b/sample/bin/aws-codedeploy-samples/load-balancing/elb/appspec.yml deleted file mode 100644 index 6d6c58aa..00000000 --- a/sample/bin/aws-codedeploy-samples/load-balancing/elb/appspec.yml +++ /dev/null @@ -1,12 +0,0 @@ -version: 0.0 -os: linux -files: - - source: / - destination: /tmp/elb-test -hooks: - ApplicationStop: - - location: deregister_from_elb.sh - - location: stop_httpd.sh - ApplicationStart: - - location: start_httpd.sh - - location: register_with_elb.sh diff --git a/sample/bin/aws-codedeploy-samples/load-balancing/elb/common_functions.sh b/sample/bin/aws-codedeploy-samples/load-balancing/elb/common_functions.sh deleted file mode 100644 index 6442d8a9..00000000 --- a/sample/bin/aws-codedeploy-samples/load-balancing/elb/common_functions.sh +++ /dev/null @@ -1,499 +0,0 @@ -#!/bin/bash -# -# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"). -# You may not use this file except in compliance with the License. -# A copy of the License is located at -# -# http://aws.amazon.com/apache2.0 -# -# or in the "license" file accompanying this file. This file is distributed -# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -# express or implied. See the License for the specific language governing -# permissions and limitations under the License. - -# ELB_LIST defines which Elastic Load Balancers this instance should be part of. -# The elements in ELB_LIST should be seperated by space. -ELB_LIST="" - -# Under normal circumstances, you shouldn't need to change anything below this line. -# ----------------------------------------------------------------------------- - -export PATH="$PATH:/usr/bin:/usr/local/bin" - -# If true, all messages will be printed. If false, only fatal errors are printed. -DEBUG=true - -# Number of times to check for a resouce to be in the desired state. -WAITER_ATTEMPTS=60 - -# Number of seconds to wait between attempts for resource to be in a state. -WAITER_INTERVAL=1 - -# AutoScaling Standby features at minimum require this version to work. -MIN_CLI_VERSION='1.3.25' - -# Usage: get_instance_region -# -# Writes to STDOUT the AWS region as known by the local instance. -get_instance_region() { - if [ -z "$AWS_REGION" ]; then - AWS_REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document \ - | grep -i region \ - | awk -F\" '{print $4}') - fi - - echo $AWS_REGION -} - -AWS_CLI="aws --region $(get_instance_region)" - -# Usage: autoscaling_group_name -# -# Prints to STDOUT the name of the AutoScaling group this instance is a part of and returns 0. If -# it is not part of any groups, then it prints nothing. On error calling autoscaling, returns -# non-zero. -autoscaling_group_name() { - local instance_id=$1 - - # This operates under the assumption that instances are only ever part of a single ASG. - local autoscaling_name=$($AWS_CLI autoscaling describe-auto-scaling-instances \ - --instance-ids $instance_id \ - --output text \ - --query AutoScalingInstances[0].AutoScalingGroupName) - - if [ $? != 0 ]; then - return 1 - elif [ "$autoscaling_name" == "None" ]; then - echo "" - else - echo $autoscaling_name - fi - - return 0 -} - -# Usage: autoscaling_enter_standby -# -# Move into the Standby state in AutoScaling group . Doing so will -# pull it out of any Elastic Load Balancer that might be in front of the group. -# -# Returns 0 if the instance was successfully moved to standby. Non-zero otherwise. -autoscaling_enter_standby() { - local instance_id=$1 - local asg_name=$2 - - msg "Checking if this instance has already been moved in the Standby state" - local instance_state=$(get_instance_state_asg $instance_id) - if [ $? != 0 ]; then - msg "Unable to get this instance's lifecycle state." - return 1 - fi - - if [ "$instance_state" == "Standby" ]; then - msg "Instance is already in Standby; nothing to do." - return 0 - fi - - if [ "$instance_state" == "Pending:Wait" ]; then - msg "Instance is Pending:Wait; nothing to do." - return 0 - fi - - msg "Checking to see if ASG $asg_name will let us decrease desired capacity" - local min_desired=$($AWS_CLI autoscaling describe-auto-scaling-groups \ - --auto-scaling-group-name $asg_name \ - --query 'AutoScalingGroups[0].[MinSize, DesiredCapacity]' \ - --output text) - - local min_cap=$(echo $min_desired | awk '{print $1}') - local desired_cap=$(echo $min_desired | awk '{print $2}') - - if [ -z "$min_cap" -o -z "$desired_cap" ]; then - msg "Unable to determine minimum and desired capacity for ASG $asg_name." - msg "Attempting to put this instance into standby regardless." - elif [ $min_cap == $desired_cap -a $min_cap -gt 0 ]; then - local new_min=$(($min_cap - 1)) - msg "Decrementing ASG $asg_name's minimum size to $new_min" - msg $($AWS_CLI autoscaling update-auto-scaling-group \ - --auto-scaling-group-name $asg_name \ - --min-size $new_min) - if [ $? != 0 ]; then - msg "Failed to reduce ASG $asg_name's minimum size to $new_min. Cannot put this instance into Standby." - return 1 - else - msg "ASG $asg_name's minimum size has been decremented, creating flag file /tmp/asgmindecremented" - # Create a "flag" file to denote that the ASG min has been decremented - touch /tmp/asgmindecremented - fi - fi - - msg "Putting instance $instance_id into Standby" - $AWS_CLI autoscaling enter-standby \ - --instance-ids $instance_id \ - --auto-scaling-group-name $asg_name \ - --should-decrement-desired-capacity - if [ $? != 0 ]; then - msg "Failed to put instance $instance_id into Standby for ASG $asg_name." - return 1 - fi - - msg "Waiting for move to Standby to finish" - wait_for_state "autoscaling" $instance_id "Standby" - if [ $? != 0 ]; then - local wait_timeout=$(($WAITER_INTERVAL * $WAITER_ATTEMPTS)) - msg "Instance $instance_id did not make it to standby after $wait_timeout seconds" - return 1 - fi - - return 0 -} - -# Usage: autoscaling_exit_standby -# -# Attempts to move instance out of Standby and into InService. Returns 0 if -# successful. -autoscaling_exit_standby() { - local instance_id=$1 - local asg_name=$2 - - msg "Checking if this instance has already been moved out of Standby state" - local instance_state=$(get_instance_state_asg $instance_id) - if [ $? != 0 ]; then - msg "Unable to get this instance's lifecycle state." - return 1 - fi - - if [ "$instance_state" == "InService" ]; then - msg "Instance is already InService; nothing to do." - return 0 - fi - - if [ "$instance_state" == "Pending:Wait" ]; then - msg "Instance is Pending:Wait; nothing to do." - return 0 - fi - - msg "Moving instance $instance_id out of Standby" - $AWS_CLI autoscaling exit-standby \ - --instance-ids $instance_id \ - --auto-scaling-group-name $asg_name - if [ $? != 0 ]; then - msg "Failed to put instance $instance_id back into InService for ASG $asg_name." - return 1 - fi - - msg "Waiting for exit-standby to finish" - wait_for_state "autoscaling" $instance_id "InService" - if [ $? != 0 ]; then - local wait_timeout=$(($WAITER_INTERVAL * $WAITER_ATTEMPTS)) - msg "Instance $instance_id did not make it to InService after $wait_timeout seconds" - return 1 - fi - - if [ -a /tmp/asgmindecremented ]; then - local min_desired=$($AWS_CLI autoscaling describe-auto-scaling-groups \ - --auto-scaling-group-name $asg_name \ - --query 'AutoScalingGroups[0].[MinSize, DesiredCapacity]' \ - --output text) - - local min_cap=$(echo $min_desired | awk '{print $1}') - - local new_min=$(($min_cap + 1)) - msg "Incrementing ASG $asg_name's minimum size to $new_min" - msg $($AWS_CLI autoscaling update-auto-scaling-group \ - --auto-scaling-group-name $asg_name \ - --min-size $new_min) - if [ $? != 0 ]; then - msg "Failed to increase ASG $asg_name's minimum size to $new_min." - return 1 - else - msg "Successfully incremented ASG $asg_name's minimum size" - msg "Removing /tmp/asgmindecremented flag file" - rm -f /tmp/asgmindecremented - fi - else - msg "Auto scaling group was not decremented previously, not incrementing min value" - fi - - return 0 -} - -# Usage: get_instance_state_asg -# -# Gets the state of the given as known by the AutoScaling group it's a part of. -# Health is printed to STDOUT and the function returns 0. Otherwise, no output and return is -# non-zero. -get_instance_state_asg() { - local instance_id=$1 - - local state=$($AWS_CLI autoscaling describe-auto-scaling-instances \ - --instance-ids $instance_id \ - --query "AutoScalingInstances[?InstanceId == \`$instance_id\`].LifecycleState | [0]" \ - --output text) - if [ $? != 0 ]; then - return 1 - else - echo $state - return 0 - fi -} - -reset_waiter_timeout() { - local elb=$1 - - local health_check_values=$($AWS_CLI elb describe-load-balancers \ - --load-balancer-name $elb \ - --query 'LoadBalancerDescriptions[0].HealthCheck.[HealthyThreshold, Interval]' \ - --output text) - - WAITER_ATTEMPTS=$(echo $health_check_values | awk '{print $1}') - WAITER_INTERVAL=$(echo $health_check_values | awk '{print $2}') -} - -# Usage: wait_for_state [ELB name] -# -# Waits for the state of to be in as seen by . Returns 0 if -# it successfully made it to that state; non-zero if not. By default, checks $WAITER_ATTEMPTS -# times, every $WAITER_INTERVAL seconds. If giving an [ELB name] to check under, these are reset -# to that ELB's HealthThreshold and Interval values. -wait_for_state() { - local service=$1 - local instance_id=$2 - local state_name=$3 - local elb=$4 - - local instance_state_cmd - if [ "$service" == "elb" ]; then - instance_state_cmd="get_instance_health_elb $instance_id $elb" - reset_waiter_timeout $elb - elif [ "$service" == "autoscaling" ]; then - instance_state_cmd="get_instance_state_asg $instance_id" - else - msg "Cannot wait for instance state; unknown service type, '$service'" - return 1 - fi - - msg "Checking $WAITER_ATTEMPTS times, every $WAITER_INTERVAL seconds, for instance $instance_id to be in state $state_name" - - local instance_state=$($instance_state_cmd) - local count=1 - - msg "Instance is currently in state: $instance_state" - while [ "$instance_state" != "$state_name" ]; do - if [ $count -ge $WAITER_ATTEMPTS ]; then - local timeout=$(($WAITER_ATTEMPTS * $WAITER_INTERVAL)) - msg "Instance failed to reach state, $state_name within $timeout seconds" - return 1 - fi - - sleep $WAITER_INTERVAL - - instance_state=$($instance_state_cmd) - count=$(($count + 1)) - msg "Instance is currently in state: $instance_state" - done - - return 0 -} - -# Usage: get_instance_health_elb -# -# Gets the health of the given as known by . If it's a valid health -# status (one of InService|OutOfService|Unknown), then the health is printed to STDOUT and the -# function returns 0. Otherwise, no output and return is non-zero. -get_instance_health_elb() { - local instance_id=$1 - local elb_name=$2 - - msg "Checking status of instance '$instance_id' in load balancer '$elb_name'" - - # If describe-instance-health for this instance returns an error, then it's not part of - # this ELB. But, if the call was successful let's still double check that the status is - # valid. - local instance_status=$($AWS_CLI elb describe-instance-health \ - --load-balancer-name $elb_name \ - --instances $instance_id \ - --query 'InstanceStates[].State' \ - --output text 2>/dev/null) - - if [ $? == 0 ]; then - case "$instance_status" in - InService|OutOfService|Unknown) - echo -n $instance_status - return 0 - ;; - *) - msg "Instance '$instance_id' not part of ELB '$elb_name'" - return 1 - esac - fi -} - -# Usage: validate_elb -# -# Validates that the Elastic Load Balancer with name exists, is describable, and -# contains as one of its instances. -# -# If any of these checks are false, the function returns non-zero. -validate_elb() { - local instance_id=$1 - local elb_name=$2 - - # Get the list of active instances for this LB. - local elb_instances=$($AWS_CLI elb describe-load-balancers \ - --load-balancer-name $elb_name \ - --query 'LoadBalancerDescriptions[*].Instances[*].InstanceId' \ - --output text) - if [ $? != 0 ]; then - msg "Couldn't describe ELB instance named '$elb_name'" - return 1 - fi - - msg "Checking health of '$instance_id' as known by ELB '$elb_name'" - local instance_health=$(get_instance_health_elb $instance_id $elb_name) - if [ $? != 0 ]; then - return 1 - fi - - return 0 -} - -# Usage: get_elb_list -# -# Finds all the ELBs that this instance is registered to. After execution, the variable -# "ELB_LIST" will contain the list of load balancers for the given instance. -# -# If the given instance ID isn't found registered to any ELBs, the function returns non-zero -get_elb_list() { - local instance_id=$1 - - local asg_name=$($AWS_CLI autoscaling describe-auto-scaling-instances \ - --instance-ids $instance_id \ - --query AutoScalingInstances[*].AutoScalingGroupName \ - --output text | sed -e $'s/\t/ /g') - local elb_list="" - - if [ -z "$asg_name" ]; then - msg "Instance is not part of an ASG. Looking up from ELB." - local all_balancers=$($AWS_CLI elb describe-load-balancers \ - --query LoadBalancerDescriptions[*].LoadBalancerName \ - --output text | sed -e $'s/\t/ /g') - for elb in $all_balancers; do - local instance_health - instance_health=$(get_instance_health_elb $instance_id $elb) - if [ $? == 0 ]; then - elb_list="$elb_list $elb" - fi - done - else - elb_list=$($AWS_CLI autoscaling describe-auto-scaling-groups \ - --auto-scaling-group-names $asg_name \ - --query AutoScalingGroups[*].LoadBalancerNames \ - --output text | sed -e $'s/\t/ /g') - fi - - if [ -z "$elb_list" ]; then - return 1 - else - msg "Got load balancer list of: $elb_list" - ELB_LIST=$elb_list - return 0 - fi -} - -# Usage: deregister_instance -# -# Deregisters from . -deregister_instance() { - local instance_id=$1 - local elb_name=$2 - - $AWS_CLI elb deregister-instances-from-load-balancer \ - --load-balancer-name $elb_name \ - --instances $instance_id 1> /dev/null - - return $? -} - -# Usage: register_instance -# -# Registers to . -register_instance() { - local instance_id=$1 - local elb_name=$2 - - $AWS_CLI elb register-instances-with-load-balancer \ - --load-balancer-name $elb_name \ - --instances $instance_id 1> /dev/null - - return $? -} - -# Usage: check_cli_version [version-to-check] [desired version] -# -# Without any arguments, checks that the installed version of the AWS CLI is at least at version -# $MIN_CLI_VERSION. Returns non-zero if the version is not high enough. -check_cli_version() { - if [ -z $1 ]; then - version=$($AWS_CLI --version 2>&1 | cut -f1 -d' ' | cut -f2 -d/) - else - version=$1 - fi - - if [ -z "$2" ]; then - min_version=$MIN_CLI_VERSION - else - min_version=$2 - fi - - x=$(echo $version | cut -f1 -d.) - y=$(echo $version | cut -f2 -d.) - z=$(echo $version | cut -f3 -d.) - - min_x=$(echo $min_version | cut -f1 -d.) - min_y=$(echo $min_version | cut -f2 -d.) - min_z=$(echo $min_version | cut -f3 -d.) - - msg "Checking minimum required CLI version (${min_version}) against installed version ($version)" - - if [ $x -lt $min_x ]; then - return 1 - elif [ $y -lt $min_y ]; then - return 1 - elif [ $y -gt $min_y ]; then - return 0 - elif [ $z -ge $min_z ]; then - return 0 - else - return 1 - fi -} - -# Usage: msg -# -# Writes to STDERR only if $DEBUG is true, otherwise has no effect. -msg() { - local message=$1 - $DEBUG && echo $message 1>&2 -} - -# Usage: error_exit -# -# Writes to STDERR as a "fatal" and immediately exits the currently running script. -error_exit() { - local message=$1 - - echo "[FATAL] $message" 1>&2 - exit 1 -} - -# Usage: get_instance_id -# -# Writes to STDOUT the EC2 instance ID for the local instance. Returns non-zero if the local -# instance metadata URL is inaccessible. -get_instance_id() { - curl -s http://169.254.169.254/latest/meta-data/instance-id - return $? -} diff --git a/sample/bin/aws-codedeploy-samples/load-balancing/elb/deregister_from_elb.sh b/sample/bin/aws-codedeploy-samples/load-balancing/elb/deregister_from_elb.sh deleted file mode 100755 index 54063156..00000000 --- a/sample/bin/aws-codedeploy-samples/load-balancing/elb/deregister_from_elb.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# -# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"). -# You may not use this file except in compliance with the License. -# A copy of the License is located at -# -# http://aws.amazon.com/apache2.0 -# -# or in the "license" file accompanying this file. This file is distributed -# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -# express or implied. See the License for the specific language governing -# permissions and limitations under the License. - -. $(dirname $0)/common_functions.sh - -msg "Running AWS CLI with region: $(get_instance_region)" - -# get this instance's ID -INSTANCE_ID=$(get_instance_id) -if [ $? != 0 -o -z "$INSTANCE_ID" ]; then - error_exit "Unable to get this instance's ID; cannot continue." -fi - -# Get current time -msg "Started $(basename $0) at $(/bin/date "+%F %T")" -start_sec=$(/bin/date +%s.%N) - -msg "Checking if instance $INSTANCE_ID is part of an AutoScaling group" -asg=$(autoscaling_group_name $INSTANCE_ID) -if [ $? == 0 -a -n "$asg" ]; then - msg "Found AutoScaling group for instance $INSTANCE_ID: $asg" - - msg "Checking that installed CLI version is at least at version required for AutoScaling Standby" - check_cli_version - if [ $? != 0 ]; then - error_exit "CLI must be at least version ${MIN_CLI_X}.${MIN_CLI_Y}.${MIN_CLI_Z} to work with AutoScaling Standby" - fi - - msg "Attempting to put instance into Standby" - autoscaling_enter_standby $INSTANCE_ID $asg - if [ $? != 0 ]; then - error_exit "Failed to move instance into standby" - else - msg "Instance is in standby" - exit 0 - fi -fi - -msg "Instance is not part of an ASG, continuing..." - -msg "Checking that user set at least one load balancer" -if test -z "$ELB_LIST"; then - error_exit "Must have at least one load balancer to deregister from" -fi - -# Loop through all LBs the user set, and attempt to deregister this instance from them. -for elb in $ELB_LIST; do - msg "Checking validity of load balancer named '$elb'" - validate_elb $INSTANCE_ID $elb - if [ $? != 0 ]; then - msg "Error validating $elb; cannot continue with this LB" - continue - fi - - msg "Deregistering $INSTANCE_ID from $elb" - deregister_instance $INSTANCE_ID $elb - - if [ $? != 0 ]; then - error_exit "Failed to deregister instance $INSTANCE_ID from ELB $elb" - fi -done - -# Wait for all Deregistrations to finish -msg "Waiting for instance to de-register from its load balancers" -for elb in $ELB_LIST; do - wait_for_state "elb" $INSTANCE_ID "OutOfService" $elb - if [ $? != 0 ]; then - error_exit "Failed waiting for $INSTANCE_ID to leave $elb" - fi -done - -msg "Finished $(basename $0) at $(/bin/date "+%F %T")" - -end_sec=$(/bin/date +%s.%N) -elapsed_seconds=$(echo "$end_sec - $start_sec" | /usr/bin/bc) - -msg "Elapsed time: $elapsed_seconds" diff --git a/sample/bin/aws-codedeploy-samples/load-balancing/elb/register_with_elb.sh b/sample/bin/aws-codedeploy-samples/load-balancing/elb/register_with_elb.sh deleted file mode 100755 index cfca1556..00000000 --- a/sample/bin/aws-codedeploy-samples/load-balancing/elb/register_with_elb.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# -# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"). -# You may not use this file except in compliance with the License. -# A copy of the License is located at -# -# http://aws.amazon.com/apache2.0 -# -# or in the "license" file accompanying this file. This file is distributed -# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -# express or implied. See the License for the specific language governing -# permissions and limitations under the License. - -. $(dirname $0)/common_functions.sh - -msg "Running AWS CLI with region: $(get_instance_region)" - -# get this instance's ID -INSTANCE_ID=$(get_instance_id) -if [ $? != 0 -o -z "$INSTANCE_ID" ]; then - error_exit "Unable to get this instance's ID; cannot continue." -fi - -# Get current time -msg "Started $(basename $0) at $(/bin/date "+%F %T")" -start_sec=$(/bin/date +%s.%N) - -msg "Checking if instance $INSTANCE_ID is part of an AutoScaling group" -asg=$(autoscaling_group_name $INSTANCE_ID) -if [ $? == 0 -a -n "$asg" ]; then - msg "Found AutoScaling group for instance $INSTANCE_ID: $asg" - - msg "Checking that installed CLI version is at least at version required for AutoScaling Standby" - check_cli_version - if [ $? != 0 ]; then - error_exit "CLI must be at least version ${MIN_CLI_X}.${MIN_CLI_Y}.${MIN_CLI_Z} to work with AutoScaling Standby" - fi - - msg "Attempting to move instance out of Standby" - autoscaling_exit_standby $INSTANCE_ID $asg - if [ $? != 0 ]; then - error_exit "Failed to move instance out of standby" - else - msg "Instance is no longer in Standby" - exit 0 - fi -fi - -msg "Instance is not part of an ASG, continuing..." - -msg "Checking that user set at least one load balancer" -if test -z "$ELB_LIST"; then - error_exit "Must have at least one load balancer to register to" -fi - -# Loop through all LBs the user set, and attempt to register this instance to them. -for elb in $ELB_LIST; do - msg "Checking validity of load balancer named '$elb'" - validate_elb $INSTANCE_ID $elb - if [ $? != 0 ]; then - msg "Error validating $elb; cannot continue with this LB" - continue - fi - - msg "Registering $INSTANCE_ID to $elb" - register_instance $INSTANCE_ID $elb - - if [ $? != 0 ]; then - error_exit "Failed to register instance $INSTANCE_ID from ELB $elb" - fi -done - -# Wait for all Registrations to finish -msg "Waiting for instance to register to its load balancers" -for elb in $ELB_LIST; do - wait_for_state "elb" $INSTANCE_ID "InService" $elb - if [ $? != 0 ]; then - error_exit "Failed waiting for $INSTANCE_ID to return to $elb" - fi -done - -msg "Finished $(basename $0) at $(/bin/date "+%F %T")" - -end_sec=$(/bin/date +%s.%N) -elapsed_seconds=$(echo "$end_sec - $start_sec" | /usr/bin/bc) - -msg "Elapsed time: $elapsed_seconds" diff --git a/sample/bin/aws-codedeploy-samples/load-balancing/elb/start_httpd.sh b/sample/bin/aws-codedeploy-samples/load-balancing/elb/start_httpd.sh deleted file mode 100755 index 20177145..00000000 --- a/sample/bin/aws-codedeploy-samples/load-balancing/elb/start_httpd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# Here is where you'd want to start your http daemon. For example: -#service httpd start -#exit $? - -# In this case, since it's just a placeholder, we don't need to do anything. -exit 0 diff --git a/sample/bin/aws-codedeploy-samples/load-balancing/elb/stop_httpd.sh b/sample/bin/aws-codedeploy-samples/load-balancing/elb/stop_httpd.sh deleted file mode 100755 index 814d8fea..00000000 --- a/sample/bin/aws-codedeploy-samples/load-balancing/elb/stop_httpd.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# Here is where you'd want to stop your http daemon. For example: -#service httpd stop -#exit $? - -# In this case, since it's just a placeholder, we don't need to do anything. -exit 0 diff --git a/sample/bin/aws-codedeploy-samples/version-control/git/README.md b/sample/bin/aws-codedeploy-samples/version-control/git/README.md deleted file mode 100755 index cdbcf659..00000000 --- a/sample/bin/aws-codedeploy-samples/version-control/git/README.md +++ /dev/null @@ -1,25 +0,0 @@ -Git Hooks -========= - -The scripts here provide basic functionality to hook AWS CodeDeploy into git -events. The primary script is provided as a `pre-push` hook, which executes the -`aws deploy push` command for the local repository before git finishes pushing -to the remote. It then starts a new deployment of the revision. Both the AWS -CodeDeploy Application and Deployment Group must already exist. - - !!! CAUTION !!! Because this does an S3 upload on every push, you may incur S3 transfer charges. - - --Note, you need to make this script executable ( chmod +x pre-push ) after installing it in ./.git/hooks/pre-push - -No changes to the script itself should be required. Instead, it pulls the -necessary information from git config. The required keys are -`aws-codedeploy.application-name`, `aws-codedeploy.s3bucket`, and -`aws-codedeploy.deployment-group`. They can be set with the following commands -(replace values with your own): - - git config aws-codedeploy.application-name MyApplication - git config aws-codedeploy.s3bucket MyS3Bucket - git config aws-codedeploy.deployment-group MyDeploymentGroup - -The deployment created with this script will use the default deployment -configuration for the configured deployment group. diff --git a/sample/bin/aws-codedeploy-samples/version-control/git/pre-push b/sample/bin/aws-codedeploy-samples/version-control/git/pre-push deleted file mode 100755 index 93342c1b..00000000 --- a/sample/bin/aws-codedeploy-samples/version-control/git/pre-push +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"). -# You may not use this file except in compliance with the License. -# A copy of the License is located at -# -# http://aws.amazon.com/apache2.0 -# -# or in the "license" file accompanying this file. This file is distributed -# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -# express or implied. See the License for the specific language governing -# permissions and limitations under the License. - -AWS="/usr/local/bin/aws" - -APPLICATION_NAME=$(git config --get aws-codedeploy.application-name) -DEPLOYMENT_GROUP=$(git config --get aws-codedeploy.deployment-group) -BUCKET_NAME=$(git config --get aws-codedeploy.s3bucket) -BUNDLE_NAME=$(echo $(basename `pwd`).zip) - -# `aws deploy push` will overwrite the bundle in S3. If you'd rather ensure that you have a unique -# object for each push, you could, for example, append the commit hash: -#BUNDLE_NAME=$(echo $(basename `pwd`)-$(git log -n 1 --format=%H).zip) - -# Call `aws deploy push` to create a new revision of the current repo -echo "Pushing $BUNDLE_NAME to s3://${BUCKET_NAME} and registering with application '${APPLICATION_NAME}'" 1>&2 -$AWS deploy push \ - --application-name ${APPLICATION_NAME} \ - --s3-location s3://${BUCKET_NAME}/${BUNDLE_NAME} \ - --ignore-hidden-files \ - --source . - -revision_json="{\"revisionType\":\"S3\",\"s3Location\":{\"bucket\":\"${BUCKET_NAME}\",\"bundleType\":\"zip\",\"key\":\"${BUNDLE_NAME}\"}}" - -if [ $? != 0 ]; then - echo "Push to codedeploy failed; skipping create-deployment" 1>&2 -else - echo "Deploying s3://${BUCKET_NAME}/${BUNDLE_NAME} to application ${APPLICATION_NAME} and deployment group ${DEPLOYMENT_GROUP}" 1>&2 - $AWS deploy create-deployment \ - --application-name ${APPLICATION_NAME} \ - --deployment-group-name ${DEPLOYMENT_GROUP} \ - --revision $revision_json -fi diff --git a/sample/bin/build.sh b/sample/bin/build.sh deleted file mode 100755 index 88a8f7f3..00000000 --- a/sample/bin/build.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -CWD=$(pwd) -PROJECT_DIR=$(dirname $0)/.. -BUILD_DIR=$PROJECT_DIR/build/$(date +"%s") - -mkdir $BUILD_DIR -cp $PROJECT_DIR/appspec.yml $BUILD_DIR -cp -r $PROJECT_DIR/bin $BUILD_DIR -cp -r $PROJECT_DIR/docroot $BUILD_DIR -rm -f $BUILD_DIR/docroot/index.php.dist - -cd $BUILD_DIR -tar -zcvf output.tar.gz ./ -cd $CWD - -mv $BUILD_DIR/output.tar.gz $PROJECT_DIR -rm -rf $BUILD_DIR diff --git a/sample/bin/clean.sh b/sample/bin/clean.sh deleted file mode 100755 index 78f526d3..00000000 --- a/sample/bin/clean.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -rm -rf /usr/share/nginx/docroot diff --git a/sample/bin/start.sh b/sample/bin/start.sh deleted file mode 100755 index 5a387c4e..00000000 --- a/sample/bin/start.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -service httpd start diff --git a/sample/bin/stop.sh b/sample/bin/stop.sh deleted file mode 100755 index fdffc77a..00000000 --- a/sample/bin/stop.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -service httpd stop diff --git a/sample/build/.placeholder b/sample/build/.placeholder deleted file mode 100644 index e69de29b..00000000 diff --git a/sample/cloud_formation/moonshot-sample-app.json b/sample/cloud_formation/moonshot-sample-app.json deleted file mode 100644 index eae5d370..00000000 --- a/sample/cloud_formation/moonshot-sample-app.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "AWSTemplateFormatVersion" : "2010-09-09", - "Parameters" : { - "ArtifactBucket" : { - "Type" : "String", - "Description" : "The S3 bucket that contains the build artifacts that CodeDeploy will deploy." - }, - "AvailabilityZone1" : { - "Type": "AWS::EC2::AvailabilityZone::Name", - "Default": "us-east-1a" - }, - "AvailabilityZone2" : { - "Type": "AWS::EC2::AvailabilityZone::Name", - "Default": "us-east-1b" - }, - "DesiredCapacity" : { - "Type" : "Number", - "Default" : "2", - "Description" : "The desired number of EC2 instances used for the application." - } - }, - "Outputs" : { - "URL" : { - "Description" : "The application's URL", - "Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "LoadBalancer", "DNSName" ] } ] ] } - } - }, - "Mappings" : { - "RegionMap" : { - "ap-northeast-1" : { "AMI" : "" }, - "ap-southeast-1" : { "AMI" : "" }, - "ap-southeast-2" : { "AMI" : "" }, - "eu-central-1" : { "AMI" : "" }, - "eu-west-1" : { "AMI" : "" }, - "us-east-1" : { "AMI" : "ami-08111162" }, - "us-west-2" : { "AMI" : "" } - } - }, - "Resources" : { - - "VPC" : { - "Type" : "AWS::EC2::VPC", - "Properties" : { - "CidrBlock" : "10.176.0.0/16", - "Tags" : [ - { "Key" : "Name", "Value" : { "Ref" : "AWS::StackName" } } - ] - } - }, - - "InternetGateway" : { - "Type" : "AWS::EC2::InternetGateway" - }, - "VPCGatewayAttachment" : { - "Type" : "AWS::EC2::VPCGatewayAttachment", - "Properties" : { - "InternetGatewayId" : { "Ref" : "InternetGateway" }, - "VpcId" : { "Ref" : "VPC" } - } - }, - - "SubnetZone1" : { - "Type" : "AWS::EC2::Subnet", - "Properties" : { - "AvailabilityZone" : { "Ref" : "AvailabilityZone1" }, - "CidrBlock" : "10.176.10.0/26", - "VpcId" : { "Ref" : "VPC" } - } - }, - "SubnetZone2" : { - "Type" : "AWS::EC2::Subnet", - "Properties" : { - "AvailabilityZone" : { "Ref" : "AvailabilityZone2" }, - "CidrBlock" : "10.176.10.64/26", - "VpcId" : { "Ref" : "VPC" } - } - }, - "RouteTable" : { - "Type" : "AWS::EC2::RouteTable", - "Properties" : { - "VpcId" : { "Ref" : "VPC" } - } - }, - "Route" : { - "Type" : "AWS::EC2::Route", - "Properties" : { - "RouteTableId" : { "Ref" : "RouteTable" }, - "DestinationCidrBlock" : "0.0.0.0/0", - "GatewayId" : { "Ref" : "InternetGateway" } - } - }, - "SubnetRouteTableAssociationZone1" : { - "Type" : "AWS::EC2::SubnetRouteTableAssociation", - "Properties" : { - "RouteTableId" : { "Ref" : "RouteTable" }, - "SubnetId" : { "Ref" : "SubnetZone1" } - } - }, - "SubnetRouteTableAssociationZone2" : { - "Type" : "AWS::EC2::SubnetRouteTableAssociation", - "Properties" : { - "RouteTableId" : { "Ref" : "RouteTable" }, - "SubnetId" : { "Ref" : "SubnetZone2" } - } - }, - - "SecurityGroupElb" : { - "Type" : "AWS::EC2::SecurityGroup", - "Properties" : { - "VpcId" : { "Ref" : "VPC" }, - "GroupDescription" : "SecurityGroupElb", - "SecurityGroupIngress" : [ - { - "IpProtocol" : "tcp", - "FromPort" : "80", - "ToPort" : "80", - "CidrIp" : "0.0.0.0/0" - } - ] - } - }, - "LoadBalancer" : { - "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", - "Properties" : { - "Listeners" : [ - { - "InstancePort" : "80", - "LoadBalancerPort" : "80", - "Protocol" : "HTTP" - } - ], - "CrossZone" : true, - "ConnectionDrainingPolicy" : { - "Enabled" : true, - "Timeout" : 15 - }, - "Scheme" : "internet-facing", - "SecurityGroups" : [ - { "Ref" : "SecurityGroupElb" } - ], - "HealthCheck" : { - "HealthyThreshold" : "3", - "Interval" : "15", - "Target" : "HTTP:80/index.php", - "Timeout" : "5", - "UnhealthyThreshold" : "3" - }, - "Subnets" : [ - { "Ref" : "SubnetZone1" }, - { "Ref" : "SubnetZone2" } - ] - } - }, - - "Role" : { - "Type" : "AWS::IAM::Role", - "Properties" : { - "Path" : "/", - "AssumeRolePolicyDocument" : { - "Version" : "2012-10-17", - "Statement" : [ - { - "Effect" : "Allow", - "Principal" : { - "Service" : [ "ec2.amazonaws.com" ] - }, - "Action" : [ "sts:AssumeRole" ] - } - ] - }, - "Policies" : [ - { - "PolicyName" : "ArtifactAccess", - "PolicyDocument" : { - "Version" : "2012-10-17", - "Statement" : [ - { - "Effect" : "Allow", - "Action" : [ - "s3:GetObject" - ], - "Resource" : { "Fn::Join" : [ "", [ "arn:aws:s3:::", { "Ref" : "ArtifactBucket" }, "/*" ] ] } - } - ] - } - }, - { - "PolicyName" : "ElbAutoDrainAccess", - "PolicyDocument" : { - "Version" : "2012-10-17", - "Statement" : [ - { - "Effect" : "Allow", - "Action" : [ - "elasticloadbalancing:Describe*", - "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", - "elasticloadbalancing:RegisterInstancesWithLoadBalancer", - "autoscaling:Describe*", - "autoscaling:EnterStandby", - "autoscaling:ExitStandby", - "autoscaling:UpdateAutoScalingGroup" - ], - "Resource" : "*" - } - ] - } - } - ] - } - }, - "InstanceProfile" : { - "Type" : "AWS::IAM::InstanceProfile", - "Properties" : { - "Path" : "/", - "Roles" : [ - { "Ref" : "Role" } - ] - } - }, - "SecurityGroup" : { - "Type" : "AWS::EC2::SecurityGroup", - "Properties" : { - "VpcId" : { "Ref" : "VPC" }, - "GroupDescription" : "SecurityGroup", - "SecurityGroupIngress" : [ - { - "IpProtocol" : "tcp", - "FromPort" : "80", - "ToPort" : "80", - "SourceSecurityGroupId" : { "Ref" : "SecurityGroupElb" } - } - ], - "SecurityGroupEgress" : [ - { - "IpProtocol" : "-1", - "FromPort" : "-1", - "ToPort" : "-1", - "CidrIp" : "0.0.0.0/0" - } - ] - } - }, - - "LaunchConfiguration" : { - "Type" : "AWS::AutoScaling::LaunchConfiguration", - "Properties" : { - "AssociatePublicIpAddress" : true, - "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ] }, - "IamInstanceProfile" : { "Ref" : "InstanceProfile" }, - "InstanceType" : "t2.nano", - "SecurityGroups" : [ { "Ref" : "SecurityGroup" } ], - "KeyName": "default", - "UserData" : { - "Fn::Base64" : { "Fn::Join" : [ "\n", [ - "#!/bin/bash -v", - - "sudo yum -y update", - "sudo yum -y install curl ntp python-pip python-setuptools python-software-properties php56", - - "curl https://aws-codedeploy-us-east-1.s3.amazonaws.com/latest/install > /tmp/install.sh", - "chmod +x /tmp/install.sh", - "sudo /tmp/install.sh auto", - "rm /tmp/install.sh" - ] ] } - } - } - }, - "AutoScalingGroup" : { - "Type" : "AWS::AutoScaling::AutoScalingGroup", - "DependsOn" : [ "VPCGatewayAttachment" ], - "Properties" : { - "AvailabilityZones" : [ - { "Ref" : "AvailabilityZone1" }, - { "Ref" : "AvailabilityZone2" } - ], - "DesiredCapacity" : { "Ref" : "DesiredCapacity" }, - "HealthCheckGracePeriod" : "900", - "HealthCheckType" : "ELB", - "LaunchConfigurationName" : { "Ref" : "LaunchConfiguration" }, - "LoadBalancerNames" : [ { "Ref" : "LoadBalancer" } ], - "MaxSize" : 5, - "MinSize" : { "Ref" : "DesiredCapacity" }, - "TerminationPolicies" : [ "OldestLaunchConfiguration" ], - "VPCZoneIdentifier" : [ - { "Ref" : "SubnetZone1" }, - { "Ref" : "SubnetZone2" } - ] - }, - "UpdatePolicy" : { - "AutoScalingRollingUpdate" : { - "MaxBatchSize" : "1", - "MinInstancesInService" : { "Ref" : "DesiredCapacity" } - } - } - } - } -} diff --git a/sample/cloud_formation/parameters/moonshot-sample-app.yml b/sample/cloud_formation/parameters/moonshot-sample-app.yml deleted file mode 100644 index 31e6e0ee..00000000 --- a/sample/cloud_formation/parameters/moonshot-sample-app.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -ArtifactBucket: "moonshot-sample-bucket2" -AvailabilityZone1: "us-east-1a" -AvailabilityZone2: "us-east-1b" -DesiredCapacity: "2" diff --git a/sample/docroot/index.php b/sample/docroot/index.php deleted file mode 100644 index 83f15493..00000000 --- a/sample/docroot/index.php +++ /dev/null @@ -1,3 +0,0 @@ -