From e90473b35136d03b34979ac13fbdda55aa841ed3 Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Wed, 31 May 2017 13:59:16 +0200 Subject: [PATCH] Docs: Replace the command pipe w/ the REST API as Icinga Web 2 requirement in 'Getting Started' chapter fixes #5077 --- doc/2-getting-started.md | 61 +++++++++--------- .../getting-started/id-apache-centos7.png | Bin 21899 -> 0 bytes 2 files changed, 29 insertions(+), 32 deletions(-) delete mode 100644 doc/images/getting-started/id-apache-centos7.png diff --git a/doc/2-getting-started.md b/doc/2-getting-started.md index e5a26ac67..dbf19c241 100644 --- a/doc/2-getting-started.md +++ b/doc/2-getting-started.md @@ -412,6 +412,9 @@ or Icinga Web 1.x. There is a separate module for each database backend. At present support for both MySQL and PostgreSQL is implemented. +Please choose whether to install [MySQL](2-getting-started.md#configuring-db-ido-mysql) or +[PostgreSQL](2-getting-started.md#configuring-db-ido-postgresql). + ### Configuring DB IDO MySQL #### Installing MySQL database server @@ -524,6 +527,9 @@ FreeBSD: # service icinga2 restart + +Continue with the [webserver setup](2-getting-started.md#icinga2-user-interface-webserver). + ### Configuring DB IDO PostgreSQL #### Installing PostgreSQL database server @@ -656,6 +662,8 @@ RHEL/CentOS 7 and Fedora: # systemctl restart icinga2 +Continue with the [webserver setup](2-getting-started.md#icinga2-user-interface-webserver). + ### Webserver Debian/Ubuntu: @@ -708,16 +716,29 @@ FreeBSD: Please consult the [FreeBSD Handbook](https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls.html) how to configure one of FreeBSD's firewalls. -### Setting Up External Command Pipe +### Setting Up Icinga 2 REST API + +Icinga Web 2 and other web interfaces require the [REST API](12-icinga2-api.md#icinga2-api-setup) +to send actions (reschedule check, etc.) and query object details. -Web interfaces and other Icinga addons are able to send commands to -Icinga 2 through the external command pipe. +You can run the CLI command `icinga2 api setup` to enable the +`api` [feature](11-cli-commands.md#enable-features) and set up +certificates as well as a new API user `root` with an auto-generated password in the +`/etc/icinga2/conf.d/api-users.conf` configuration file: -You can enable the External Command Pipe using the CLI: + # icinga2 api setup - # icinga2 feature enable command +Edit the `api-users.conf` file and add a new ApiUser object. Specify the [permissions](12-icinga2-api.md#icinga2-api-permissions) +attribute with minimal permissions required by Icinga Web 2. -After that you will have to restart Icinga 2: + # vim /etc/icinga2/conf.d/api-users.conf + + object ApiUser "icingaweb2" { + password = "Wijsn8Z9eRs5E25d" + permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ] + } + +Make sure to restart Icinga 2 to activate the configuration. Debian/Ubuntu, RHEL/CentOS 6 and SUSE: @@ -731,37 +752,13 @@ FreeBSD: # service icinga2 restart -By default the command pipe file is owned by the group `icingacmd` with -read/write permissions. Add your webserver's user to the group `icingacmd` to -enable sending commands to Icinga 2 through your web interface: - - # usermod -a -G icingacmd www-data - -FreeBSD: -On FreeBSD the rw directory is owned by the group `www`. You do not need to add the -user `icinga` to the group `www`. - -Debian packages use `nagios` as the default user and group name. Therefore -change `icingacmd` to `nagios`. - -The webserver's user is different between distributions so you might have to -change `www-data` to `wwwrun`, `www`, or `apache`. - -Change `www-data` to the user you're using to run queries. - -You can verify that the user has been successfully added to the `icingacmd` -group using the `id` command: - - $ id - -![id command on CentOS 7](images/getting-started/id-apache-centos7.png "Confirm that the webserver's user -(here: `apache` on a CentOS 7 system) is a member of the group `icingacmd`.") - ### Installing Icinga Web 2 Please consult the [installation documentation](https://github.com/Icinga/icingaweb2/blob/master/doc/02-Installation.md) for further instructions on how to install Icinga Web 2. +The Icinga 2 API can be defined as [command transport](https://github.com/Icinga/icingaweb2/blob/master/modules/monitoring/doc/commandtransports.md) +in Icinga Web 2 >= 2.4. ## Addons diff --git a/doc/images/getting-started/id-apache-centos7.png b/doc/images/getting-started/id-apache-centos7.png deleted file mode 100644 index 4f93a1aca427382d79a685ba2a70b4ad440db007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21899 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 -- 2.40.0