Skip to content

Commit

Permalink
Added a spring petclinic role and used it in playbook
Browse files Browse the repository at this point in the history
  • Loading branch information
qtsathish committed May 18, 2021
1 parent 852c707 commit 12b8d50
Show file tree
Hide file tree
Showing 23 changed files with 354 additions and 0 deletions.
3 changes: 3 additions & 0 deletions May21/qtecommerce/devhosts
@@ -0,0 +1,3 @@
[appserver]
10.0.0.5
localhost
6 changes: 6 additions & 0 deletions May21/qtecommerce/group_vars/appserver
@@ -0,0 +1,6 @@
---
java_package: openjdk-11-jdk
app_dir: /usr/share/springpetclinic
app_download_url: https://referenceapplicationskhaja.s3-us-west-2.amazonaws.com/spring-petclinic-2.4.2.jar
app_file_name: /usr/share/springpetclinic/spring-petclinic-2.4.2.jar
app_username: springbootuser
2 changes: 2 additions & 0 deletions May21/qtecommerce/host_vars/localhost
@@ -0,0 +1,2 @@
---
java_package: java-11-openjdk
6 changes: 6 additions & 0 deletions May21/qtecommerce/main.yaml
@@ -0,0 +1,6 @@
---
- name: install spring pet clinic
become: yes
hosts: appserver
roles:
- springpetclinic
29 changes: 29 additions & 0 deletions May21/qtecommerce/roles/lamp/.travis.yml
@@ -0,0 +1,29 @@
---
language: python
python: "2.7"

# Use the new container infrastructure
sudo: false

# Install ansible
addons:
apt:
packages:
- python-pip

install:
# Install ansible
- pip install ansible

# Check ansible version
- ansible --version

# Create ansible.cfg with correct roles_path
- printf '[defaults]\nroles_path=../' >ansible.cfg

script:
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check

notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
38 changes: 38 additions & 0 deletions May21/qtecommerce/roles/lamp/README.md
@@ -0,0 +1,38 @@
Role Name
=========

A brief description of the role goes here.

Requirements
------------

Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.

Role Variables
--------------

A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.

Dependencies
------------

A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.

Example Playbook
----------------

Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:

- hosts: servers
roles:
- { role: username.rolename, x: 42 }

License
-------

BSD

Author Information
------------------

An optional section for the role authors to include contact information, or a website (HTML is not allowed).
2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/lamp/defaults/main.yml
@@ -0,0 +1,2 @@
---
# defaults file for role_skeleton
2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/lamp/handlers/main.yml
@@ -0,0 +1,2 @@
---
# handlers file for role_skeleton
53 changes: 53 additions & 0 deletions May21/qtecommerce/roles/lamp/meta/main.yml
@@ -0,0 +1,53 @@
galaxy_info:
author: your name
description: your role description
company: your company (optional)

# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker

# Choose a valid license ID from https://spdx.org - some suggested licenses:
# - BSD-3-Clause (default)
# - MIT
# - GPL-2.0-or-later
# - GPL-3.0-only
# - Apache-2.0
# - CC-BY-4.0
license: license (GPL-2.0-or-later, MIT, etc)

min_ansible_version: 2.9

# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:

#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99

galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.

dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/lamp/tasks/main.yml
@@ -0,0 +1,2 @@
---
# tasks file for role_skeleton
2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/lamp/tests/inventory
@@ -0,0 +1,2 @@
localhost

5 changes: 5 additions & 0 deletions May21/qtecommerce/roles/lamp/tests/test.yml
@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- role_skeleton
2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/lamp/vars/main.yml
@@ -0,0 +1,2 @@
---
# vars file for role_skeleton
29 changes: 29 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/.travis.yml
@@ -0,0 +1,29 @@
---
language: python
python: "2.7"

# Use the new container infrastructure
sudo: false

# Install ansible
addons:
apt:
packages:
- python-pip

install:
# Install ansible
- pip install ansible

# Check ansible version
- ansible --version

# Create ansible.cfg with correct roles_path
- printf '[defaults]\nroles_path=../' >ansible.cfg

script:
# Basic role syntax check
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check

notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
38 changes: 38 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/README.md
@@ -0,0 +1,38 @@
springpetclinic
=========

This role can be used to install spring-pet-clinic on centos and ubuntu servers

Requirements
------------

Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.

Role Variables
--------------

A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.

Dependencies
------------

A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.

Example Playbook
----------------

Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:

- hosts: servers
roles:
- { role: username.rolename, x: 42 }

License
-------

BSD

Author Information
------------------

An optional section for the role authors to include contact information, or a website (HTML is not allowed).
2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/defaults/main.yml
@@ -0,0 +1,2 @@
---
# defaults file for role_skeleton
@@ -0,0 +1,11 @@
[Unit]
Description=Spring Pet Clinic
After=syslog.target

[Service]
User=springbootuser
ExecStart=/usr/bin/java -jar /usr/share/springpetclinic/spring-petclinic-2.4.2.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
16 changes: 16 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/handlers/main.yml
@@ -0,0 +1,16 @@
---
# handlers file for role_skeleton
- name: Change ownership of jar file
file:
path: "{{ app_file_name }}"
owner: "{{ app_username }}"
mode: '500'
state: file

- name: debug message for java
debug:
msg: "java with package {{ java_package }} is installed"

- name: debug message for directory creation
debug:
msg: "Directory created at {{ app_dir }}"
53 changes: 53 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/meta/main.yml
@@ -0,0 +1,53 @@
galaxy_info:
author: your name
description: your role description
company: your company (optional)

# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker

# Choose a valid license ID from https://spdx.org - some suggested licenses:
# - BSD-3-Clause (default)
# - MIT
# - GPL-2.0-or-later
# - GPL-3.0-only
# - Apache-2.0
# - CC-BY-4.0
license: license (GPL-2.0-or-later, MIT, etc)

min_ansible_version: 2.9

# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:

#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99

galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.

dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.

44 changes: 44 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/tasks/main.yml
@@ -0,0 +1,44 @@
---
- name: Fail the execution when the distribution is not ubuntu and centos
fail:
msg: "This playbook will work only on ubuntu instances. Support for other OS will be added soon"
when: ansible_facts['distribution'] != "Ubuntu" and ansible_facts['distribution'] != "CentOS"

- name: install java
package:
name: "{{ java_package }}"
state: present
notify:
- debug message for java

- name: Create a spring petclinic directory
file:
path: "{{ app_dir }}"
state: directory
notify:
- debug message for directory creation

- name: download spring petclinic
get_url:
url: "{{ app_download_url }}"
dest: "{{ app_file_name }}"

- name: Create springbootuser
user:
name: "{{ app_username }}"
password: "{{ app_username }}"
state: present
notify:
- Change ownership of jar file

- name: Copy the spring petclinic service file
copy:
dest: /etc/systemd/system/springpetclinic.service
src: springpetclinic.service

- name: Enable and start spring petclinic
systemd:
name: springpetclinic.service
enabled: yes
state: started

2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/tests/inventory
@@ -0,0 +1,2 @@
localhost

5 changes: 5 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/tests/test.yml
@@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- role_skeleton
2 changes: 2 additions & 0 deletions May21/qtecommerce/roles/springpetclinic/vars/main.yml
@@ -0,0 +1,2 @@
---
# vars file for role_skeleton

0 comments on commit 12b8d50

Please sign in to comment.