Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rmarting/ansible-playbook-fuse
Ansible Playbook to operate a Red Hat Fuse 7 Standalone platform (install, upgrade, uninstall, patch, deploy)
https://github.com/rmarting/ansible-playbook-fuse
ansible ansible-playbook ansible-role ansible-roles fuse fuse-standalone jboss-fuse playbook
Last synced: about 1 month ago
JSON representation
Ansible Playbook to operate a Red Hat Fuse 7 Standalone platform (install, upgrade, uninstall, patch, deploy)
- Host: GitHub
- URL: https://github.com/rmarting/ansible-playbook-fuse
- Owner: rmarting
- License: gpl-3.0
- Created: 2017-04-21T14:21:11.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-02-15T11:55:03.000Z (over 5 years ago)
- Last Synced: 2024-09-30T17:42:20.914Z (about 2 months ago)
- Topics: ansible, ansible-playbook, ansible-role, ansible-roles, fuse, fuse-standalone, jboss-fuse, playbook
- Homepage:
- Size: 99.6 KB
- Stars: 10
- Watchers: 5
- Forks: 21
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# Fuse Standalone Playbook
## About
This [Ansible Playbook](http://docs.ansible.com/ansible/playbooks.html) includes
a set of different roles:* **fuse-install**: Deploys a set of Red Hat JBoss Fuse Standalone instances on several hosts.
* **fuse-uninstall**: Uninstall a set of Red Hat JBoss Fuse Standalone instances from several hosts.
* **fuse-deploy-bundle**: Deploys a set of Application Bundles on several hosts.
* **fuse-undeploy-bundle**: Undeploys a set of Application Bundles on several hosts.
* **fuse-patch**: Patch a set of Red Hat JBoss Fuse Standalone instances from several hosts.These roles with the right configuration will allow you to deploy a full complex
Red Hat JBoss Fuse environment and automate the most common tasks.[Change Log](./Changelog.md)
## Ansible Requirements
This playbook has tested with the next Ansible versions:
ansible 2.2.1.0
ansible 2.3.0.0
ansible 2.3.1.0The playbook has to be executed with **root permission**, using the **root user** or
via **sudo** because it will install packages and configure the hosts.## RHEL Subscription Required
This role is prepared to be executed in a RHEL7 Server. Subscription is required to
execute the **Grant RHEL and Fuse repos enabled** task, which enables the required
repositories to install Fuse dependencies## Global and Host Variables
### Global Variables
Each playbook will use a set of Global Variables with values that it will be the same for all of them.
These variables will be defined in **groups_vars/all.yaml** file.
These variables are:
* **binary**: to define fuse binary location at your ansible control machine.
# Fuse Binary Setting
binary:
folder: 'Users/yohanesws/RedHat/Installer/'* **fuse**: Define the Red Hat JBoss Fuse version and patch to install. This values will
form the path the the binaries: */tmp/jboss-fuse-karaf-{{ fuse['version'] }}.redhat-{{ fuse['patch'] }}.zip*# Fuse Version and Patch
fuse:
version: '6.3.0'
patch: '254'
maven_version: '630262'* **user**: OS user to execute the Fuse process.
# OS User to install/execute Fuse
user:
name: 'fuse'
shell: '/bin/bash'
homedir: 'True'* **java_home**: Path to Java Virtual Machine to execute the process.
# Java Home
java_home: /usr/lib/jvm/jre-1.8.0-openjdk* **fuse_base**: Fuse base path where it will be installed everything.
# Fuse Home
fuse_base: '/opt/fuse'* **fuse_home**: Fuse Home path where it will installed each instance. This
variable will be defined for each host with a name. This allow installs more
instances in the same hosts.# Fuse Home
fuse_home: '{{ fuse_base }}/latest-{{ esb_name }}'* **fuse_client**: Fuse Client command line to connect to a RHJF instance. It will
use administrative credentials.fuse_client: '{{ fuse_home }}/bin/client -r 3 -d 10 -u {{ fuse_users.admin.username }} -p {{ fuse_users.admin.password }}'
* **maven repo**: Maven repository configuration for Fuse to use it.#single maven repository
maven_repository_manager: http://172.16.1.1:8381/artifactory/libs-snapshot#mutiple maven repository
maven_repository:
-
url: 'http://172.16.1.1:8381/artifactory/libs-release'
id: 'local.release'
extra: ''
- url: 'http://172.16.1.1:8381/artifactory/libs-snapshot'
id: 'local.snapshot'
extra: '@snapshots'### Host Variables
Each role will use a set of Host Variables defined in the playbook for each
host defined in the inventory.These variables are:
* **esb_name**: Logical name to identify each Fuse Instance. Mandatory.
* **port_offset**: Port offset to be added to default Fuse ports. Mandatory.These variables should be defined in the playbook as:
roles:
# Two Fuse Standalone with a Network of Brokers
- { role: fuse-install, esb_name: 'esb01', port_offset: '0' }
- { role: fuse-install, esb_name: 'esb02', port_offset: '100' }## Ansible Roles
### fuse-install role
This role deploys several Fuse Standalone instances in a set of hosts.
The main tasks done are:
* Install Fuse prerequisites and set up host
* Install Fuse binaries
* Create OS users and OS services
* Set up different Fuse features: Karaf, Security, A-MQ, Jetty, ...Red Hat JBoss Fuse binaries should be downloaded from [Red Hat Customer Portal](https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?downloadType=distributions&product=jboss.fuse&version=6.3.0)
(subscription needed). The binaries should be copied into **/tmp** folder from
the host where the playbook will be executed.#### Configuration parameters
Role's execution could be configured with the following variables.
Global Variables are defined in **group_vars/all.yaml** file.:
* **fuse_users**: Users map to be created in each Fuse instance. These users will
be stored in **{{ fuse_home }}/etc/users.properties** file.# Fuse Administrative Users
fuse_users:
admin:
username: admin
password: karaf
roles:
- admin
- SuperUser* **nob_multicast_name**: Multicast cluster name to create the Network of Brokers.
# Network of Brokers Multicast
nob_multicast_name: default* **kahadb_directory**: Absolute path for KahaDB store for each broker included
in an A-MQ Master/Slave topology.# KahaDB persistence store
kahadb_directory: /opt/fuse/kahadbHost Variables are defined in playbook:
* **nob**: Sets that this instance should be a member of a Network of Brokers. Values: (true|false). Optional.
* **amq_master_slave**: Sets that this instance will be a member of a A-MQ Master/Slave topology. Values: (true|false). Optional.
* **esb_type**: Identify each Fuse type. This variable will define the final
features needed in this instance. The current values permitted:
* **full**: Full Fuse instance. Default value.
* **noamq**: Disable A-MQ features.#### Example playbook
To execute this playbook:
ansible-playbook -i hosts fuse-install.yaml
Inventory (*host* file):
[fuse-lab-environment]
rhel7jboss01
rhel7jboss02
rhel7jboss03Playbook (*fuse-install.yaml* file):
---
- name: Fuse Standalone Playbook
hosts: fuse-lab-environment
serial: 2
remote_user: cloud-user
gather_facts: true
become: yes
become_user: root
become_method: sudo
roles:
# Two Fuse Standalone with a Network of Brokers
- { role: fuse-install, esb_name: 'esb01', port_offset: '0', nob: 'true' }
- { role: fuse-install, esb_name: 'esb02', port_offset: '100', nob: 'true' }Other alternatives:
* Two Fuse Standalone without a Network of Brokers:
roles:
- { role: fuse-install, esb_name: 'esb01', port_offset: '0', nob: 'false' }
- { role: fuse-install, esb_name: 'esb02', port_offset: '100', nob: 'false' }* One Fuse Standalone with Full profiles and One Fuse Standalone without A-MQ profile
roles:
- { role: fuse-install, esb_name: 'esb01', port_offset: '0', nob: 'true' }
- { role: fuse-install, esb_name: 'esb02', port_offset: '100', esb_type: 'noamq' }### fuse-uninstall role
This role uninstall several Fuse Standalone instances from inventory host.
The main tasks done are:
* Stop Fuse services
* Remove OS services
* Remove Fuse binaries#### Configuration parameters
Role's execution could be configured with the following variables.
This role uses the global variables and host variables defined for
**fuse-install** role.#### Example playbook
To execute this playbook:
ansible-playbook -i hosts fuse-uninstall.yaml
Inventory (*host* file):
[fuse-lab-environment]
rhel7jboss01
rhel7jboss02
rhel7jboss03Playbook (*fuse-undeploy-bundle.yaml* file):
---
- name: Uninstall Playbook of a Fuse Standalone Environment
hosts: fuse-lab-environment
remote_user: cloud-user
gather_facts: true
become: yes
become_user: root
become_method: sudo
roles:
- { role: fuse-uninstall, esb_name: 'esb01' }
- { role: fuse-uninstall, esb_name: 'esb02' }### fuse-deploy-bundle role
This role deploys several Application Bundles into a set of Fuse Standalone instances.
The main tasks done are:
* Download artifacts from a Maven Repository Manager
* Copy artifacts into **{{ fuse_home }}/deploy** folder
* Install Features repositories (URL)
* Install Features from URL list of repositories
* Install OSGi Bundles#### Configuration parameters
Role's execution could be configured with the following variables.
Global Variables are defined in **group_vars/all.yaml** file.:
* **app_home**: Location to store the applications to be deployed before to do it.
# Applications Home
app_home: '/opt/fuse/applications'* **maven_repository_manager**: Maven Repository location to resolve the artifacts
to be deployed.# Maven Repository
maven_repository_manager: http://rhel7jboss01:8081/nexus/content/groups/public* **applications**: List of Maven dependencies to be deployed. The artifacts should
be located using their GAV coordinates.# Application List to deploy
applications:
-
groupId: com.redhat.camel
artifactId: camel-amq-consumer
version: 1.1.0-SNAPSHOT
-
groupId: com.redhat.camel
artifactId: camel-amq-producer
version: 1.1.0-SNAPSHOT
-
groupId: com.redhat.camel
artifactId: camel-amq-forwarder
version: 1.1.0-SNAPSHOT* **features**: List of Features to be deployed. The artifacts should
be located using their GAV coordinates. The *name* attribute defines the
name of the feature to install from the list url defined by the GAV coordinatesfeatures:
-
groupId: com.redhat.fuse.demo
artifactId: fuse-demo-features
version: 1.1.0-SNAPSHOT
name: fuse-demo-features* **bundles**: List of OSGi bundles to be deployed. The artifacts should
be located using their GAV coordinates. The *name* attribute defines the
name of the bundle to install from the list url defined by the GAV coordinates# Bundles List to deploy
bundles:
-
groupId: com.redhat.fuse.demo
artifactId: camel-cxfrs
version: 1.1.0-SNAPSHOT
-
groupId: com.redhat.fuse.demo
artifactId: camel-cxf
version: 1.1.0-SNAPSHOTHost Variables are defined in playbook:
* **deploy_features**: Sets if features should be installed in this Fuse Instance. Values: (yes|no). Mandatory.
* **deploy_bundles**: 'Sets if bundles should be installed in this Fuse Instance. Values: (yes|no). Mandatory.
* **deploy_applications**: Sets if applications should be installed in this Fuse Instance. Values: (yes|no). Mandatory.
#### Example playbook
To execute this playbook:
ansible-playbook -i hosts fuse-deploy-bundle.yaml
Inventory (*host* file):
[fuse-lab-environment]
rhel7jboss01
rhel7jboss02
rhel7jboss03Playbook (*fuse-deploy-bundle.yaml* file):
---
- name: Fuse Deploy Bundles Playbook
hosts: fuse-lab-environment
serial: 2
remote_user: cloud-user
gather_facts: true
become: yes
become_user: root
become_method: sudo
roles:
# Deploying Bundles in Two Fuse Standalone
- {
role: fuse-deploy-bundle,
esb_name: 'esb01',
deploy_features: 'yes',
deploy_bundles: 'no',
deploy_applications: 'yes'
}
- {
role: fuse-deploy-bundle,
esb_name: 'esb02',
deploy_features: 'yes',
deploy_bundles: 'yes',
deploy_applications: 'yes'
}### fuse-undeploy-bundle role
This role undeploys several Application Bundles from a set of Fuse Standalone instances.
The main tasks done are:
* Remove artifacts from **{{ fuse_home }}/deploy** folder
* Uninstall Features from URL list of repositories
* Uninstall Features repositories (URL)
* Uninstall OSGi Bundles#### Configuration parameters
Role's execution could be configured with the following variables.
Global Variables are defined in **group_vars/all.yaml** file.:
* **maven_repository_manager**: Maven Repository location to resolve the artifacts
to be deployed.# Maven Repository
maven_repository_manager: http://rhel7jboss01:8081/nexus/content/groups/public* **applications_undeploy**: List of Maven dependencies to be undeployed. The artifacts should
be located using their GAV coordinates.# Application List to undeploy
applications_undeploy:
-
groupId: com.redhat.camel
artifactId: camel-amq-consumer
version: 1.1.0-SNAPSHOT
-
groupId: com.redhat.camel
artifactId: camel-amq-producer
version: 1.1.0-SNAPSHOT
-
groupId: com.redhat.camel
artifactId: camel-amq-forwarder
version: 1.1.0-SNAPSHOT* **features_undeploy**: List of Maven dependencies to be undeployed.
features_undeploy:
-
groupId: com.redhat.fuse.demo
artifactId: fuse-demo-features
version: 1.1.0-SNAPSHOT
name: fuse-demo-features* **bundles_undeploy**: List of OSGi bundles to be undeployed
# Bundles List to deploy
bundles:
-
groupId: com.redhat.fuse.demo
artifactId: camel-cxfrs
version: 1.1.0-SNAPSHOT
-
groupId: com.redhat.fuse.demo
artifactId: camel-cxf
version: 1.1.0-SNAPSHOTThere aren't host variables to define in this role.
#### Example playbook
To execute this playbook:
ansible-playbook -i hosts fuse-undeploy-bundle.yaml
Inventory (*host* file):
[fuse-lab-environment]
rhel7jboss01
rhel7jboss02
rhel7jboss03Playbook (*fuse-undeploy-bundle.yaml* file):
---
- name: Fuse Undeploy Bundles Playbook
hosts: fuse-lab-environment
serial: 2
remote_user: cloud-user
gather_facts: true
become: yes
become_user: root
become_method: sudo
roles:
# Undeploying Bundles in Two Fuse Standalone
- { role: fuse-undeploy-bundle, esb_name: 'esb01' }
- { role: fuse-undeploy-bundle, esb_name: 'esb02' }### fuse-patch role
This role patches several Fuse Standalone instances in a set of hosts.
The main tasks done are:
* Backup Fuse Standalone instances
* Install Patch Fuse binaries
* Simulate and patch Fuse instances with *patch* commandsThis process is documented in [Patching a Standalone Container](https://access.redhat.com/documentation/en-us/red_hat_jboss_fuse/6.3/html-single/configuring_and_running_jboss_fuse/#ESBRuntimePatchStandalone)
section of the Red Hat JBoss Fuse Documentation#### Configuration parameters
Role's execution could be configured with the following variables.
Global Variables are defined in **group_vars/all.yaml** file.:
* **fuse**: Define the Red Hat JBoss Fuse version and patch to install. This values will
form the path the the binaries: */tmp/jboss-fuse-karaf-{{ fuse['version'] }}.redhat-{{ fuse['patch'] }}.zip*# Fuse Version and Patch
fuse:
version: '6.3.0'
patch: '262'
maven_version: '630262'* **fuse_patch**: Define the Red Hat JBoss Fuse version and patch to patch into the
current Fuse Instance runnning. This values will form the path the
the binaries: */tmp/jboss-fuse-karaf-{{ fuse_patch['version'] }}.redhat-{{ fuse_patch['patch'] }}.zip*# Patch Fuse Version and Patch
fuse_patch:
version: '6.3.0'
patch: '262'
maven_version: '630262'There aren't host variables to define in this role.
#### Example playbook
To execute this playbook:
ansible-playbook -i hosts fuse-patch.yaml
Inventory (*host* file):
[fuse-lab-environment]
rhel7jboss01
rhel7jboss02
rhel7jboss03Playbook (*fuse-patch.yaml* file):
---
- name: Patch Playbook of a Fuse Standalone Environment
hosts: fuse-lab-environment
serial: 2
remote_user: cloud-user
gather_facts: true
become: yes
become_user: root
become_method: sudo
roles:
- { role: fuse-patch, esb_name: 'esb01', port_offset: '0' }
- { role: fuse-patch, esb_name: 'esb02', port_offset: '100' }# Main References
* [Product Documentation for Red Hat JBoss Fuse](https://access.redhat.com/documentation/en/red-hat-jboss-fuse/)
* [Ansible Documentation](http://docs.ansible.com/ansible/)
* [How to remove the embedded ActiveMQ Broker from being deployed in JBoss Fuse?](https://access.redhat.com/solutions/1229533)
* [ActiveMQ - Network of Brokers](http://activemq.apache.org/networks-of-brokers.html)