ansible when comparing integer values
This role attempts to get cpu temperatures from raspberry pi computers (host1 only in this case), check whether docker container boinc_universeathome is running, and then if the container is running and the cpu temp > highThresholdTrigger then it should pause the container.
If i run this without the when clauses in the role, then correctly it always pauses the container.
Why does it not work when the when clauses are present ever? i expect that with the when clauses present, it should only pause the container when the condition is met. But the condition is never met.
Presumably this is because there is something wrong with the way i am writing the when clauses but i dont know what it wrong?
(I know i'm using shell here and not a docker module)
My hosts:
[monitorrpihosts]
host1
[monitorrpihosts:vars]
ansible_connection=ssh
ansible_ssh_user=someusername
highThresholdTrigger=70
highThresholdReset=40
My playbook:
---
- name: Monitor rpi
hosts: monitorrpihosts
become: yes
become_user: root
become_method: sudo
roles:
- monitorrpi
My role:
---
- name: Get current cpu temp
shell: '/opt/vc/bin/vcgencmd measure_temp | grep ^temp= | cut -d= -f2 | cut -d. -f1'
register: cpu_temp
- name: check if boinc is running
shell: 'docker ps | grep boinc_universeathome | grep -v Paused'
ignore_errors: True
register: boinc_running
- name: pause boinc if cpu temp gt highThreshold
shell: 'docker pause boinc_universeathome'
when:
- cpu_temp.stdout_lines|int > highThresholdTrigger|int
- boinc_running.rc|int == 0
ansible
add a comment |
This role attempts to get cpu temperatures from raspberry pi computers (host1 only in this case), check whether docker container boinc_universeathome is running, and then if the container is running and the cpu temp > highThresholdTrigger then it should pause the container.
If i run this without the when clauses in the role, then correctly it always pauses the container.
Why does it not work when the when clauses are present ever? i expect that with the when clauses present, it should only pause the container when the condition is met. But the condition is never met.
Presumably this is because there is something wrong with the way i am writing the when clauses but i dont know what it wrong?
(I know i'm using shell here and not a docker module)
My hosts:
[monitorrpihosts]
host1
[monitorrpihosts:vars]
ansible_connection=ssh
ansible_ssh_user=someusername
highThresholdTrigger=70
highThresholdReset=40
My playbook:
---
- name: Monitor rpi
hosts: monitorrpihosts
become: yes
become_user: root
become_method: sudo
roles:
- monitorrpi
My role:
---
- name: Get current cpu temp
shell: '/opt/vc/bin/vcgencmd measure_temp | grep ^temp= | cut -d= -f2 | cut -d. -f1'
register: cpu_temp
- name: check if boinc is running
shell: 'docker ps | grep boinc_universeathome | grep -v Paused'
ignore_errors: True
register: boinc_running
- name: pause boinc if cpu temp gt highThreshold
shell: 'docker pause boinc_universeathome'
when:
- cpu_temp.stdout_lines|int > highThresholdTrigger|int
- boinc_running.rc|int == 0
ansible
add a comment |
This role attempts to get cpu temperatures from raspberry pi computers (host1 only in this case), check whether docker container boinc_universeathome is running, and then if the container is running and the cpu temp > highThresholdTrigger then it should pause the container.
If i run this without the when clauses in the role, then correctly it always pauses the container.
Why does it not work when the when clauses are present ever? i expect that with the when clauses present, it should only pause the container when the condition is met. But the condition is never met.
Presumably this is because there is something wrong with the way i am writing the when clauses but i dont know what it wrong?
(I know i'm using shell here and not a docker module)
My hosts:
[monitorrpihosts]
host1
[monitorrpihosts:vars]
ansible_connection=ssh
ansible_ssh_user=someusername
highThresholdTrigger=70
highThresholdReset=40
My playbook:
---
- name: Monitor rpi
hosts: monitorrpihosts
become: yes
become_user: root
become_method: sudo
roles:
- monitorrpi
My role:
---
- name: Get current cpu temp
shell: '/opt/vc/bin/vcgencmd measure_temp | grep ^temp= | cut -d= -f2 | cut -d. -f1'
register: cpu_temp
- name: check if boinc is running
shell: 'docker ps | grep boinc_universeathome | grep -v Paused'
ignore_errors: True
register: boinc_running
- name: pause boinc if cpu temp gt highThreshold
shell: 'docker pause boinc_universeathome'
when:
- cpu_temp.stdout_lines|int > highThresholdTrigger|int
- boinc_running.rc|int == 0
ansible
This role attempts to get cpu temperatures from raspberry pi computers (host1 only in this case), check whether docker container boinc_universeathome is running, and then if the container is running and the cpu temp > highThresholdTrigger then it should pause the container.
If i run this without the when clauses in the role, then correctly it always pauses the container.
Why does it not work when the when clauses are present ever? i expect that with the when clauses present, it should only pause the container when the condition is met. But the condition is never met.
Presumably this is because there is something wrong with the way i am writing the when clauses but i dont know what it wrong?
(I know i'm using shell here and not a docker module)
My hosts:
[monitorrpihosts]
host1
[monitorrpihosts:vars]
ansible_connection=ssh
ansible_ssh_user=someusername
highThresholdTrigger=70
highThresholdReset=40
My playbook:
---
- name: Monitor rpi
hosts: monitorrpihosts
become: yes
become_user: root
become_method: sudo
roles:
- monitorrpi
My role:
---
- name: Get current cpu temp
shell: '/opt/vc/bin/vcgencmd measure_temp | grep ^temp= | cut -d= -f2 | cut -d. -f1'
register: cpu_temp
- name: check if boinc is running
shell: 'docker ps | grep boinc_universeathome | grep -v Paused'
ignore_errors: True
register: boinc_running
- name: pause boinc if cpu temp gt highThreshold
shell: 'docker pause boinc_universeathome'
when:
- cpu_temp.stdout_lines|int > highThresholdTrigger|int
- boinc_running.rc|int == 0
ansible
ansible
asked Nov 13 '18 at 15:28
skymooseskymoose
185
185
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
cpu_temp.stdout_lines
is a list of lines. Try with cpu_temp.stdout|int
.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53284308%2fansible-when-comparing-integer-values%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
cpu_temp.stdout_lines
is a list of lines. Try with cpu_temp.stdout|int
.
add a comment |
cpu_temp.stdout_lines
is a list of lines. Try with cpu_temp.stdout|int
.
add a comment |
cpu_temp.stdout_lines
is a list of lines. Try with cpu_temp.stdout|int
.
cpu_temp.stdout_lines
is a list of lines. Try with cpu_temp.stdout|int
.
answered Nov 13 '18 at 16:21
Konstantin SuvorovKonstantin Suvorov
36.3k44182
36.3k44182
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53284308%2fansible-when-comparing-integer-values%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown