🚀 Initial release: Complete Ansible LEMP WordPress automation

 Features:
- Complete LEMP stack automation
- WordPress with WP-CLI
- Redis Object Cache (50% performance boost)
- Multi-OS support
- SSL/Let's Encrypt integration
- Security hardening
- Enterprise features
- Docker testing environment
- GitHub Actions CI/CD
- Comprehensive documentation

🧪 Fully tested and production-ready

Copyright (c) 2025 Sebastian Palencsár
This commit is contained in:
Sebastian Palencsár
2025-06-18 18:24:03 +02:00
commit 573224a36b
61 changed files with 6629 additions and 0 deletions

235
docs/contributing.md Normal file
View File

@@ -0,0 +1,235 @@
# Contributing to Ansible LEMP WordPress
Thank you for your interest in contributing! This document provides guidelines for contributing to this project.
## Code of Conduct
This project follows the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/). By participating, you agree to uphold this code.
## How to Contribute
### Reporting Bugs
Before creating bug reports, please check the existing issues to avoid duplicates. When creating a bug report, include:
- **Description:** Clear description of the issue
- **Environment:** OS version, Ansible version, target system details
- **Steps to reproduce:** Detailed steps to recreate the issue
- **Expected behavior:** What you expected to happen
- **Actual behavior:** What actually happened
- **Logs:** Relevant log output (use code blocks)
- **Configuration:** Your inventory and variable files (sanitized)
### Suggesting Features
Feature requests are welcome! Please:
- Check existing feature requests first
- Provide a clear use case
- Explain the expected behavior
- Consider implementation complexity
- Be open to discussion
### Pull Requests
1. **Fork the repository**
2. **Create a feature branch:** `git checkout -b feature/amazing-feature`
3. **Make your changes**
4. **Test thoroughly** (see Testing section)
5. **Commit with clear messages**
6. **Push to your fork:** `git push origin feature/amazing-feature`
7. **Open a Pull Request**
#### Pull Request Guidelines
- **Clear title:** Summarize the change in the title
- **Description:** Explain what and why, not just how
- **Link issues:** Reference related issues with "Fixes #123"
- **Test coverage:** Ensure your changes are tested
- **Documentation:** Update docs if needed
- **Small changes:** Keep PRs focused and manageable
## Development Setup
### Prerequisites
- Ansible 2.9+
- Docker and Docker Compose (for testing)
- Git
- Text editor with YAML support
### Local Development
1. **Clone your fork:**
```bash
git clone https://github.com/yourusername/ansible-lemp-wordpress.git
cd ansible-lemp-wordpress
```
2. **Set up testing environment:**
```bash
cd docker/
docker-compose up -d
```
3. **Test your changes:**
```bash
ansible-playbook -i inventory/docker.ini playbooks/lemp-wordpress.yml
```
### Testing
Before submitting, please test your changes:
#### Unit Tests
```bash
# Lint Ansible playbooks
ansible-lint playbooks/*.yml
# Validate YAML syntax
ansible-playbook --syntax-check playbooks/lemp-wordpress.yml
```
#### Integration Tests
```bash
# Test on Docker container
cd docker/
docker-compose up -d
ansible-playbook -i ../inventory/docker.ini ../playbooks/lemp-wordpress.yml
# Test WordPress installation
ansible-playbook -i ../inventory/docker.ini ../playbooks/install-wordpress-official.yml
# Verify installation
curl -I http://localhost:8080
```
#### Multi-OS Testing
Test on different operating systems:
- Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS
- Debian 11
- Debian 12
## Coding Standards
### Ansible Best Practices
- **Use descriptive task names**
- **Add appropriate tags**
- **Use variables for reusable values**
- **Follow idempotency principles**
- **Include proper error handling**
### YAML Style
```yaml
# Good
- name: Install nginx package
apt:
name: nginx
state: present
update_cache: yes
tags:
- nginx
- packages
# Avoid
- apt: name=nginx state=present update_cache=yes
```
### Variables
- Use lowercase with underscores: `mysql_root_password`
- Group related variables in files
- Provide sensible defaults
- Document complex variables
### Templates
- Use `.j2` extension for Jinja2 templates
- Include header comments
- Use consistent indentation
- Test template rendering
## File Structure
```
ansible-lemp-wordpress/
├── playbooks/ # Main playbooks
├── roles/ # Ansible roles (if used)
├── templates/ # Jinja2 templates
├── vars/ # Variable definitions
├── inventory/ # Inventory examples
├── docker/ # Docker testing environment
├── docs/ # Documentation
├── tests/ # Test scripts
└── .github/ # GitHub workflows
```
## Documentation
### Required Documentation
- Update README.md for significant changes
- Add inline comments for complex logic
- Update relevant docs/ files
- Include examples for new features
### Documentation Style
- Use clear, concise language
- Include code examples
- Provide both basic and advanced usage
- Test all documented commands
## Release Process
### Version Numbering
This project follows [Semantic Versioning](https://semver.org/):
- **MAJOR:** Incompatible API changes
- **MINOR:** New functionality (backward compatible)
- **PATCH:** Bug fixes (backward compatible)
### Changelog
Update CHANGELOG.md for all changes:
- **Added:** New features
- **Changed:** Changes in existing functionality
- **Deprecated:** Soon-to-be removed features
- **Removed:** Removed features
- **Fixed:** Bug fixes
- **Security:** Security improvements
## Getting Help
- **Documentation:** Check the docs/ directory
- **Issues:** Search existing GitHub issues
- **Discussions:** Use GitHub Discussions for questions
- **IRC:** Join #ansible on Libera.Chat
- **Community:** Ansible community forums
## Recognition
Contributors will be recognized in:
- README.md contributors section
- Release notes for significant contributions
- Project documentation
## License
By contributing, you agree that your contributions will be licensed under the MIT License.
## Questions?
Don't hesitate to ask! Open an issue with the "question" label or start a discussion.
Thank you for contributing! 🎉
## 👨‍💻 Maintainer
**Sebastian Palencsár**
Copyright (c) 2025 Sebastian Palencsár