diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..64d4bbd1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** + +Provide the following files as part of the bug report + +* NGINX Plus configuration. Run `sudo nginx -T` to gather the full configuration +* nginx-asg-sync configuration from `/etc/nginx/aws.yaml` + +Steps to reproduce the behavior, such as: +1. Scale from 2 to 5 EC2 instances +2. New instances not added to nginx.conf +3. See error in `/var/log/nginx-asg-sync/nginx-asg-sync.log` + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Your environment** +* Version of nginx-asg-sync +* Version of NGINX Plus +* Version of the OS + +**Additional context** +Add any other context about the problem here. Any log files you want to share. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..d032a4e9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..e49a7890 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ +### Proposed changes +Describe the use case and detail of the change. If this PR addresses an issue on GitHub, make sure to include a link to that issue here in this description (not in the title of the PR). + +### Checklist +Before creating a PR, run through this checklist and mark each as complete. + +- [ ] I have read the [CONTRIBUTING](https://github.com/nginxinc/nginx-asg-sync/blob/master/CONTRIBUTING.md) doc +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] I have checked that all unit tests pass after adding my changes +- [ ] I have updated necessary documentation +- [ ] I have rebased my branch onto master +- [ ] I will ensure my PR is targeting the master branch and pulling from my branch from my own fork diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..7674d438 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,35 @@ +## 0.2-1 (July 27, 2018) + +IMPROVEMENTS: + +* Add supporting documentation for the project https://github.com/nginxinc/nginx-asg-sync/pull/10 +* Update package layout https://github.com/nginxinc/nginx-asg-sync/pull/9 +* Use new NGINX Plus API https://github.com/nginxinc/nginx-asg-sync/pull/7 + +UPGRADE: + +The upgrade process requires changing both NGINX Plus configuration and nginx-asg-sync configuration. Below are the recommended steps to follow: + +1. Upgrade NGINX Plus to R14 or R15 +2. Enable the new API in the NGINX Plus configuration while keeping the upstream_conf and the status API enabled. See an example of configuring the new API in the configuration section, but make sure to keep the upstream_conf and the status API. +3. Reload NGINX Plus to apply the updated configuration +4. Modify the /etc/nginx/aws.yaml file: + * Remove the `upstream_conf_endpoint` and `status_endpoint` fields. + * Add the `api_endpoint` field. See an example in the configuration section of the README.md +5. Download the Release 0.2 nginx-asg-sync package for your OS and upgrade the package using the OS tools (dpkg or rpm). +6. Check the logs of nginx-asg-sync to make sure that it is working properly after the upgrade. +7. Finally remove the upstream_conf and the status API from NGINX Plus configuration. +8. Reload NGINX Plus to apply the updated configuration + +Note: the supported versions of NGINX Plus are R14 and higher. + +## 0.1-2 (August 30, 2017) + +IMPROVEMENTS: + +* Make sure nginx-asg-sync works with NGINX Plus R13 + + +## 0.1-1 (March 6, 2017) + +Initial release diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..20747bd9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,145 @@ +# Contributing Guidelines + +The following is a set of guidelines for contributing to the NGINX AWS Auto-Scale Group Sync tool. We really appreciate that you are considering contributing! + +#### Table Of Contents + +[Ask a Question](#ask-a-question) + +[Getting Started](#getting-started) + +[Contributing](#contributing) + +[Style Guides](#style-guides) + * [Git Style Guide](#git-style-guide) + * [Go Style Guide](#go-style-guide) + +[Code of Conduct](#code-of-conduct) + +## Ask a Question + +We will have a public forum soon where you can come and ask questions and have a discussion. For now please open an Issue on GitHub with the label `question`. + + +## Getting Started + +Read the installation, configuration and building steps in the [README](https://github.com/nginxinc/nginx-asg-sync/blob/master/README.md). + +### Project Structure + +* nginx-asg-sync is a service written in Go that works with NGINX Plus. +* The main code is found under `/cmd/sync/` +* Tools for building the service for supported Operating Systems are found under `/build/package` +* The project dependencies reside in the `/vendor`. We use [dep](https://github.com/golang/dep) for managing dependencies. +* There is a Makefile at the project root used in the build steps. + +## Contributing + +### Report a Bug + +To report a bug, open an issue on GitHub with the label `bug` using the available bug report issue template. Please ensure the issue has not already been reported. + +### Suggest an Enhancement + +To suggest an enhancement, please create an issue on GitHub with the label `enhancement` using the available feature issue template. + +### Open a Pull Request + +* Fork the repo, create a branch, submit a PR when your changes are tested and ready for review +* Fill in [our pull request template](https://github.com/nginxinc/nginx-asg-sync/blob/master/.github/PULL_REQUEST_TEMPLATE.md) + +Note: if you’d like to implement a new feature, please consider creating a feature request issue first to start a discussion about the feature. + +## Style Guides + +### Git Style Guide + +* Keep a clean, concise and meaningful git commit history on your branch, rebasing locally and squashing before submitting a PR +* Follow the guidelines of writing a good commit message as described here https://chris.beams.io/posts/git-commit/ and summarised in the next few points + * In the subject line, use the present tense ("Add feature" not "Added feature") + * In the subject line, use the imperative mood ("Move cursor to..." not "Moves cursor to...") + * Limit the subject line to 72 characters or less + * Reference issues and pull requests liberally after the subject line + * Add more detailed description in the body of the git message (`git commit -a` to give you more space and time in your text editor to write a good message instead of `git commit -am`) + +### Go Style Guide + +* Run `gofmt` over your code to automatically resolve a lot of style issues. Most editors support this running automatically when saving a code file. +* Run `go lint` and `go vet` on your code too to catch any other issues. +* Follow this guide on some good practice and idioms for Go - https://github.com/golang/go/wiki/CodeReviewComments + +## Code of Conduct + +This project and everyone participating in it is governed by this code. + +### Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +### Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +### Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +### Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +### Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at [mailto:nginx@nginx.org]. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +### Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org diff --git a/build/package/debian/aws.yaml.example b/build/package/debian/aws.yaml.example index 856dd05d..4ca8a27c 100644 --- a/build/package/debian/aws.yaml.example +++ b/build/package/debian/aws.yaml.example @@ -1,7 +1,6 @@ # example configuration region: us-west-2 -upstream_conf_endpoint: http://127.0.0.1:8080/upstream_conf -status_endpoint: http://127.0.0.1:8080/status +api_endpoint: http://127.0.0.1:8080/api sync_interval_in_seconds: 5 upstreams: - name: backend1 diff --git a/build/package/debian/changelog b/build/package/debian/changelog index 49bb53ec..e5f1b236 100644 --- a/build/package/debian/changelog +++ b/build/package/debian/changelog @@ -1,9 +1,18 @@ +nginx-asg-sync (0.2-1-%%CODENAME%%) unstable; urgency=low + + * 0.2-1 + * Add supporting guides for contributing and changelog + * Update package layout + * Use new NGINX Plus API + + -- Peter Kelly Fri, 27 Jul 2018 13:48:00 +0000 + nginx-asg-sync (0.1-2-%%CODENAME%%) unstable; urgency=low * 0.1-2 * Make sure nginx-asg-sync works with NGINX Plus R13 - -- Michael Pleshakov Wed, 30 Aug 2017 21:03:28 +0000 + -- Michael Pleshakov Wed, 30 Aug 2017 21:03:28 +0000 nginx-asg-sync (0.1-1-%%CODENAME%%) unstable; urgency=low diff --git a/build/package/rpm/SOURCES/aws.yaml.example b/build/package/rpm/SOURCES/aws.yaml.example index b1acc52a..ed1adb3c 100644 --- a/build/package/rpm/SOURCES/aws.yaml.example +++ b/build/package/rpm/SOURCES/aws.yaml.example @@ -1,7 +1,6 @@ # example configuration # region: us-west-2 -# upstream_conf_endpoint: http://127.0.0.1:8080/upstream_conf -# status_endpoint: http://127.0.0.1:8080/status +# api_endpoint: http://127.0.0.1:8080/api # sync_interval_in_seconds: 5 # upstreams: # - name: backend1 diff --git a/build/package/rpm/SPECS/nginx-asg-sync.spec b/build/package/rpm/SPECS/nginx-asg-sync.spec index 75465073..92d1ca46 100644 --- a/build/package/rpm/SPECS/nginx-asg-sync.spec +++ b/build/package/rpm/SPECS/nginx-asg-sync.spec @@ -3,8 +3,8 @@ Summary: NGINX Plus integration with AWS Auto Scaling groups Name: nginx-asg-sync -Version: 0.1 -Release: 2%{?dist} +Version: 0.2 +Release: 1%{?dist} Vendor: Nginx Software, Inc. URL: https://github.com/nginxinc/nginx-asg-sync Packager: Nginx Software, Inc. @@ -110,6 +110,12 @@ if [ $1 -ge 1 ]; then fi %changelog +* Fri Jul 27 2018 Peter Kelly +- 0.2-1 +- Add supporting guides for contributing and changelog +- Update package layout +- Use new NGINX Plus API + * Wed Aug 30 2017 Michael Pleshakov - 0.1-2 - Make sure nginx-asg-sync works with NGINX Plus R13 diff --git a/cmd/sync/main.go b/cmd/sync/main.go index 2f349661..623cf27f 100644 --- a/cmd/sync/main.go +++ b/cmd/sync/main.go @@ -20,7 +20,7 @@ import ( var configFile = flag.String("config_path", "/etc/nginx/aws.yaml", "Path to the config file") var logFile = flag.String("log_path", "", "Path to the log file. If the file doesn't exist, it will be created") -var version = "0.1-2" +var version = "0.2-1" const connTimeoutInSecs = 10