diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 2d0a516..0000000 --- a/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -ElectricFlow* -/hieradata -/manifests -/environment.conf diff --git a/README.markdown b/README.markdown new file mode 100644 index 0000000..304a326 --- /dev/null +++ b/README.markdown @@ -0,0 +1,23 @@ +Puppet Module for the Electric Flow 6.0 installation + +NOTE: + +This module is now supporting + +1) Windows for Server installation +2) Windows, SLES and Ubuntu for Agent installation + + +The module is installing the Electric Flow Server, the web server and the Repository is three different servers + +The Electric Flow version installed it depends on the .exe file included in the files folder + +For installation set the variable $ef_install. + +$ef_install = true the module install Electric Flow +$ef_install = false the module uninstall Electric Flow + + +The Module works best with the Roles/Profiles pattern + +The module uses Hiera for getting some of the Parameters values diff --git a/README.md b/README.md deleted file mode 100644 index 31c8e4d..0000000 --- a/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Puppet Modules -This project is dedicated to the creation and maintenance of Puppet modules to install the different elements of ElectricFlow. - -# Agent TODO -1. create agent user and group -2. install required packages -3. install agent - -# Server TODO -1. create server user/group -2. create agent user/group -3. install required packages -4. install mysql -5. install all server components diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..14f1c24 --- /dev/null +++ b/Rakefile @@ -0,0 +1,2 @@ +require 'rubygems' +require 'puppetlabs_spec_helper/rake_tasks' diff --git a/manifests/agent/install.pp b/manifests/agent/install.pp new file mode 100644 index 0000000..35af053 --- /dev/null +++ b/manifests/agent/install.pp @@ -0,0 +1,99 @@ +# Class: electricflow::agent::install +# +# This fiel manage the installation of the agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# +class electricflow::agent::install ( + + $ef_package_name = $electricflow::params::ef_package_name, + $ef_exe_path = $electricflow::params::ef_exe_path, + $ef_install_provider = $electricflow::params::provider, + $ef_install_agent_list_options = $electricflow::params::ef_install_agent_list_options, + $ef_operatingsystem = $electricflow::params::ef_operatingsystem, + $ef_creates_file = $electricflow::params::ef_creates_file, + $ef_user_name = $electricflow::params::ef_user_name + +) inherits ::electricflow::params { + + include electricflow::base + + + notify { 'Start Electric Flow agent installation!!!':} + +case $ef_operatingsystem { + 'windows': { + #Package name must match name in Control Panel --> Programs and Features + #https://docs.puppetlabs.com/puppet/3.6/reference/resources_package_windows.html#package-name-must-be-the-displayname + package { $ef_package_name: + ensure => present, + provider => $ef_install_provider, + source => $ef_exe_path, + install_options => $ef_install_agent_list_options, + require => File[$ef_exe_path], + } + } + 'Ubuntu': { + + $ef_exec_command = "${ef_exe_path}${ef_install_agent_list_options}" + $ef_install_exec_name = 'install electric flow' + $ef_release = $::operatingsystemmajrelease + $ef_hardware = $::hardwaremodel + + user { $ef_user_name: + ensure => 'present', + require => File[$ef_exe_path], + } + + package { 'lib32bz2-1.0': + ensure => 'installed', + require => User[$ef_user_name], + } + + package { 'libuuid1:i386': + ensure => 'installed', + require => Package['lib32bz2-1.0'], + } + + + exec { $ef_install_exec_name: + command => "sudo ${ef_exec_command}", + creates => $ef_creates_file, + path => $::path, + require => Package['libuuid1:i386'], + } + + + } + 'SLES': { + + $ef_exec_command = "${ef_exe_path}${ef_install_agent_list_options}" + $ef_install_exec_name = 'install electric flow' + $ef_release = $::operatingsystemmajrelease + $ef_hardware = $::hardwaremodel + + user { $ef_user_name: + ensure => 'present', + require => File[$ef_exe_path], + } + + exec { $ef_install_exec_name: + command => "sudo ${ef_exec_command}", + creates => $ef_creates_file, + path => $::path, + require => User[$ef_user_name], + } + } + default: { + # code + } +} + + +} diff --git a/manifests/agent/setup.pp b/manifests/agent/setup.pp new file mode 100644 index 0000000..f54c104 --- /dev/null +++ b/manifests/agent/setup.pp @@ -0,0 +1,34 @@ +# Class: electricflow::agent::setup +# +# This file manage the setup of the agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::agent::setup ( + + $ef_install = $electricflow::params::ef_install, + + +) inherits ::electricflow::params { + + + if $ef_install { + + include ::electricflow::agent::install + + } + + else { + + include ::electricflow::uninstall + + } + +} diff --git a/manifests/artifactrepo/install.pp b/manifests/artifactrepo/install.pp new file mode 100644 index 0000000..c8f2c37 --- /dev/null +++ b/manifests/artifactrepo/install.pp @@ -0,0 +1,66 @@ +# Class: electricflow::artifactrepo::install +# +# This file manage the installation of the artifact repository and agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::artifactrepo::install ( + + $ef_package_name = $electricflow::params::ef_package_name, + $ef_exe_path = $electricflow::params::ef_exe_path, + $ef_user_name = $electricflow::params::ef_user_name, + $ef_user_passwd = $electricflow::params::ef_user_passwd, + $ef_remote_server = $electricflow::params::ef_remote_server, + $ef_domain = $electricflow::params::ef_domain, + $ef_admin_user_name = $electricflow::params::ef_admin_user_name, + $ef_admin_user_passwd = $electricflow::params::ef_admin_user_passwd + +) inherits ::electricflow::params { + + include electricflow::base + + notify { 'Start Electric Flow artifact repository installation!!!':} + +#Package name must match name in Control Panel --> Programs and Features +#https://docs.puppetlabs.com/puppet/3.6/reference/resources_package_windows.html#package-name-must-be-the-displayname +package { $ef_package_name: + ensure => present, + provider => windows, + source => $ef_exe_path, + install_options => [ + '--mode', + 'silent', + '--installRepository', + '--installAgent', + '--windowsAgentUser', + $ef_user_name, + '--windowsAgentDomain', + $ef_domain, + '--windowsAgentPassword', + $ef_user_passwd, + '--windowsServerUser', + $ef_user_name, + '--windowsServerDomain', + $ef_domain, + '--windowsServerPassword', + $ef_user_passwd, + '--remoteServerDiscoverPlugins', + '--remoteServer', + $ef_remote_server, + '--remoteServerUser', + $ef_admin_user_name, + '--remoteServerPassword', + $ef_admin_user_passwd, + '--trustedAgent' + ], + require => File[$ef_exe_path], +} + +} diff --git a/manifests/artifactrepo/setup.pp b/manifests/artifactrepo/setup.pp new file mode 100644 index 0000000..27ed554 --- /dev/null +++ b/manifests/artifactrepo/setup.pp @@ -0,0 +1,34 @@ +# Class: electricflow::artifactrepo::setup +# +# This file manage the setup of the artifact repository and agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::artifactrepo::setup ( + + $ef_install = $electricflow::params::ef_install, + + +) inherits ::electricflow::params { + + + if $ef_install { + + include ::electricflow::artifactrepo::install + + } + + else { + + include ::electricflow::uninstall + + } + +} diff --git a/manifests/base.pp b/manifests/base.pp new file mode 100644 index 0000000..b88e6bc --- /dev/null +++ b/manifests/base.pp @@ -0,0 +1,39 @@ +# Class: electricflow::base +# +# This module manages base setup for electric flow +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + + +class electricflow::base ( + + $temp_path = $electricflow::params::temp_path, + $ef_exe_path = $electricflow::params::ef_exe_path, + $ef_file_replace = $electricflow::params::ef_file_replace, + $ef_source_path = $electricflow::params::ef_source_path + +) inherits ::electricflow::params{ + + notify { 'Create Installation Folder!!!': } + + #copy installer + file { $temp_path: + ensure => directory + } + + file { $ef_exe_path: + ensure => present, + replace => $ef_file_replace , + source => $ef_source_path, + mode => '0777', + require => File[$temp_path], + } + +} diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000..8f04c90 --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,19 @@ +# Class: electricflow +# +# This module manages electricflow +# +# Parameters: none +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + + +class electricflow + +{ + +} diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 0000000..39f614f --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,126 @@ +# electricflow/manifests/params.pp + +class electricflow::params { + #Fact properties + $ef_domain = $::domain + $ef_fqdn = $::fqdn + $ef_operatingsystem = $::operatingsystem + + $ef_file_replace = 'no' + + #License + $ef_license_source_path = hiera('electricflow::db::licensefile') + $ef_licensefilename = hiera('electricflow::licensefilename') + + #Database + $ef_package_name = hiera('electricflow::db::package_name') + $ef_connect_database = hiera('electricflow::db::connect_database') + $ef_database_type = hiera('electricflow::db::database_type') + $ef_database_name = hiera('electricflow::db::database_name') + $ef_database_hostname = hiera('electricflow::db::database_hostname') + $ef_database_port = hiera('electricflow::db::database_port') + + #AOB + $ef_remote_server = hiera('electricflow::server') + $ef_install = hiera('electricflow::install') + + $ef_admin_user_name = hiera('electricflow::adminusername') + $ef_admin_user_passwd = hiera('electricflow::adminuserpasswd') + + $ef_database_user_name = hiera('electricflow::db::username') + $ef_database_user_passwd = hiera('electricflow::db::userpasswd') + + +case $ef_operatingsystem { + 'windows': { + + #parameters + $temp_path = 'C:\temp\EF' + $ef_exe_path = 'C:\temp\EF\ElectricFlow-6.0.1.96357.exe' + $ef_source_path = 'puppet:///modules/electricflow/ElectricFlow-6.0.1.96357.exe' + $ef_database_dbsetupfile = 'c:\temp\EF\dbsetup_generated.ps1' + #$ef_database_licenseimportfile = 'c:\temp\EF\licenseimport_generated.ps1' + + $ef_license_path = "C:\\temp\\EF\\${ef_licensefilename}" + + $ef_install_folder_1 = 'C:\ProgramData\Electric Cloud' + $ef_install_folder_2 = 'C:\Program Files\Electric Cloud' + + #Hiera parameters + $ef_user_name = hiera('electricflow::username') + $ef_user_passwd = hiera('electricflow::userpasswd') + + $ef_creates_file = undef + + $provider = 'windows' + + $ef_install_agent_list_options = [ + '--mode', + 'silent', + '--installAgent', + '--windowsAgentUser', + $ef_user_name, + '--windowsAgentDomain', + $ef_domain, + '--windowsAgentPassword', + $ef_user_passwd, + '--remoteServerDiscoverPlugins', + '--remoteServer', + $ef_remote_server, + '--remoteServerUser', + $ef_admin_user_name, + '--remoteServerPassword', + $ef_admin_user_passwd, + '--trustedAgent' + ] + + $ef_uninstall_list_options = [ + '--mode', + 'silent' + ] + + } + /^(SLES|Ubuntu)$/: { + + #parameters + $temp_path = '/tmp/EF' + $ef_exe_path = '/tmp/EF/ElectricFlow-6.0.1.96357' + $ef_source_path = 'puppet:///modules/electricflow/ElectricFlow-6.0.1.96357' + + $ef_license_path = "/tmp/EF/${ef_licensefilename}" + + $ef_install_folder_1 = '/opt/electriccloud/electriccommander' + $ef_install_folder_2 = '/opt/electriccloud' + + $pwstate_keyname = undef + + $ef_user_name = pe-puppet + $ef_user_passwd = undef + + $ef_user_group = $ef_user_name + + $provider = undef + + $ef_creates_file = '/opt/electriccloud/electriccommander/version' + + $ef_uninstall_file_path = '/opt/electriccloud/electriccommander/uninstall' + + + $ef_install_agent_list_options = " --mode silent --installAgent --trustedAgent --unixAgentUser ${ef_user_name} --unixAgentGroup ${ef_user_group} --remoteServerDiscoverPlugins --remoteServer ${ef_remote_server} --remoteServerPassword ${ef_admin_user_passwd} --remoteServerUser ${ef_admin_user_name}" + + $ef_uninstall_list_options = ' --mode silent' + + + } + default: { + # code + } +} + + + + + + + +} diff --git a/manifests/server/install.pp b/manifests/server/install.pp new file mode 100644 index 0000000..d3f8be0 --- /dev/null +++ b/manifests/server/install.pp @@ -0,0 +1,112 @@ +# Class: electricflow::server::install +# +# This file manage the installation of the server and agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::server::install ( + + $ef_package_name = $electricflow::params::ef_package_name, + $ef_exe_path = $electricflow::params::ef_exe_path, + $ef_user_name = $electricflow::params::ef_user_name, + $ef_user_passwd = $electricflow::params::ef_user_passwd, + $ef_remote_server = $electricflow::params::ef_remote_server, + $ef_domain = $electricflow::params::ef_domain, + $ef_license_path = $electricflow::params::ef_license_path, + $ef_license_source_path = $electricflow::params::ef_license_source_path, + $temp_path = $electricflow::params::temp_path, + $ef_file_replace = $electricflow::params::ef_file_replace, + $ef_connect_database = $electricflow::params::ef_connect_database, + $ef_database_type = $electricflow::params::ef_database_type, + $ef_database_name = $electricflow::params::ef_database_name, + $ef_database_hostname = $electricflow::params::ef_database_hostname, + $ef_database_port = $electricflow::params::ef_database_port, + $ef_database_user_name = $electricflow::params::ef_database_user_name, + $ef_database_user_passwd = $electricflow::params::ef_database_user_passwd, + $ef_database_dbsetupfile = $electricflow::params::ef_database_dbsetupfile, + $ef_admin_user_name = $electricflow::params::ef_admin_user_name, + $ef_admin_user_passwd = $electricflow::params::ef_admin_user_passwd, + #$ef_database_licenseimportfile = $electricflow::params::ef_database_licenseimportfile + +) inherits ::electricflow::params { + + include electricflow::base + + #if (false) { + notify { 'Start Electric Flow server installation':} + + notify { 'Copying the License file':} + + file { $ef_license_path: + ensure => present, + replace => $ef_file_replace , + source => $ef_license_source_path + } + notify { 'License copied':} + + file { $ef_database_dbsetupfile: + ensure => present, + content => template('electricflow/Database_connect.ps1.erb'), + require => File[$ef_license_path], + replace => true #Always re-generate DB-file + } + notify { 'DB generation script copied':} + + #Package name must match name in Control Panel --> Programs and Features + #https://docs.puppetlabs.com/puppet/3.6/reference/resources_package_windows.html#package-name-must-be-the-displayname + package { $ef_package_name: + ensure => present, + provider => windows, + source => $ef_exe_path, + install_options => [ + '--mode', + 'silent', + '--installServer', + '--installAgent', + '--windowsAgentUser', + $ef_user_name, + '--windowsAgentDomain', + $ef_domain, + '--windowsAgentPassword', + $ef_user_passwd, + '--windowsServerUser', + $ef_user_name, + '--windowsServerDomain', + $ef_domain, + '--windowsServerPassword', + $ef_user_passwd, + '--trustedAgent' + ], + require => File[$ef_exe_path], + } + #} + + + notify { 'Start setting up the Data base':} + + + #Will only execute if database.properties file does not exist + exec { $ef_connect_database: + command => $ef_database_dbsetupfile, + creates => 'C:\ProgramData\Electric Cloud\ElectricCommander\conf\database.properties', + path => $::path, + provider => powershell, + timeout => 6000 + } + + ##Delete DB setup file when done + #exec { 'Delete_dbsetupfile': + # command => "if (Test-Path $ef_database_dbsetupfile) {Remove-Item $ef_database_dbsetupfile -Force}", + # path => $::path, + # provider => powershell + #} + + notify { 'Data base setup done':} +} diff --git a/manifests/server/setup.pp b/manifests/server/setup.pp new file mode 100644 index 0000000..cfb4315 --- /dev/null +++ b/manifests/server/setup.pp @@ -0,0 +1,34 @@ +# Class: electricflow::server::setup +# +# This file manage the setup of th eserver and agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::server::setup ( + + $ef_install = $electricflow::params::ef_install, + + +) inherits ::electricflow::params { + + + if $ef_install { + + include ::electricflow::server::install + + } + + else { + + include ::electricflow::uninstall + + } + +} diff --git a/manifests/uninstall.pp b/manifests/uninstall.pp new file mode 100644 index 0000000..0798ee6 --- /dev/null +++ b/manifests/uninstall.pp @@ -0,0 +1,102 @@ +# Class: electricflow::agent::uninstall +# +# This file manage the uninstallation of the agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::uninstall ( + + $ef_package_name = $electricflow::params::ef_package_name, + $ef_install_folder_1 = $electricflow::params::ef_install_folder_1, + $ef_install_folder_2 = $electricflow::params::ef_install_folder_2, + $ef_install_provider = $electricflow::params::provider, + $ef_uninstall_list_options = $electricflow::params::ef_uninstall_list_options, + $ef_operatingsystem = $electricflow::params::ef_operatingsystem, + $ef_uninstall_file_path = $electricflow::params::ef_uninstall_file_path + +) inherits ::electricflow::params { + + notify { 'Remove Electric Flow !!!':} + +case $ef_operatingsystem { + 'windows': { + #Package name must match name in Control Panel --> Programs and Features + #https://docs.puppetlabs.com/puppet/3.6/reference/resources_package_windows.html#package-name-must-be-the-displayname + package { $ef_package_name: + ensure => absent, + provider => $ef_install_provider, + uninstall_options => $ef_uninstall_list_options + } + + notify { 'Remove Electric Flow folders !!!':} + + file {$ef_install_folder_1: + ensure => absent, + path => $ef_install_folder_1, + recurse => true, + purge => true, + force => true, + require => Package[$ef_package_name], + } + + + file {$ef_install_folder_2: + ensure => absent, + path => $ef_install_folder_2, + recurse => true, + purge => true, + force => true, + require => Package[$ef_package_name], + } + + } + /^(Suse|Debian)$/: { + + $ef_exec_command = "${ef_uninstall_file_path}${ef_uninstall_list_options}" + $ef_uninstall_exec_name = 'uninstall electric flow' + + exec { $ef_uninstall_exec_name: + command => "sudo ${ef_exec_command}", + onlyif => "test -f ${ef_uninstall_file_path}", + path => $::path, + } + + notify { 'Remove Electric Flow folders !!!':} + + file { $ef_install_folder_1: + ensure => absent, + path => $ef_install_folder_1, + recurse => true, + purge => true, + force => true, + require => Exec[$ef_uninstall_exec_name], + } + + + file { $ef_install_folder_2: + ensure => absent, + path => $ef_install_folder_2, + recurse => true, + purge => true, + force => true, + require => File[$ef_install_folder_1], + } + } + default: { + # code + } +} + + + + + + +} diff --git a/manifests/webserver/install.pp b/manifests/webserver/install.pp new file mode 100644 index 0000000..6975a0b --- /dev/null +++ b/manifests/webserver/install.pp @@ -0,0 +1,69 @@ +# Class: electricflow::webserver::install +# +# This file manage the installation of the artifact repository and agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::webserver::install ( + + $ef_package_name = $electricflow::params::ef_package_name, + $ef_exe_path = $electricflow::params::ef_exe_path, + $ef_user_name = $electricflow::params::ef_user_name, + $ef_user_passwd = $electricflow::params::ef_user_passwd, + $ef_remote_server = $electricflow::params::ef_remote_server, + $ef_domain = $electricflow::params::ef_domain, + $ef_fqdn = $electricflow::params::ef_fqdn, + $ef_admin_user_name = $electricflow::params::ef_admin_user_name, + $ef_admin_user_passwd = $electricflow::params::ef_admin_user_passwd + +) inherits ::electricflow::params { + + include electricflow::base + + notify { 'Start Electric Flow web server installation!!!':} + +#Package name must match name in Control Panel --> Programs and Features +#https://docs.puppetlabs.com/puppet/3.6/reference/resources_package_windows.html#package-name-must-be-the-displayname +package { $ef_package_name: + ensure => present, + provider => windows, + source => $ef_exe_path, + install_options => [ + '--mode', + 'silent', + '--installWeb', + '--installAgent', + '--webHostName', + $ef_fqdn, + '--windowsAgentUser', + $ef_user_name, + '--windowsAgentDomain', + $ef_domain, + '--windowsAgentPassword', + $ef_user_passwd, + '--windowsServerUser', + $ef_user_name, + '--windowsServerDomain', + $ef_domain, + '--windowsServerPassword', + $ef_user_passwd, + '--remoteServerDiscoverPlugins', + '--remoteServer', + $ef_remote_server, + '--remoteServerUser', + $ef_admin_user_name, + '--remoteServerPassword', + $ef_admin_user_passwd, + '--trustedAgent' + ], + require => File[$ef_exe_path], +} + +} diff --git a/manifests/webserver/setup.pp b/manifests/webserver/setup.pp new file mode 100644 index 0000000..dd08793 --- /dev/null +++ b/manifests/webserver/setup.pp @@ -0,0 +1,34 @@ +# Class: electricflow::webserver::setup +# +# This file manage the setup of the webserver and agent only +# +# Parameters: +# +# Actions: +# +# Requires: see Modulefile +# +# Sample Usage: +# + +class electricflow::webserver::setup ( + + $ef_install = $electricflow::params::ef_install, + + +) inherits ::electricflow::params { + + + if $ef_install { + + include ::electricflow::webserver::install + + } + + else { + + include ::electricflow::uninstall + + } + +} diff --git a/metadata.json b/metadata.json new file mode 100644 index 0000000..e5b6a27 --- /dev/null +++ b/metadata.json @@ -0,0 +1,15 @@ +{ + "author": "", + "dependencies": [ + {"name":"puppetlabs/powershell"} + ], + "license": "", + "name": "lego-electricflow", + "operatingsystem_support": [], + "project_page": "", + "requirements": [], + "source": "", + "summary": "", + "tags": [], + "version": "0.1.0" +} diff --git a/modules/flowagent/manifests/init.pp b/modules/flowagent/manifests/init.pp deleted file mode 100644 index f5397bc..0000000 --- a/modules/flowagent/manifests/init.pp +++ /dev/null @@ -1,16 +0,0 @@ -class flowAgent { - contain flowagent::user - contain flowagent::package - - file { "/tmp/ElectricFlowAgent-x64-6.0.1.96357": - mode => "0755", - source => "puppet:///modules/flowagent/ElectricFlowAgent-x64-6.0.1.96357" - } - - exec { 'Install ElectricFlow': - command => "/usr/bin/sudo /tmp/ElectricFlowAgent-x64-6.0.1.96357 --mode silent --unixAgentUser $ecuser --unixAgentGroup $ecgroup", - creates => '/opt/electriccloud/electriccommander/logs/installer.log', - returns => 0 - } -} - diff --git a/modules/flowagent/manifests/package.pp b/modules/flowagent/manifests/package.pp deleted file mode 100644 index 5259785..0000000 --- a/modules/flowagent/manifests/package.pp +++ /dev/null @@ -1,16 +0,0 @@ -class flowagent::package { - -# -# Install the 32 bit compatibility packages -# - exec { 'add-i386': - command => '/usr/bin/dpkg -add-architecture i386', - unless => '/usr/bin/dpkg --print-foreign-architectures | /bin/grep i386' - } - package { 'lib32bz2-1.0': - ensure => 'installed', - } - package { 'libuuid1:i386': - ensure => 'installed', - } -} diff --git a/modules/flowagent/manifests/user.pp b/modules/flowagent/manifests/user.pp deleted file mode 100644 index 5b9d974..0000000 --- a/modules/flowagent/manifests/user.pp +++ /dev/null @@ -1,20 +0,0 @@ -class flowagent::user { - -# -# Create the agent user -# - group {'ecgroup': - name => $ecgroup, - ensure => present - } - - user { 'ecuser' : - name => $ecuser, - groups => $ecgroup, - ensure => present, - managehome => true, - shell => '/bin/bash', - home => '/home/ecuser' - } - -} diff --git a/spec/spec.opts b/spec/spec.opts new file mode 100644 index 0000000..91cd642 --- /dev/null +++ b/spec/spec.opts @@ -0,0 +1,6 @@ +--format +s +--colour +--loadby +mtime +--backtrace diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..dc7e9f4 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,2 @@ +require 'rubygems' +require 'puppetlabs_spec_helper/module_spec_helper' diff --git a/templates/Database_connect.ps1.erb b/templates/Database_connect.ps1.erb new file mode 100644 index 0000000..31c1a5e --- /dev/null +++ b/templates/Database_connect.ps1.erb @@ -0,0 +1,72 @@ +try { + #Parameters passed by Puppet + $databaseType = '<%= @ef_database_type %>' + $databaseName = '<%= @ef_database_name %>' + $databaseHostName = '<%= @ef_database_hostname %>' + $databasePort = <%= @ef_database_port %> + $databaseUserName = '<%= @ef_database_user_name %>' + $databaseUserPasswd = '<%= @ef_database_user_passwd %>' + $licensePath = '<%= @ef_license_path %>' + $adminUserName = '<%= @ef_admin_user_name %>' + $adminUserPasswd = '<%= @ef_admin_user_passwd %>' + $licenseimportfile = '<%= @ef_database_licenseimportfile %>' + $exe_tool = 'ectool' + + Write-Host '--- Start Electric Flow Database setup' + Write-Host 'Set Data base config' + $conn = New-Object System.Data.SqlClient.SqlConnection + $conn.connectionstring = [string]::format("Server={0};user={1};password={2};",$databaseHostName, $databaseUserName, $databaseUserPasswd) + $conn.open() + $createDB = $false + try { + $sql = "SELECT name FROM sys.databases WHERE name = '$databaseName'" + $cmd = New-Object Data.SqlClient.SqlCommand $sql, $conn + $str = $cmd.ExecuteScalar() + if ($str -eq $null) { + $createDB = $true + } + $conn.Close() #Close $cmd nicely + + if ($createDB) { + Write-Host "DB does not exist - creating database $databaseName"; + $conn.Open() + $sql = "CREATE DATABASE [$databaseName]" + $cmd = New-Object Data.SqlClient.SqlCommand $sql, $conn + $cmd.ExecuteNonQuery() + $conn.Close() + Write-Host "Database $databaseName created"; + } + + Write-Host 'Calling setDatabaseConfiguration...' + &$exe_tool setDatabaseConfiguration --databaseType $databaseType --databaseName $databaseName --hostName $databaseHostName --port $databasePort --ignorePasskeyMismatch 1 --userName $databaseUserName --password $databaseUserPasswd + Write-Host 'setDatabaseConfiguration called succesfully' + + Write-Host 'Sleep for 4 minutes to allow EC to initialize...' + Start-Sleep -Seconds 240 + #Import enterprise license + + Write-Host 'Log in as admin...' + &$exe_tool login --userName $adminUserName --password $adminUserPasswd + Write-Host 'Log in done, importing license...' + + &$exe_tool importLicenseData $licensePath + Write-Host 'License imported' + } + catch { + Write-Host $_ + } + finally { + if ($conn -ne $null) { + $conn.Close() + } + } +} +catch { + Write-Host 'An error occurred: ', $_ +} + + + + + + diff --git a/tests/init.pp b/tests/init.pp new file mode 100644 index 0000000..12e393e --- /dev/null +++ b/tests/init.pp @@ -0,0 +1 @@ +include electricflow