MON-459 update main readme to integrate terraform 0.12
This commit is contained in:
parent
f1dfb37854
commit
0435f0168d
106
README.md
106
README.md
@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
This repository is used to store all our monitors templates ready to use for generic purpose.
|
This repository is used to store all our monitors templates ready to use for generic purpose.
|
||||||
|
|
||||||
|
## How to contribute ? ##
|
||||||
### How to contribute ? ###
|
|
||||||
|
|
||||||
First, you may refresh your knowledge and look at the [terminology](https://confluence.fr.clara.net/display/DAT/Getting+started).
|
First, you may refresh your knowledge and look at the [terminology](https://confluence.fr.clara.net/display/DAT/Getting+started).
|
||||||
|
|
||||||
@ -13,7 +12,7 @@ If you would like to resolve an issue or implement new monitors you must follow
|
|||||||
|
|
||||||
After any change you should run `./scripts/auto_update.sh ./` command to make sure all is up to date else the CI pipeline will fail on the branch.
|
After any change you should run `./scripts/auto_update.sh ./` command to make sure all is up to date else the CI pipeline will fail on the branch.
|
||||||
|
|
||||||
### Important notes ###
|
## Important notes ##
|
||||||
|
|
||||||
* This repository represents a terraform feature and each first level directory could be imported as a terraform module, you must choose the one(s) you need.
|
* This repository represents a terraform feature and each first level directory could be imported as a terraform module, you must choose the one(s) you need.
|
||||||
* Each of these modules contains the most commons monitors, but they probably do not fulfill all your customer needs
|
* Each of these modules contains the most commons monitors, but they probably do not fulfill all your customer needs
|
||||||
@ -21,54 +20,107 @@ After any change you should run `./scripts/auto_update.sh ./` command to make su
|
|||||||
* You will find a complete `README.md` on each module, explaining how to use it.
|
* You will find a complete `README.md` on each module, explaining how to use it.
|
||||||
* The `alerting-message` module could be used to easily generate a templating message to use by default but it could be used also multiple times to generate messages for specific monitors.
|
* The `alerting-message` module could be used to easily generate a templating message to use by default but it could be used also multiple times to generate messages for specific monitors.
|
||||||
|
|
||||||
### The DataDog provider ###
|
## Getting started ##
|
||||||
|
|
||||||
Before importing some modules, you must define the DataDog provider in your `main.tf`
|
### Terraform ###
|
||||||
|
|
||||||
|
Version >= 0.12 is required to use these modules of monitors.
|
||||||
|
|
||||||
|
```
|
||||||
|
terraform {
|
||||||
|
required_version = "~> 0.12"
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### DataDog provider ###
|
||||||
|
|
||||||
|
Here is the last tester terraform provider version for datadog but next versions should work too.
|
||||||
|
|
||||||
```
|
```
|
||||||
provider "datadog" {
|
provider "datadog" {
|
||||||
version = "2.0.2"
|
version = "2.0.2" # last tested working version
|
||||||
|
|
||||||
api_key = "${var.datadog_api_key}"
|
api_key = var.datadog_api_key
|
||||||
app_key = "${var.datadog_app_key}"
|
app_key = var.datadog_app_key
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Both of the `datadog_api_key` and `datadog_app_key` are unique to the client.
|
Both of the `datadog_api_key` and `datadog_app_key` are unique to the each datadog account. You can define them in `terraform.tfvars` file:
|
||||||
|
|
||||||
### Module declaration example ###
|
|
||||||
|
|
||||||
A quick example of using a set of monitors for a given terraform module:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
variable "oncall_24x7" {
|
datadog_api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||||
default = "@pagerduty-Public_Cloud_FR_-_Yoda_-_Unibail_HNO"
|
datadog_app_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Variables ###
|
||||||
|
|
||||||
|
Some variables need to be declared.
|
||||||
|
|
||||||
|
```
|
||||||
|
variable "environment" {
|
||||||
|
type = string
|
||||||
|
default = "dev"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "oncall_office_hours" {
|
variable "datadog_api_key" {
|
||||||
default = "@pagerduty-Public_Cloud_FR_-_Yoda_-_Unibail_HO"
|
type = string
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "oncall_nodata" {
|
variable "datadog_app_key" {
|
||||||
default = "@pagerduty-Public_Cloud_FR_-_Yoda_-_Unibail_HNO"
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Modules declaration example ##
|
||||||
|
|
||||||
|
A quick example of alerting message module declaration:
|
||||||
|
|
||||||
|
```
|
||||||
|
locals {
|
||||||
|
oncall_24x7 = "@pagerduty-MyPagerService_NBH"
|
||||||
|
oncall_office_hours = "@pagerduty-MyPagerService_BH"
|
||||||
}
|
}
|
||||||
|
|
||||||
module "datadog-message-alerting" {
|
module "datadog-message-alerting" {
|
||||||
source = "git::ssh://git@bitbucket.org/morea/terraform.feature.datadog.git//common/alerting-message"
|
source = "git::ssh://git@git.fr.clara.net/claranet/pt-monitoring/projects/datadog/terraform/monitors.git//common/alerting-message?ref={RELEASE}"
|
||||||
|
|
||||||
message_alert = "${var.oncall_24x7}"
|
message_alert = local.oncall_24x7
|
||||||
message_warning = "${var.oncall_office_hours}"
|
message_warning = local.oncall_office_hours
|
||||||
message_nodata = "${var.oncall_nodata}"
|
message_nodata = local.oncall_24x7
|
||||||
}
|
}
|
||||||
|
|
||||||
module "datadog-monitors-my-monitors-set" {
|
module "datadog-message-alerting-bh-only" {
|
||||||
source = "git::ssh://git@bitbucket.org/morea/terraform.feature.datadog.git//my/monitors/set?ref={revision}"
|
source = "git::ssh://git@git.fr.clara.net/claranet/pt-monitoring/projects/datadog/terraform/monitors.git//common/alerting-message?ref={RELEASE}"
|
||||||
|
|
||||||
environment = "${var.environment}"
|
message_alert = local.oncall_office_hours
|
||||||
message = "${module.datadog-message-alerting.alerting-message}"
|
message_warning = local.oncall_office_hours
|
||||||
|
message_nodata = local.oncall_office_hours
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module "datadog-monitors-system-generic" {
|
||||||
|
source = "git::ssh://git@git.fr.clara.net/claranet/pt-monitoring/projects/datadog/terraform/monitors.git//system/generic?ref={RELEASE}"
|
||||||
|
|
||||||
|
environment = var.environment
|
||||||
|
message = module.datadog-message-alerting.alerting-message
|
||||||
|
|
||||||
|
memory_message = module.datadog-message-alerting-bh-only.alerting-message
|
||||||
|
# Use variables to customize monitors configuration
|
||||||
|
}
|
||||||
|
|
||||||
|
# Other monitors modules to declare ...
|
||||||
|
#module "datadog-monitors-my-monitors-set" {
|
||||||
|
# source = "git::ssh://git@git.fr.clara.net/claranet/pt-monitoring/projects/datadog/terraform/monitors.git//my/monitors/set?ref={RELEASE}"
|
||||||
|
#
|
||||||
|
# environment = var.environment
|
||||||
|
# message = module.datadog-message-alerting.alerting-message
|
||||||
|
#}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Replace `{revision}` to the last git tag available on this repository.
|
||||||
The `//` is very important, it's a terraform specific syntax used to separate git url and folder path.
|
The `//` is very important, it's a terraform specific syntax used to separate git url and folder path.
|
||||||
`my/monitors/set` represents the path to a monitors set sub directory listed below.
|
`my/monitors/set` represents the path to a monitors set sub directory listed below.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user