Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,29 @@ ansible-galaxy install Datadog.datadog
| `datadog_additional_groups` | Comma separated list of additional groups for the `datadog_user`. Linux only. |
| `datadog_windows_ddagentuser_name` | Name of windows user to create/use, in the format `<domain>\<user>`. Windows only. |
| `datadog_windows_ddagentuser_password` | Password to use to create the user, and/or register the service. Windows only. |
## datadog_agent_version variable

Starting with version 3 of this role, when the `datadog_agent_version` variable is used to pin a specific Agent version, the role will derive per-OS version names to comply with the version naming schemes of the operating systems we support (eg. `1:7.16.0-1` for Debian- and SUSE- based, `7.16.0-1` for Redhat-based and `7.16.0` for Windows).

This makes it possible to target hosts running different operating systems in the same Ansible run.

For instance, you can now provide:

```yaml
datadog_agent_version: 7.16.0
```

and the role will install `1:7.16.0-1` on Debian- and SUSE-based systems, `7.16.0-1` on Redhat-based systems, and `7.16.0` on Windows
(if not provided, the role uses `1` as the epoch, and `1` as the release number).

Alternatively, you can provide:

```yaml
datadog_agent_version: 1:7.16.0-1
```

and the role will install `1:7.16.0-1` on Debian- and SUSE-based systems, `7.16.0-1` on Redhat-based systems, and `7.16.0` on Windows.


## Agent 5 (older version)

Expand Down
4 changes: 4 additions & 0 deletions tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
---
- include_tasks: parse-version.yml
when: datadog_agent_version | length > 0
run_once: true

- include_tasks: pkg-debian.yml
when: ansible_os_family == "Debian"

Expand Down
32 changes: 32 additions & 0 deletions tasks/parse-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
- name: Parse Agent version
set_fact:
agent_version: "{{ datadog_agent_version | regex_search(regexp, '\\g<epoch>', '\\g<major>', '\\g<minor>', '\\g<bugfix>', '\\g<suffix>', '\\g<release>') }}"
vars:
regexp: '(?:(?P<epoch>[0-9]+):)?(?P<major>[0-9]+)\.(?P<minor>[0-9]+)\.(?P<bugfix>[0-9]+)(?P<suffix>[^-\s]+)?(?:-(?P<release>[0-9]+))?'

- name: Set version vars
set_fact:
datadog_epoch: "{{ agent_version.0 }}"
datadog_major: "{{ agent_version.1 }}"
datadog_minor: "{{ agent_version.2 }}"
datadog_bugfix: "{{ agent_version.3 }}"
datadog_suffix: "{{ agent_version.4 }}"
datadog_release: "{{ agent_version.5 }}"

- name: Fill empty version epoch with default
set_fact:
datadog_epoch: "1"
when: datadog_epoch | length == 0

- name: Fill empty version release with default
set_fact:
datadog_release: "1"
when: datadog_release | length == 0

- name: Set OS-specific versions
set_fact:
datadog_agent_debian_version: "{{ datadog_epoch }}:{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}-{{ datadog_release }}"
datadog_agent_redhat_version: "{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}-{{ datadog_release }}"
datadog_agent_suse_version: "{{ datadog_epoch }}:{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}-{{ datadog_release }}"
datadog_agent_windows_version: "{{ datadog_major }}.{{ datadog_minor }}.{{ datadog_bugfix }}{{ datadog_suffix }}"
6 changes: 3 additions & 3 deletions tasks/pkg-debian.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,17 @@

- name: Ensure pinned version of Datadog agent is installed
apt:
name: "datadog-agent={{ datadog_agent_version }}"
name: "datadog-agent={{ datadog_agent_debian_version }}"
state: present
force: "{{ datadog_agent_allow_downgrade }}"
update_cache: yes
cache_valid_time: "{{ datadog_apt_cache_valid_time }}"
when: (datadog_agent_version | length != 0) and (not ansible_check_mode)
when: (datadog_agent_debian_version is defined) and (not ansible_check_mode)

- name: Ensure Datadog agent is installed
apt:
name: datadog-agent
state: latest # noqa 403
update_cache: yes
cache_valid_time: "{{ datadog_apt_cache_valid_time }}"
when: (datadog_agent_version | length == 0) and (not ansible_check_mode)
when: (datadog_agent_debian_version is not defined) and (not ansible_check_mode)
6 changes: 3 additions & 3 deletions tasks/pkg-redhat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@

- name: Install pinned datadog-agent package
yum:
name: "datadog-agent-{{ datadog_agent_version }}"
name: "datadog-agent-{{ datadog_agent_redhat_version }}"
state: present
allow_downgrade: "{{ datadog_agent_allow_downgrade }}"
when: (datadog_agent_version | length != 0) and (not ansible_check_mode)
when: (datadog_agent_redhat_version is defined) and (not ansible_check_mode)
notify: restart datadog-agent

- name: Install latest datadog-agent package
yum:
name: datadog-agent
update_cache: yes
state: latest # noqa 403
when: (datadog_agent_version | length == 0) and (not ansible_check_mode)
when: (datadog_agent_redhat_version is not defined) and (not ansible_check_mode)
6 changes: 3 additions & 3 deletions tasks/pkg-suse.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,15 @@

- name: Install pinned datadog-agent package
zypper:
name: "datadog-agent={{ datadog_agent_version }}"
name: "datadog-agent={{ datadog_agent_suse_version }}"
state: present
oldpackage: "{{ datadog_agent_allow_downgrade }}"
when: (datadog_agent_version | length != 0) and (not ansible_check_mode)
when: (datadog_agent_suse_version is defined) and (not ansible_check_mode)
notify: restart datadog-agent

- name: Install latest datadog-agent package
zypper:
name: datadog-agent
state: latest # noqa 403
when: (datadog_agent_version | length == 0) and (not ansible_check_mode)
when: (datadog_agent_suse_version is not defined) and (not ansible_check_mode)
notify: restart datadog-agent
4 changes: 2 additions & 2 deletions tasks/pkg-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
&$env:temp\fix_6_14.ps1

- include_tasks: win_agent_6_latest.yml
when: not datadog_agent5 and (datadog_agent_version | length == 0)
when: datadog_agent_windows_version is not defined

- include_tasks: win_agent_version.yml
when: not datadog_agent_version | length == 0
when: datadog_agent_windows_version is defined

- name: show URL var
debug:
Expand Down
2 changes: 1 addition & 1 deletion tasks/win_agent_version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@

- name: set agent download filename to a specific version
set_fact:
dd_download_url: "{{ datadog_windows_versioned_url }}-{{ datadog_agent_version }}.msi"
dd_download_url: "{{ datadog_windows_versioned_url }}-{{ datadog_agent_windows_version }}.msi"